Como Crear un Caso Usando SOA
De
<keywords content="keywords"> soa, nuevo caso, crear caso </keywords>
Contenido |
Cómo iniciar un proceso de Bizagi desde una aplicación externa
Introducción
Un requerimiento común en los proyectos Bizagi, es la posibilidad de iniciar procesos de Bizagi desde un portal o sistema externo, por ejemplo desde SharePoint, un correo electrónico, o desde un aplicación desarrollada de manera personalizada.
En Bizagi, esta opción se presenta desde la Capa SOA de Bizagi y sus servicios web, para crear de manera automática uno o más casos de cualquier proceso de Bizagi.
Esto se logra invocando el método web createCases (o createCasesAsString) del servicio web "WorkflowEngineSOA", publicado en todos los proyectos de Bizagi.
Los métodos createCases y createCasesAsString tienen la misma funcionalidad; su única diferencia es que el createCases recibe un parámetro de tipo "XML document", mientras que el createCasesAsString recibe una cadena (String), que a su vez tiene la información en formato de XML.
Vea mayor información sobre la especificación del método web "createCases" y "createCasesAsString" (sus entradas y salidas).
Ejemplo
El siguiente ejemplo se lleva a cabo usando el proceso de Solicitud de Vacaciones de Mi primer Proceso. La documentación aplica para la última versión de Bizagi. No está disponible para versiones 9.1.x.
En este proceso, la primera actividad llamada "Registrar Solicitud de Vacaciones", tiene la siguiente forma:
Los casos se crearían incluyendo la información necesaria para esta actividad. Para poder hacer esto, es importante estar familiarizado con el modelo de datos. Este proceso tiene un modelo de datos simple y todos los datos de la primera actividad estan en la entidad de proceso (VacationRequest).
XML de entrada
Para crear un nuevo caso para este proceso, el XML que necesita ser enviado a createCases es como el siguiente:
<BizAgiWSParam> <domain>domain</domain> <userName>admon</userName> <Cases> <Case> <Process>VacationRequest</Process> <Entities> <VacationRequest> <VacationStartingDate>2010-03-18T12:00:00-05:00</VacationStartingDate> <VacationEndingDate>2010-03-26T12:00:00-05:00</VacationEndingDate> <NumberOfOfficeDaysReques>6</NumberOfOfficeDaysReques> </VacationRequest> </Entities> </Case> </Cases> </BizAgiWSParam>
El XML anterior crea un caso para el proceso VacationRequest, y el creador sería el usuario admon.
Para crear más de un caso en una misma invocación, incluya un tag <Case> para cada caso necesario dentro del tag "Cases". El creador puede también ser cambiado pero tenga en cuenta que este debe ser un usuario que exista para el proyecto de Bizagi y que tenga permisos para iniciar un nuevo caso del proceso deseado.
Por ejemplo:
<BizAgiWSParam> <domain>mydomain</domain> <userName>cindyj</userName> <Cases> <Case> <Process>VacationRequest</Process> <Entities> <VacationRequest> <VacationStartingDate>2010-03-18T12:00:00-05:00</VacationStartingDate> <VacationEndingDate>2010-03-26T12:00:00-05:00</VacationEndingDate> <NumberOfOfficeDaysReques>6</NumberOfOfficeDaysReques> </VacationRequest> </Entities> </Case> <Case> <Process>VacationRequest</Process> <Entities> <VacationRequest> <VacationStartingDate>2010-07-19T12:00:00-05:00</VacationStartingDate> <VacationEndingDate>2010-07-23T12:00:00-05:00</VacationEndingDate> <NumberOfOfficeDaysReques>4</NumberOfOfficeDaysReques> </VacationRequest> </Entities> </Case> <Case> <Process>VacationRequest</Process> <Entities> <VacationRequest> <VacationStartingDate>2010-12-16T12:00:00-05:00</VacationStartingDate> <VacationEndingDate>2011-01-07T12:00:00-05:00</VacationEndingDate> <NumberOfOfficeDaysReques>17</NumberOfOfficeDaysReques> </VacationRequest> </Entities> </Case> </Cases> </BizAgiWSParam>
Nótese que para crear casos sin incluir información de negocio, no haría falta incluir el tag <Entities>:
<BizAgiWSParam> <domain>domain</domain> <userName>admon</userName> <Cases> <Case> <Process>VacationRequest</Process> </Case> </Cases> </BizAgiWSParam>
Modelo de datos Bizagi
Un aspecto importante es usar siempre el nombre correspondiente de los elementos (de acuerdo al modelo de datos involucrado en el proceso).
Por ejemplo, el valor del tag <Process> debe ser el nombre del proceso, no su nombre visual.
De igual modo el primer tag bajo <Entities> será el nombre del atributo de la Aplicación (en este caso App) que referencia a la entidad del proceso. Se debe usar siempre el nombre correspondiente del atributo, entidad, o colección y no el nombre visual, y tener en cuenta que los tags de la estructura XML son sensibles a mayúsculas (y minúsculas).
Para revisar cómo se estructura el esquema XML de la información de negocio de una entidad o modelo de datos de un proceso Bizagi, puede utilizar la opción de generar esquemas XML de Bizagi.
La aplicación externa
Usando en este ejemplo una Aplicación de Windows como la aplicación externa que dispara el caso nuevo (como se muestra en la siguiente imágen), se ingresa la información necesaria y seguidamente mediante un botón se invoca la creación de un nuevo caso de Solicitud de Vacaciones.
En este ejemplo, la URL de la aplicación de Bizagi es:
http://biz-cindyj/MyFirstProcess/
Una vez al botón se le hace clic, el caso es creado usando la capa SOA y en respuesta del servicio (datos de salida), se obtiene el número del caso y otra información adicional.
El caso creado desde una aplicación externa:
Para lograr esto, tomando como ejemplo un ambiente y proyecto en .Net, se debe crear una Referencia Web (para este ejemplo el nombre de la Referencia Web es MyFirstProcessWE) usando esta URL:
http://biz-cindyj/MyFirstProcess/webservices/WorkflowEngineSOA.asmx
El código del botón al hacer clic sería:
private void button1_Click(object sender, EventArgs e) { //Las fechas son convertidas a una cadena usando este comando para evitar problemas con los //distintos formatos de fecha string sStartingDate = XmlConvert.ToString(dateTimePicker1.Value, XmlDateTimeSerializationMode.Unspecified); string sSEndingDate = XmlConvert.ToString(dateTimePicker2.Value, XmlDateTimeSerializationMode.Unspecified); string sXml = "<BizAgiWSParam>"; sXml += "<domain>domain</domain>"; sXml += "<userName>admon</userName>"; sXml += "<Cases>"; sXml += "<Case>"; sXml += "<Process>VacationRequest</Process>"; sXml += "<Entities>"; sXml += "<VacationRequest>"; sXml += "<VacationStartingDate>" + sStartingDate + "</VacationStartingDate>"; sXml += "<VacationEndingDate>" + sSEndingDate + "</VacationEndingDate>"; sXml += "<NumberOfOfficeDaysReques>" + textBox1.Text + "</NumberOfOfficeDaysReques>"; sXml += "</VacationRequest>"; sXml += "</Entities>"; sXml += "</Case>"; sXml += "</Cases>"; sXml += "</BizAgiWSParam>"; XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(sXml); MyFirstProcessWE.WorkflowEngineSOA ws = new MyFirstProcessWE.WorkflowEngineSOA(); XmlNode xn = ws.createCases(xDoc); if (xn.SelectSingleNode("process/processId").InnerText != "0") { textBox2.Text = xn.SelectSingleNode("process/processRadNumber").InnerText; } }
Para revisar consideraciones especiales para la edición Bizagi Enterprise JEE, seguir la siguiente sección.
Consideraciones adicionales
Tenga en cuenta los temas enumerados en las Consideraciones y URL de la Capa SOA de Bizagi para asegurar la interoperabilidad de estos servicios entre las diferentes plataformas tecnológicas (.Net, JEE).
Artículos Relacionados
- Vea mayor detalle sobre el método web CreateCases y CreateCasesAsString (sus entradas y salidas).
- Vea información sobre la Capa SOA de Bizagi y sus servicios web.
- Consulte el esquema XML del modelo de datos con la opción de generar esquemas XML de Bizagi.
<comments />