Toda la información de producto en wiki.bizagi.com aplica para Bizagi BPM Suite 9.1.X.
Para las nuevas versiones de Bizagi BPM Suite (10.X y superior) visite la Guía de Usuario.
 

Como Realizar una Actividad Usando SOA

De

<keywords content="keywords"> soa, realizar actividad, ejecutar actividad, avanzar caso </keywords>


Contenido

Como Realizar una Actividad Usando SOA

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.

Esto se logra invocando el método web performActivity (o performActivityAsString) del servicio web "WorkflowEngineSOA", publicado en todos los proyectos de Bizagi.

Los métodos performActivity y performActivityAsString tienen la misma funcionalidad; su única diferencia es que el performActivity recibe un parámetro de tipo "XML document", mientras que el performActivityAsString 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 "performActivity" y "performActivityAsString" (sus entradas y salidas).


Ejemplo

En este ejemplo se mostrará como realizar la actividad Registar Solicitud de Vacaciones del proceso Solicitud de Vacaciones descrito en Mi primer Proceso. La documentación aplica para la última versión de Bizagi. No está disponible para versiones 9.1.x.



La forma de esta actividad es la siguiente:




La actividad se realizará incluyendo información de negocio (que normalmente se ingresaría en la forma).

Para esto, es importante conocer el modelo de datos del proceso en Bizagi.

Este proceso tiene un modelo de datos sencillo y todos los datos de la primera actividad están contenidos en la entidad de proceso SolicitudDeVacaciones.




XML de entrada

Para realizar la actividad Registar Solicitud de Vacaciones, el siguiente XML se envía al método performActivity:


<BizAgiWSParam>
   <ActivityData>
      <idCase>123</idCase>
      <taskName>Actividad1</taskName>
   </ActivityData>
   <Entities>
         <SolicitudDeVacaciones>
            <FechaDeSalida>2010-03-18T12:00:00-05:00</FechaDeSalida>
            <FechaDeRegreso>2010-03-26T12:00:00-05:00</FechaDeRegreso>
            <NumeroDeDiasLaboralesSol>6</NumeroDeDiasLaboralesSol>
         </SolicitudDeVacaciones>
   </Entities>
</BizAgiWSParam>


Observese que la etiqueta <taskName> contiene el nombre de la actividad, y no el nombre para mostrar.

El nombre de la actividad se consulta desde las Propiedades Globales de la tarea.



Con el XML de ejemplo anterior se realizará la actividad Registrar Solicitud de Vacaciones utilizando la información de negocio que se incluye en la etiqueta <Entities>.

El usuario responsable que realiza la tarea será el usuario 'admon'.

Para cambiar el realizador se deben incluir las etiquetas <domain> y <userName> después de la etiqueta <BizAgiWSParam>.

También es posible realizar la actividad sin enviar información de negocio alguna.

Por ejemplo:


<BizAgiWSParam>
   <domain>domain</domain>
   <userName>cindyj</userName>
   <ActivityData>
      <idCase>123</idCase>
      <taskName>Actividad1</taskName>
   </ActivityData>
</BizAgiWSParam>



Modelo de datos de Bizagi

Es importante utilizar siempre los nombre exactos de los elementos, así como se mostró para la etiqueta <taskName>, y no utilizar el nombre para mostrar.

Es por esto que la primera etiqueta 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 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 desde la cual se completa la actividad pendiente (como se muestra en la siguiente imagen), se ingresa la información de negocio necesaria y se hace clic en un botón para invocar el método que realiza la actividad Registrar Solicitud de Vacaciones.

En este ejemplo, se usa una aplicación Bizagi local con esta URL:

http://biz-cindyj/MyFirstProcess/



Una vez se hace clic en el botón, la actividad se realiza usando la Capa SOA y el mensaje de salida (la respuesta del método) contendrá junto con otra información, la información relacionada a la siguiente tarea.



La actividad es realizada por una aplicación externa, y el caso es avanzado por Bizagi y se encuentra ahora en la siguiente tarea de usuario.



Para realizar esto en un ambiente y proyecto de .Net, se debe crear una Referencia Web (para este ejemplo en nombre de la referencia es MyFirstProcessWE) usando esta URL:

http://biz-cindyj/MyFirstProcess/webservices/WorkflowEngineSOA.asmx

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>Actividad1</taskName>";
                sXml += "</ActivityData>";
                sXml += "<Entities>";
                sXml += "<SolicitudDeVacaciones>";
                sXml += "<FechaDeSalida>" + sStartingDate + "</FechaDeSalida>";
                sXml += "<FechaDeRegreso>" + sSEndingDate + "</FechaDeRegreso>";
                sXml += "<NumeroDeDiasLaboralesSol>" + textBox1.Text + "</NumeroDeDiasLaboralesSol>";
                sXml += "</SolicitudDeVacaciones>";
                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("process/processError/errorCode") != null)
                {
                    label6.Text = "ERROR:" + xn.SelectSingleNode("process/processError/errorMessage").InnerText;
                }
                else
                {
                    label6.Text = "SUCCESS";
                }
            }
            catch (Exception ex)
            {
                label6.Text = "ERROR: " + ex.Message;
            }
            finally
            {
                label6.Visible = true;
            }
        }



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


<comments />