saveActivityAsString

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Bizagi desde aplicaciones externas > API de Bizagi para aplicaciones externas > Servicios web disponibles > Métodos Web de WorkflowEngineSOA >

saveActivityAsString

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.

 

 

note_pin

La descripción en este artículo aplica también para el método Web saveEntity, el cual está disponible en la edición Bizagi .NET.

Para el método saveEntity, el XML que se maneja en la solicitud (request) y en la respuesta (response) son del tipo XmlDocument (nativa de .NET).

Para el método saveEntityAsString la misma estructura de XMLs se maneja, sin embargo este parámetro es de tipo cadena (string).

 

 

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

Con el siguiente ejemplo, se guarda el progreso de la Actividad con Nombre= Task3, para el caso con identificador= 9301.

SaveActivity_Image002

 

 

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 email al usuario asignado informándole sobre la disponibilidad de la tarea.

SendAlarms: Indica si se debe enviar un email 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

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

SaveActivity_Image004

 

 

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

 

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