IBM BPM, V8.0.1, All platforms > Programming IBM BPM > Developing client applications for BPEL processes and tasks > Queries on BPEL process and task data > Business Process Choreographer EJB query API > Examples of the query and queryAll methods
Example: Including custom properties in a query
This example shows how to use the query method to retrieve tasks that have custom properties.
For example, you want to search for all of the human tasks in the ready state that have a custom property, customerID, with the value CID_12345. The following code snippet shows the query method call for the query:
query ( " DISTINCT TASK.TKIID ", " TASK_CPROP.NAME = 'customerID' AND " + " TASK_CPROP.STRING_VALUE = 'CID_12345' AND " + " TASK.KIND IN ( TASK.KIND.KIND_HUMAN, TASK.KIND.KIND_PARTICIPATING ) AND " + " TASK.STATE = TASK.STATE.STATE_READY ", (String)null, (String)null, (Integer)null, (TimeZone)null );If you now want to retrieve the tasks and their custom properties, the query method call for the query looks as follows:
query ( " DISTINCT TASK.TKIID, TASK_CPROP.NAME, TASK_CPROP.STRING_VALUE", " TASK.KIND IN ( TASK.KIND.KIND_HUMAN, TASK.KIND.KIND_PARTICIPATING ) AND " + " TASK.STATE = TASK.STATE.STATE_READY ", (String)null, (String)null, (Integer)null, (TimeZone)null );The SQL statement that is generated from this API query is shown in the following code snippet:SELECT DISTINCT TA.TKIID , TACP.NAME , TACP.STRING_VALUE FROM TASK TA LEFT JOIN TASK_CPROP TACP ON (TA.TKIID = TACP.TKIID), WORK_ITEM WI WHERE WI.OBJECT_ID = TA.TKIID AND TA.KIND IN ( 101, 105 ) AND TA.STATE = 2 AND (WI.OWNER_ID = 'JohnSmith' OR WI.OWNER_ID IS NULL AND WI.EVERYBODY = 1 )This SQL statement contains an outer join between the TASK view and the TASK_CPROP view. This means that tasks that satisfy the WHERE clause are retrieved even if they do not have any custom properties.Tip: To improve query performance, you can use the inline custom properties TASK.CUSTOM_TEXT1 through TASK.CUSTOM_TEXT8. These properties are stored inline, that is, in the same table as the task or process instance.
Examples of the query and queryAll methods
Related concepts:
Use custom properties for human tasks