Obtener Casos

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Bizagi desde aplicaciones externas > API de Bizagi para aplicaciones externas > Servicios alternos SOAP > Servicios web SOAP disponibles > Métodos Web de WorkflowEngineSOA >

Obtener Casos

Introducción

Este método web se utiliza para obtener casos pendientes en Bizagi (desde una aplicación externa).

Los casos pendientes en los procesos de Bizagi son aquellos casos asignados al usuario con actividades en estado pendiente (que se encuentran en la bandeja de entrada).

 

Este método recibe una sola entrada que tiene principalmente: detalle del proceso con filtros opcionales para obtener los casos que cumplen con los criterios de búsqueda.

 

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

En el método getCasesAsString se maneja la misma estructura XML pero los parámetros son enviados como un tipo cadena de texto 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 attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="BizAgiWSParam">

   <xs:complexType>

     <xs:sequence>

       <xs:element name="domain" minOccurs="0" maxOccurs="1" type="xs:string" />

       <xs:element name="userName" minOccurs="0" maxOccurs="1" type="xs:string" />

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

       <xs:element name="applicationName" minOccurs="0" maxOccurs="1" type="xs:string" />

       <xs:element name="categoryName" minOccurs="0" maxOccurs="1" type="xs:string" />

       <xs:element name="processName" minOccurs="0" maxOccurs="1" type="xs:string" />

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

       <xs:element name="subprocessDepth" minOccurs="0" maxOccurs="1" type="xs:integer" />

       <xs:element name="creationDate" minOccurs="0" maxOccurs="1">

         <xs:complexType>

           <xs:sequence>

             <xs:element name="From" minOccurs="0" maxOccurs="1" type="xs:dateTime" />

             <xs:element name="To" minOccurs="0" maxOccurs="1" type="xs:dateTime" />

           </xs:sequence>

         </xs:complexType>

       </xs:element>

       <xs:element name="expirationDate" minOccurs="0" maxOccurs="1">

         <xs:complexType>

           <xs:sequence>

             <xs:element name="From" minOccurs="0" maxOccurs="1" type="xs:dateTime" />

             <xs:element name="To" minOccurs="0" maxOccurs="1" type="xs:dateTime" />

           </xs:sequence>

         </xs:complexType>

       </xs:element>

     </xs:sequence>

   </xs:complexType>

 </xs:element>

</xs:schema>

 

Parámetros de entrada

BizAgiWSParam: Nodo raíz. Aquí se incluyen todos los filtros posibles. Estos filtros son opcionales. Si se utiliza más de un criterio, el resultado debería traer únicamente los casos que cumplen con todas las condiciones.

domain: Busca los casos cuyo usuario asignado pertenezca a este dominio.

userName: Busca los casos cuyo usuario asignado sea el indicado en este elemento.

radNumber: casos que pertenezcan a este número de creación (número de caso).

applicationName: casos que pertenezcan a esta aplicación (ingrese el nombre y no el nombre a mostrar).

categoryName: Todos los casos abiertos de esta categoría (ingrese el nombre y no el nombre a mostrar).

processName: Obtiene los casos de este proceso (ingrese el nombre y no el nombre a mostrar).

idCase: casos que pertenecen a este idCase (número de identificación del caso).

subprocessDepth: Este no es un parámetro de búsqueda sino un indicador de la profundidad del subproceso que se debe considerar.

Se utiliza cuando hay un caso tiene subprocesos, es útil para poder obtener información de casos en los subprocesos que puedan existir (sin embargo, no se tienen en cuenta subprocesos de tipo Stand alone).

Por defecto, esta consulta retorna un nivel de profundidad, es decir, el resultado contendrá los casos de los subprocesos relacionados al proceso del caso actual; pero no los casos pertenecientes al subproceso o subprocesos dentro de este subproceso. Se puede ingresar cualquier valor entero, pero es importante tener presente que para profundidades más grandes, el tiempo de respuesta puede aumentar, por lo cual se recomienda ingresar un número pequeño.

creationDate: Se refiere a la fecha a partir de la cual un caso se encuentra disponible (cuando se habilita la actividad para un caso).

expirationDate: Fecha tentativa en la cual expira un caso (de acuerdo a la configuración de duración).

From: Será utilizado como un sub-nodo ya sea de la fecha de creación o de la fecha de expiración; permite que se pueda ingresar un rango de fechas. Esta será la fecha inicial para la búsqueda (la más antigua).

To: Será utilizado como un sub-nodo ya sea de la fecha de creación o de la fecha de expiración; permite que se pueda ingresar un rango de fechas. Esta será la fecha final para la búsqueda (la más reciente).

 

note_pin

Se recomienda utilizar el formato de fecha XML: YYYY-MM-DD o YYYY-MM-DDT00:00:00 para una hora específica.

 

Ejemplo

En el siguiente ejemplo, obtenemos los casos que:

1. Se activaron (comenzaron a estar pendientes) del 17 de mayo a las 4 p.m. al 21 de mayo a las 4 p.m.

2. Actualmente están asignados al usuario admon en Bizagi.

 

Método getCases

<BizAgiWSParam>

 <userName>admon</userName>

 <creationDate>

 <From>2012-05-17T16:00:00</From>

 <To>2012-05-21T16:00:00</To>

 </creationDate>

</BizAgiWSParam>

 

Método getCasesAsString

<caseInfo>
  <![CDATA[<BizAgiWSParam>
  <userName>admon</userName>
  <creationDate>
  <From>2012-05-17T16:00:00</From>
  <To>2012-05-21T16:00:00</To>
  </creationDate>
  </BizAgiWSParam>]]>
</caseInfo>

 

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"

      attributeFormDefault="unqualified" elementFormDefault="qualified">

 <xs:element name="processes">

   <xs:complexType>

     <xs:sequence>

       <xs:element name="process">

         <xs:complexType>

           <xs:sequence>

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

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

             <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:unsignedByte" />

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

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

                   <xs:element name="workflowClassDescription" />

                   <xs:element name="workflowClassHelpText" />

                   <xs:element name="workflowClassHelpURL" />

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

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

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

                   <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: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:unsignedShort" />

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

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

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

                         <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:unsignedByte" />

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

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

                               <xs:element name="taskDescription" />

                               <xs:element name="taskHelpText" />

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

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

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

                               <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:unsignedByte" />

                               <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:unsignedByte" />

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

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

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

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

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

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

                             </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: Este es el nodo raíz de la respuesta, contiene un nodo "proceso" para cada caso incluido en el resultado.

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

processRadNumber: Número de creación del caso.

savedMessage: Reservada para uso futuro.

Entities: Reservada para uso futuro.

ProcessCreationDate: Fecha de creación del caso.

ProcessSolutionDate: Fecha de solución del caso.

processWorkflowClass: Toda la información de este nodo es información del proceso.

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 aparecerá el proceso en la aplicación web.

workflowClassCreationDate: Fecha de creación del proceso.

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

workflowClassAllocationPrinciple: Reservado para uso futuro.

workflowClassProcessType: Tipo de proceso.

workflowClassDisplay: Indica si el proceso es visible o no.

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

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

processError: Contiene información de los errores presentados durante el procesamiento de este método.

errorCode: Código del error, si es que se presentó alguno.

errorMessage: Mensaje de error, si es que se presentó alguno.

CurrentWorkItems: Conjunto de las Actividades disponibles del caso.

workItem: Es una actividad especial (una instancia de una  tarea) del proceso que se encuentra activa para el caso.

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

workItemState: Estado actual de la actividad.

workItemEntryDate: Fecha y hora en la que se llega a la actividad por primera vez.

workItemDuration: Es la duración estimada, en minutos, para esta actividad.

workItemSubprocesses: Si la actividad es de tipo subproceso, en este nodo encontrará información de las actividades del subproceso. Tiene un nodo hijo llamado "workItems" de manera que desde este punto la estructura la misma incluyendo un nodo "workItem" para cada actividad que cumple con los criterios de búsqueda dentro del subproceso.

workItemEstimatedSolutionDate: Es la fecha estimada de solución de la actividad.

workItemSolutionDate: Es la fecha en la cual se completó la actividad.

task: Contiene información sobre la tarea correspondiente 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 actividad.

taskHelpText: Texto de ayuda de la actividad.

HelpUrl: URL con información de la actividad.

taskEstimatedDuration: Es la duración estimada, en minutos, para la tarea.

taskType: Tipo de tarea.

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

taskPriority: Prioridad de cumplimiento de la tarea.

taskTransactional: Indica si la tarea es transaccional.

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

taskTimerEventDuration: Si es una tarea de temporizador, contendrá su duración en minutos.

AllowsReassign: Una marca que muestra si esta tarea puede ser resignada a otro usuario.

SendNotification: Indica si se debe enviar un correo electrónico a un usuario informando sobre la disponibilidad de la tarea.

SendAlarms: Indica si se debe enviar un correo electrónico al usuario asignado informándole que la tarea tiene riesgo de vencerse.

ExtendedEstimatedDuration: Duración de tiempo extendida.

Form: Reservada para uso futuro.

IsAsynchTask: Especifica si esta es una tarea asíncrona. Utilizada normalmente para interfaces.

NumberOfRetries: Aplica para tareas asincrónicas. Corresponde al número de intentos automáticos de una tarea. En caso de error se arroja una excepción.

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

ShowFeedback: Aplica para tareas asincrónicas. Indica si se le informará a usuario cuando se presente un error.

TimeoutSeconds: Aplica para tareas asincrónicas. Tiempo (en segundos) que debe esperar la tarea asincrónica 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.

 

Método getCases

 

getCasesAsString_01

 

Método getCasesAsString

 

getCasesAsString_02

 

Métodos Web relacionados

Si desea obtener una lista de Actividades disponibles en el Caso, utilice el método web getActivitiesAsString o getActivities.

Para obtener más información, consulte el artículo Obtener actividades.

 

Una vez que obtenga la lista de Actividades pendientes, puede realizar esas Actividades (desde una aplicación externa).

Para esto, utilice el método web performActivityAsString o performActivity.

Para obtener más información, consulte el artículo Realizar actividad.