Ejecutar Evento

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Automatización de Procesos con poco código > Studio Cloud -ambiente de autoría > Bizagi Studio > Bizagi desde aplicaciones externas > API de Bizagi para aplicaciones externas > Servicios alternos SOAP > Servicios web SOAP disponibles > Métodos Web de WorkflowEngineSOA >

Ejecutar Evento

Introducción

Este método se utiliza para disparar y completar cualquier cantidad de Eventos disponibles en Bizagi (desde una aplicación externa).

Los Eventos de negocio en Bizagi se modelan a través de los elementos BPMN, en los cuales los Eventos de tipo Intermedios sin sub-tipo especial que se encuentren disponibles desde algún momento del flujo del Proceso podrán ser invocados.

 

IntermediateEvent_SOA

 

Este método recibe un único parámetro de entrada el cual contiene principalmente: el usuario quien realiza el Evento, la información de negocio relevante, el nombre o id del Evento y el número de caso.

A través de este método, se completa un Evento de la misma manera como se hace desde el Portal de Trabajo.

Para más información acerca de esta opción en el Portal, consulte Portal de Trabajo de Bizagi.

 

En el método setEvent, los XMLs de petición y de respuesta son de tipo XmlDocument nativo de .NET.

En el método setEventAsString se maneja la misma estructura XML pero los parámetros son enviados como un tipo cadena de texto por medio de CDATA.

 

Datos de entrada

 

Esquema de entrada

La estructura del XML que se envia a Bizagi debe ser cumplir con este XSD:

 

<?xml version="1.0" encoding="utf-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:element name="BizAgiWSParam">

  <xs:complexType>

    <xs:sequence>

      <xs:element name="domain" type="xs:string"/>

      <xs:element name="userName" type="xs:string"/>

      <xs:element name="Events">

        <xs:complexType>

          <xs:sequence>

            <xs:element name="Event" maxOccurs="unbounded">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="EventData">

                    <xs:complexType>

                      <xs:sequence>

                        <xs:choice>

                          <xs:element name="idCase" type="xs:integer" minOccurs="0"/>

                          <xs:element name="radNumber" type="xs:string" minOccurs="0"/>

                        </xs:choice>

                        <xs:choice>

                          <xs:element name="idTask" type="xs:integer" minOccurs="0"/>

                          <xs:element name="eventName" type="xs:string" minOccurs="0"/>

                        </xs:choice>

                      </xs:sequence>

                    </xs:complexType>

                  </xs:element>

                  <xs:element name="Entities">

                    <xs:complexType/>

                  </xs:element>

                </xs:sequence>

              </xs:complexType>

            </xs:element>

          </xs:sequence>

        </xs:complexType>

      </xs:element>

    </xs:sequence>

  </xs:complexType>

</xs:element>

</xs:schema>

 

Parámetros de entrada

BizAgiWSParam: Nodo raíz.

domain: Nombre del dominio del usuario Bizagi que será registrado como aquel que avanzó el Evento.

userName: Nombre del usuario registrado como aquel que avanzó el Evento.

Events: Contiene información de todos los Eventos.

Event: Contiene información de un Evento en particular.

EventData: Contiene la información necesaria para localizar el Evento.

idCase: Es el número de identificación del caso para el Evento que se desea avanzar. Es necesario que se incluya este elemento, o en su defecto el radNumber.

radNumber: alternativa al idCase. es el número de creación (número de caso) del caso que contiene el Evento pendiente que se desea avanzar. Cuando se usa el mismo número de creación para varios casos (como cuando un subproceso utiliza el número del caso padre) el idCase debe ser utilizado para distinguir a cual caso pertenece el evento.

idTask: Número de identificación del Event que se desea avanzar. Este elemento es necesario; Si no se conoce este número, se debe incluir el eventName.

eventName: Empleado como alternativa al identificador de la tarea (taskId), es el número del evento pendiente que se va a avanzar.

Entities: Es el nodo que contiene la información de negocio que se va a guardar en el caso.

Para más información sobre la estructura esperada de los elementos dentro de Entities, consulte cómo se representan el modelo de datos del Proceso en Esquema XML de Bizagi para el modelo de datos.

 

Ejemplo de entrada

Con el siguiente ejemplo, se completan Eventos para dos casos diferentes.

En este ejemplo, podemos ver que  el usuario domain\Raulp es quien dispara los Eventos.

El primer Evento se referencia por su nombre (Event2), y el segundo Evento se referencia por el id del elemento (idTask=145).

Nótese que la información de negocio está contenida dentro del elemento Entities, dado que esta información es opcional.

Sugerimos que use Cómo iniciar Procesos en Bizagi desde otras aplicaciones como una guía para invocar este servicio.

 

Entrada del método SetEvent

<BizAgiWSParam>
  <domain>domain</domain>
  <userName>Raulp</userName>
  <Events>
    <Event>
        <EventData>
          <radNumber>501</radNumber>
          <eventName>Task3</eventName>
        </EventData>
        <Entities></Entities>
    </Event>
    <Event>
        <EventData>
          <idCase>201</idCase>
          <idTask>145</idTask>
        </EventData>
        <Entities>
          <idApplicant>
              <BuroScore>5959</BuroScore>
          </idApplicant>
        </Entities>
    </Event>
  </Events>
</BizAgiWSParam>

 

Entrada del método SetEventAsString

<eventInfo>
  <![CDATA[<BizAgiWSParam>
    <domain>domain</domain>
    <userName>Raulp</userName>
    <Events>
        <Event>
          <EventData>
              <radNumber>501</radNumber>
              <eventName>Task3</eventName>
          </EventData>
          <Entities></Entities>
        </Event>
        <Event>
          <EventData>
              <idCase>201</idCase>
              <idTask>145</idTask>
          </EventData>
          <Entities>
              <idApplicant>
                <BuroScore>5959</BuroScore>
              </idApplicant>
          </Entities>
        </Event>
    </Events>
  </BizAgiWSParam>]]>
</eventInfo>

 

note_pin

Hay dos formas de usar llaves de negocio:

 

Usandolo como un atributo de un tag:

<Applicant businessKey="DocumentNumber = '123456'">

 

O usandolo cómo un tag individual:

<DocumentNumber>123456</DocumentNumber>

 

Tenga en cuenta que nunca puede usar ambos al mismo tiempo. Para obtener más información, consulte Uso de llaves de negocio en XML.

 

Usar etiquetas vacías

Bizagi admite el uso de etiquetas de atributo vacías, por ejemplo, del ejemplo anterior:

 

<BuroScore></BuroScore>

 

Usando el valor vacío, Bizagi no lo valida como llave de negocio. Esto significa que la ejecución del método no muestra ningún error relacionado con una llave de negocio.

 

Asignar como nulo un atributo

A través de este método usted puede darle un valor nulo a un atributo específico. Para hacer esto, debe dejar en verdadero el atributo "nil" dentro del atributo de la entidad que desea establecer en nulo:

 

<Entities>
<idApplicant>
  <BuroScore nil="true"></BuroScore>
</idApplicant>
</Entities>

 

note_pin

El anterior ejemplo no aplica para los atributos de tipo file o image.

 

Datos de salida

Esquema de salida

La estructura del XML que se retorna en Bizagi cumple con este XSD:

 

<?xml version="1.0" encoding="utf-8"?>

<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">

<xs:element name="processes">

  <xs:complexType>

    <xs:sequence>

      <xs:element name="process">

        <xs:complexType>

          <xs:sequence>

            <xs:element name="processId" type="xs:integer"/>

            <xs:element name="processRadNumber" type="xs:string"/>

            <xs:element name="savedMessage">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="Entities" type="xs:string"/>

                </xs:sequence>

              </xs:complexType>

            </xs:element>

            <xs:element name="processCreationDate" type="xs:dateTime"/>

            <xs:element name="processSolutionDate" type="xs:dateTime"/>

            <xs:element name="processWorkflowClass">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="workflowClassId" type="xs:integer"/>

                  <xs:element name="workflowClassName" type="xs:string"/>

                  <xs:element name="workflowClassDisplayName" type="xs:string"/>

                  <xs:element name="workflowClassDescription" type="xs:string"/>

                  <xs:element name="workflowClassHelpText" type="xs:string"/>

                  <xs:element name="workflowClassHelpURL" type="xs:string"/>

                  <xs:element name="workflowClassDisplayOrder" type="xs:integer"/>

                  <xs:element name="workflowClassCreationDate" type="xs:dateTime"/>

                  <xs:element name="workflowClassGlobalForm" type="xs:integer"/>

                  <xs:element name="workflowClassAllocationPrinciple" type="xs:string"/>

                  <xs:element name="workflowClassProcessType" type="xs:string"/>

                  <xs:element name="workflowClassDisplay" type="xs:boolean"/>

                  <xs:element name="workflowClassUseParentRadicationNumber" type="xs:boolean"/>

                  <xs:element name="workflowClassSupportsScopes" type="xs:boolean"/>

                </xs:sequence>

              </xs:complexType>

            </xs:element>

            <xs:element name="processError">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="errorCode"/>

                  <xs:element name="errorMessage">

                    <xs:complexType mixed="true">

                      <xs:sequence minOccurs="0">

                        <xs:element name="Entities">

                          <xs:complexType>

                            <xs:sequence>

                              <xs:element name="Path" type="xs:string"/>

                              <xs:element name="Atrib" type="xs:string"/>

                              <xs:element name="Value" type="xs:string"/>

                              <xs:element name="ErrorMessage" type="xs:string"/>

                            </xs:sequence>

                          </xs:complexType>

                        </xs:element>

                      </xs:sequence>

                    </xs:complexType>

                  </xs:element>

                </xs:sequence>

              </xs:complexType>

            </xs:element>

            <xs:element name="CurrentWorkItems">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="workItem">

                    <xs:complexType>

                      <xs:sequence>

                        <xs:element name="workItemId" type="xs:integer"/>

                        <xs:element name="workItemState" type="xs:string"/>

                        <xs:element name="workItemEntryDate" type="xs:dateTime"/>

                        <xs:element name="workItemDuration" type="xs:integer"/>

                        <xs:element name="workItemSubprocesses"/>

                        <xs:element name="workItemEstimatedSolutionDate" type="xs:dateTime"/>

                        <xs:element name="workItemSolutionDate" type="xs:dateTime"/>

                        <xs:element name="task">

                          <xs:complexType>

                            <xs:sequence>

                              <xs:element name="taskId" type="xs:integer"/>

                              <xs:element name="taskName" type="xs:string"/>

                              <xs:element name="taskDisplayName" type="xs:string"/>

                              <xs:element name="taskDescription" type="xs:string"/>

                              <xs:element name="taskHelpText" type="xs:string"/>

                              <xs:element name="taskEstimatedDuration" type="xs:integer"/>

                              <xs:element name="taskType" type="xs:string"/>

                              <xs:element name="taskCost" type="xs:integer"/>

                              <xs:element name="taskPriority" type="xs:string"/>

                              <xs:element name="taskTransactional" type="xs:boolean"/>

                              <xs:element name="taskCompensation" type="xs:boolean"/>

                              <xs:element name="taskTimerEventDuration" type="xs:integer"/>

                              <xs:element name="AllowsReassign" type="xs:boolean"/>

                              <xs:element name="SendNotification" type="xs:boolean"/>

                              <xs:element name="SendAlarms" type="xs:boolean"/>

                              <xs:element name="ExtendedEstimatedDuration" type="xs:integer"/>

                              <xs:element name="Form" type="xs:integer"/>

                              <xs:element name="IsAsynchTask" type="xs:boolean"/>

                              <xs:element name="NumberOfRetries" type="xs:integer"/>

                              <xs:element name="RetryInterval" type="xs:integer"/>

                              <xs:element name="ShowFeedback" type="xs:boolean"/>

                              <xs:element name="TimeoutSeconds" type="xs:integer"/>

                            </xs:sequence>

                          </xs:complexType>

                        </xs:element>

                      </xs:sequence>

                    </xs:complexType>

                  </xs:element>

                </xs:sequence>

              </xs:complexType>

            </xs:element>

          </xs:sequence>

        </xs:complexType>

      </xs:element>

    </xs:sequence>

  </xs:complexType>

</xs:element>

</xs:schema>

 

Parámetros de salida

processes: Nodo raíz, contiene información sobre los procesos a los cuales pertenecen los eventos.

process: Este elemento incluye información del proceso.

processId: Número de identificación del caso (idCase).

processRadNumber: Valor alfanumérico correspondiente al número de creación del caso.

savedMessage: Reservado para uso futuro.

Entities: Reservado para uso futuro.

processWorkflowClass: Toda la información en este nodo es información del proceso (metadata), no es información del caso en particular.

workflowClassId: Número de identificación (o llave) del proceso.

workflowClassName: Nombre del proceso.

workflowClassDisplayName: Nombre a mostrar del proceso.

workflowClassDescription: Descripción del proceso.

workflowClassHelpText: Texto de ayuda del proceso.

workflowClassHelpURL: URL de ayuda del proceso.

workflowClassDisplayOrder: Orden en el cual aparecen los procesos en Bizagi Studio.

workflowClassCreationDate: Fecha de creación del proceso.

workflowClassGlobalForm: Número de identificación de la forma global del proceso (cero si no se encuentra configurada).

workflowClassAllocationPrinciple: Reservado para uso futuro.

workflowClassProcessType: Tipo de proceso.

workflowClassDisplay: Indica si el proceso es visible o no.

workflowClassUseParentRadicationNumber: Indica si un caso del proceso utiliza su propio número de creación, o si es el mismo número que el del proceso padre (en caso de ser un subproceso).

processError: Si el proceso de guardar información en la actividad no fue exitoso, este elemento contendrá información del error.

errorCode: Código del error ocurrido. En caso de no haber error, este elemento estará vacío.

errorMessage: Mensaje del error ocurrido, En caso de no haber error, este elemento estará vacío.

Path: XPath del elemento que generó el error desde el XML de envío. Visible cuando el error es generado por información errada.

Attrib: Nombre del atributo en Bizagi donde se intentó almacenar la información que generó el error. Visible cuando el error es generado por información errada.

Value: Es el valor que causó el error. Visible cuando el error es causado por información errada.

ErrorMessage: Mensaje donde se describe por qué se ha presentado el error. Visible cuando el error es generado por información incorrecta.

CurrentWorkItems: Serie de actividades disponibles para el caso.

workItem: Actividad específica del proceso (instancia de una tarea) que se encuentra activa para el caso.

workItemId: Número de identificación o llave de la actividad.

workItemState: Estado en el cual se encuentra la actividad.

workItemEntryDate: Fecha y hora en la cual el caso llegó a esta actividad por primera vez.

workItemDuration: Duración estimada de la actividad, en minutos.

workItemEstimatedSolutionDate: Fecha estimada de solución del caso.

Task: Contiene información sobre la tarea que corresponde a la actividad.

taskId: Número de identificación o llave de la tarea.

taskName: Nombre de la tarea.

taskDisplayName: Nombre a mostrar de la tarea.

taskDescription: Texto descriptivo de la tarea.

taskHelpText: Texto de ayuda de la tarea.

taskEstimatedDuration: Duración estimada, en minutos, de la tarea.

taskType: Tipo de tarea.

taskCost: Costo estimado de la tarea. Este valor, así como las fechas estimadas, es configurado y determinado por las persona que diseña el proceso.

taskPriority: Prioridad de terminación de la tarea.

taskTransactional: Indica si la tarea es transaccional o no.

taskCompensation: Informa si es una tarea de compensación.

taskTimerEventDuration: Si es un temporizador, su duración estará en minutos.

AllowsReassign: Marca que muestra si la tarea puede ser reasignada a un usuario distinto.

SendNotification: Indica si se debe enviar un correo electrónico al usuario asignado informándole sobre la disponibilidad de la tarea.

SendAlarms: Indica si se debe enviar un correo electrónico al usuario asignado informándole que la tarea está próxima a vencerse.

ExtendedEstimatedDuration: Tiempo de duración extendida estimado.

Form: Reservado para uso futuro.

IsAsynchTask: Especifica si se trata o no de una tarea asincrónica. Utilizado normalmente para interfaces.

NumberOfRetries: Aplica para tareas asincrónicas. Número automático de reintentos para la tarea en case de fallar (se arroja una excepción).

RetryInterval: Aplica para tareas asincrónicas. Tiempo (en minutos) entre cada reintento.

ShowFeedback: Aplica para tareas asincrónicas. Indica si el usuario será informado cuando se presente un error.

TimeoutSeconds: Aplica para tareas asincrónicas. Tiempo (en segundos) que la tarea asincrónica esperará por una respuesta del sistema externo.

 

Ejemplo de salida

 

Salida del método SetEvent

Con el siguiente ejemplo, se ilustra la respuesta que retorna la invocación exitosa de este método en Bizagi;

 

SetEvent_Image004

Salida del método SetEventAsString

El siguiente ejemplo muestra cómo se ven los mensajes de error:

 

setEventAsString_01

 

Métodos Web relacionados

Si desea ejecutar una Actividad pendiente en cambio de un Evento, use los métodos performActivityAsString o performActivity.

Para más información sobre esta opción, consulte Realizar Actividad.

 

Para obtener un listado de los Eventos disponibles para un caso determinado, use los métodos getEventsAsString o getEvents.

Para más información sobre esta opción, consulte Obtener Eventos.


Last Updated 1/28/2022 4:01:59 PM