Este tema sólo se aplica a la configuración de IBM Business Process Manager Advanced.

Ejemplo: consulta de tareas en estado preparado

Este ejemplo muestra cómo utilizar el método query para recuperar tareas con las que puede trabajar el usuario que ha iniciado la sesión.

Juan Torres desea obtener una lista de las tareas que se le han asignado. Para que un usuario pueda trabajar en una tarea, esta debe estar en estado preparado. El usuario que ha iniciado la sesión también debe tener un elemento de trabajo de propietario potencial para la tarea. El fragmento de código siguiente muestra la llamada al método query para esta consulta:
query( "DISTINCT TASK.TKIID", 
           "TASK.KIND IN ( TASK.KIND.KIND_HUMAN, TASK.KIND.KIND_PARTICIPATING ) 
             AND " +  
           "TASK.STATE = TASK.STATE.STATE_READY AND " +  
           "WORK_ITEM.REASON = WORK_ITEM.REASON.REASON_POTENTIAL_OWNER", 
            (String)null, (String)null, (Integer)null, (TimeZone)null )
Se adoptan las acciones siguientes cuando se genera la declaración SELECT:
  • Se añade una condición para el control de acceso a la cláusula where. En este ejemplo se asume que los elementos de trabajo Grupo no están habilitados.
  • Las constantes, como TASK.STATE.STATE_READY, se sustituyen por sus valores numéricos.
  • Se añade una cláusula FROM y condiciones de unión.
En el fragmento de código siguiente se muestra la sentencia SQL que se genera a partir de la consulta de la API:
SELECT DISTINCT TASK.TKIID
   FROM   TASK TA, WORK_ITEM WI,  
   WHERE WI.OBJECT_ID = TA.TKIID
   AND    TA.KIND IN ( 101, 105 )       
   AND    TA.STATE = 2   
   AND    WI.REASON = 1           
   AND  ( WI.OWNER_ID = 'JohnSmith' OR WI.OWNER_ID = null AND  WI.EVERYBODY = true )
     
Para restringir la consulta de API a tareas para un proceso determinado, por ejemplo, sampleProcess, la consulta tiene el aspecto siguiente:
query( "DISTINCT TASK.TKIID", 
           "PROCESS_TEMPLATE.NAME = 'sampleProcess' AND "+
           "TASK.KIND IN ( TASK.KIND.KIND_HUMAN, TASK.KIND.KIND_PARTICIPATING ) 
             AND " +  
           "TASK.STATE = TASK.STATE.STATE_READY AND " +  
           "WORK_ITEM.REASON = WORK_ITEM.REASON.REASON_POTENTIAL_OWNER", 
            (String)null, (String)null, (Integer)null, (TimeZone)null )