
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 )