Cómo realizar Actividades Bizagi desde otras aplicaciones

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > ¿Cómo hacer? .... > Temas de integración >

Cómo realizar Actividades Bizagi desde otras aplicaciones

Introducción

Un requerimiento común en los proyectos Bizagi, es la posibilidad de realizar y avanzar una actividad de un caso en Bizagi, desde un portal o sistema externo.

 

En Bizagi, esta opción se presenta desde la Capa SOA de Bizagi y sus servicios web, para realizar (y avanzar) de manera externa una actividad pendiente de cualquier proceso de Bizagi.

 

Vea mayor información de esta funcionalidad  Invocar servicios Bizagi desde aplicaciones externas.

 

Lo que se debe hacer

Para completar actividades pendientes y avanzar el flujo de proceso en Bizagi desde otra aplicación todo lo que debe hacer es invocar el método web performActivityAsString, publicado en todos los proyectos de Bizagi.

 

Este método Web pertenece a los servicios Web WorkflowEngineSOA , que se publican de forma predeterminada en http://[su_servidor]/[su_proyecto]/WebServices/WorkflowEngineSOA.asmx?wsdl (para la Edición Enterprise. NET).

Para obtener información completa acerca de la dirección URL de acceso a estos servicios web (y para la edición Enterprise JEE), consulte la URL Capa SOA y consideraciones.

 

Al invocar los métodos Web performActivityAsString,o performActivity disponibles para Bizagi .NET, se enviará información estructurada  XML de entrada que contiene principalmente: el usuario que realiza la actividad, el elemento de trabajo específico para trabajar (la instancia actual de actividad pendiente para un caso dado), y cualquier información de negocio inicial que se considere pertinente (datos, adjuntos, etc).

 

Vea mayor información sobre la especificación del método web performActivityAsString.

 

Ejemplo

El siguiente ejemplo se lleva a cabo usando el proceso de Solicitud de Vacaciones de el Process Central.

 

 

PerformActivity_01VacationRequestProcess

 

Para este proceso avanzaremos la actividad Register Vacation Leave Request desde una aplicación externa.

 

Para incluir información de negocio o editar información existente en esta actividad, es importante estar familiarizado con el modelo de datos.

Queremos incluir la información en la primera actividad del proceso que corresponde a: Las fechas de inicio y fin de vacaciones y el número de días solicitados.

Esta información corresponde a los siguientes atributos de nuestro proceso llamado VacationRequest.

 

 

PerformActivity_03DataModel

 

 

Definir el XML de entrada

Es importante utilizar siempre los nombre exactos de los elementos, como se esperan en la estructura XML de Bizagi.

Por ejemplo el valos contenido en el tag <taskName>, debe ser el nombre de la Actividad y no utilizar el nombre para mostrar.

De la misma manera el tag debajo de <Entities> será el nombre del atributo en la Entidad de Aplicación (en este caso App) que referencia a la entidad de 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 espera la información de negocio en el modelo de datos Bizagi, refiérase a Esquemas del modelo de datos de Bizagi XML.

 

Para ver el nombre exacto de la actividad, vaya al primer paso en el Asistente de proceso (Modelar Procesos) y vea los detalles de la actividad dada.

 

PerformActivity_02RegisterVacationActivity

 

 

En nuestro ejemplo para avanzar la Actividad se envía la siguiente estrucutra XML como entrada:

 

<BizAgiWSParam>

 <ActivityData>

         <idCase>1001</idCase>

         <taskName>Register</taskName>

 </ActivityData>

 <Entities>

         <VacationRequest>

                 <RequestVacation>true</RequestVacation>

                 <LeavingDate>2010-06-21T12:00:00-05:00</LeavingDate>

                 <ReturningDate>2010-06-25T12:00:00-05:00</ReturningDate>

                 <NumberOfOfficeDaysReques>5</NumberOfOfficeDaysReques>

         </VacationRequest>

 </Entities>

</BizAgiWSParam>

 

 

Note que este XML completa la actividad para el proceso de Solicitud de Vacaciones, para la instancia que tenga el idCase 1001.

 

 

note_pin

El tag <Entities> es opcional. Usted puede escoger sólo avanzar la actividad sin enviar información.

Para hacerlo NO incluya en este tag ninguna información.

 

 

La aplicación externa

Usando en este ejemplo una Aplicación de Windows como la aplicación externa que avanza el caso de una Actividad pendiente.

E el ejemplo se ingresa la información de negocio necesaria y seguidamente mediante un botón se invoca el método web de la Capa SOA.

 

 

 

HowToPerformAnActivityUsingSOA_Image002

 

 

 

Dado que este ejemplo se trabaja con la Edición Enterprise .NET, podemos invocar el método performActivityAsString o performActivity.

 

Para este ejemplo trabajado en una aplicación .NET en Visual Studio, que se ha definido previamente una referencia Web que señala a nuestra dirección web createCases:

http://myServer/MyFirstProcess/webservices/WorkflowEngineSOA.asmx?wsdl

 

Una vez que se pulsa el botón, el caso avanza utilizando la Capa SOA de Bizagi. Dentro de la información de respuesta (output), recibiríamos un mensaje de error si falla la invocación junto con otra información adicional.

 

HowToPerformAnActivityUsingSOA_Image003

 

 

El código del clic del botón sería:

 

private void button2_Click(object sender, EventArgs e)

{

 try

 {

         string sStartingDate = XmlConvert.ToString(dateTimePicker1.Value, XmlDateTimeSerializationMode.Unspecified);

         string sSEndingDate = XmlConvert.ToString(dateTimePicker2.Value, XmlDateTimeSerializationMode.Unspecified);

 

         string sXml = "<BizAgiWSParam>";

         sXml += "<ActivityData>";

         sXml += "<idCase>" + textBox2.Text + "</idCase>";

         sXml += "<taskName>Task1</taskName>";

         sXml += "</ActivityData>";

         sXml += "<Entities>";

         sXml += "<VacationRequest>";

         sXml += "<VacationStartingDate>" + sStartingDate + "</VacationStartingDate>";

         sXml += "<VacationEndingDate>" + sSEndingDate + "</VacationEndingDate>";

         sXml += "<NumberOfOfficeDaysReques>" + textBox1.Text + "</NumberOfOfficeDaysReques>";

         sXml += "</VacationRequest>";

         sXml += "</Entities>";

         sXml += "</BizAgiWSParam>";

 

         XmlDocument xDoc = new XmlDocument();

         xDoc.LoadXml(sXml);

 

         MyFirstProcessWE.WorkflowEngineSOA ws = new MyFirstProcessWE.WorkflowEngineSOA();

         XmlNode xn = ws.performActivity(xDoc);

         if (xn.SelectSingleNode("processes/process/processError/errorCode") != null)

         {

                 label6.Text = "ERROR:" + xn.SelectSingleNode("processes/process/processError/errorMessage").InnerText;

         }

         else

         {

                 label6.Text = "SUCCESS";

         }

 }

 catch (Exception ex)

 {

         label6.Text = "ERROR: " + ex.Message;

 }

 finally

 {

         label6.Visible = true;

 }

}              

 

 

 

Verifying at the Work Portal

En nuestro Portal de Trabajo http://myServer/MyFirstProcess/, verificamos que el número de caso 502 se ha avanzado de su estado inicial (Register Vacation Request) al siguiente.

La siguiente actividad es Approve Vacation Request que mostrará la información enviada:

 

 

Execution_WorkPortal2