Guardar Actividad

<< 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 >

Guardar Actividad

Introducción

Este método se utiliza para guardar el progreso de una Actividad pendiente (aquellas Actividades en el Inbox), desde una aplicación externa.

A través de este método, la Actividad no avanza (no es completada con Siguiente), como sucede con el método performActivityAsString. A su vez, este método funciona al igual que cuando se da clic en Guardar en una Actividad (lo cual lo hace útil para ejecutar las reglas de negocio que se realizan al guardar).

 

Este método recibe un único parámetro de entrada el cual contiene principalmente: el usuario el cual guarda el progreso de la Actividad, la información de negocio de la Actividad (datos, adjuntos, etc), el identificador del caso y el nombre de la Actividad.

Con ello, se guarda lo que se ha diligenciado de la Actividad,,de la misma manera como se realiza 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 saveActivity, los XMLs de petición y de respuesta son de tipo XmlDocument nativo de .NET.

En el método saveActivityAsString 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="ActivityData">

         <xs:complexType>

           <xs:choice>

             <xs:sequence>

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

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

             </xs:sequence>

             <xs:sequence>

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

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

             </xs:sequence>

           </xs:choice>

         </xs:complexType>

       </xs:element>

       <xs:element name="Entities">

         <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 de Bizagi que se va a registrar como el usuario que guardó la información en la actividad.

userName: Nombre del usuario que se va a registrar como el usuario que guardó la información en la actividad.

ActivityData: Contiene toda la información necesaria para encontrar la actividad.

radNumber: Número de creación (número del caso) del caso que contiene la actividad pendiente en la cual se almacenará la información. Este elemento es requerido.

taskName: Nombre de la actividad pendiente en la cual se almacenará la información.

Entities: Nodo que contiene los valores de 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 guarda el progreso de la Actividad con Nombre= Task3, para el caso con identificador= 9301.

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

 

Entrada del método SaveActivity

<BizAgiWSParam>

 <domain>domain</domain>

 <userName>Raulp</userName>

 <ActivityData>

   <radNumber>9301</radNumber>

   <taskName>Task3</taskName>

 </ActivityData>

 <Entities>

   <idRequest>

       <Applicants>

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

             <BuroScore>180</BuroScore>

         </Applicant>

       </Applicants>

   </idRequest>

 </Entities>

</BizAgiWSParam>

 

Entrada del método SaveActivityAsString

<activityInfo>
  <![CDATA[<BizAgiWSParam>
    <domain>domain</domain>
    <userName>Raulp</userName>
    <ActivityData>
        <radNumber>9301</radNumber>
        <taskName>Task3</taskName>
    </ActivityData>
    <Entities>
        <idRequest>
          <Applicants>
              <Applicant businessKey="DocumentNumber = '123456'">
                <BuroScore>180</BuroScore>
              </Applicant>
          </Applicants>
        </idRequest>
    </Entities>
  </BizAgiWSParam>]]>
</activityInfo>

 

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>
<idRequest>
    <Applicants>
      <Applicant businessKey="DocumentNumber = '123456'">
          <DocumentNumber>123456</DocumentNumber>
          <BuroScore nil="true"></BuroScore>
      </Applicant>
    </Applicants>
</idRequest>
</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="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:schema>

 

Parámetros de salida

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.

processCreationDate: Fecha de creación del caso.

processSolutionDate: Fecha de solución (cierre) del caso.

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).

workflowClassSupportScopes: Indica si el proceso soporta los "scopes" de Bizagi, los cuales constituyen un método eficiente de persistencia de datos.

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 SaveActivity

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

 

SaveActivity_Image004

 

Salida del método SaveActivityAsString

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

 

saveActivityAsString_01

 

Métodos Web relacionados

Para obtener un listado de Actividades pendientes para un caso determindao, use los métodos getActivitiesAsString o getActivities.

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

 

Si desea completar la Actividad pendiente (de manera similar a este método pero en vez de guardar temporalmente un progreso), use los métodos performActivityAsString o performActivity.

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


Last Updated 1/28/2022 4:02:05 PM