Advertisements
RSS

Using the Human Task identification key to set your own taskId with Oracle BPM (and BPEL)

29 Apr

Requirement

Our Oracle ACM/BPM system will create tasks which will not only be handled by users in a front-end but also through a B2B connection with our external partners. So we need to publish a message to our B2B partners when a task is available. The challenge here is that the taskId is externally generated in the Human Task component and for the BPM (and BPEL) process the taskId is unknown until the task is closed. So we need to generate our own taskId or a trick to capture and retrieve the taskId outside the process and send it back to the process.

Solution

We first looked at the option to use the Human Task onAssigned event which we could capture through EDN and handle accordingly. However one of the requirements was that we would not communicate an internal (task) ID to our B2B partners so needed to generate our own ID instead. So we thought about generate our own guid() and place it on one of the ProtectedTextAttributes so we could use this to query the correct task. But Laurens van der Starre pointed us out that Oracle actually has a solution for this and we could use the identification key on the Human Task.

So below is an example of a process where our own key (a guid) is generated in the script task and then placed on the human task.

process

Map the generated variable on the Identification Key

task

Runtime

In EM I can see that the generated key is 35373030303632323333383139353637. So we would normally communicate this to our B2B partner. Then on request from our B2B partner to send the details of the task service we can query the correct task using the Oracle TaskQueryService:


<soapenv:Envelope>
 <soapenv:Header/>
 <soapenv:Body>
 <tas:taskListRequest>
 <com:workflowContext>
 <com:credential>
 <com:login>${#Project#username}</com:login>
 <com:password>${#Project#password}</com:password>
 </com:credential>
 </com:workflowContext>
 <tas1:taskPredicateQuery>
 <tas1:displayColumnList>
 <tas1:displayColumn>IDENTIFICATIONKEY</tas1:displayColumn>
 </tas1:displayColumnList>
 <tas1:optionalInfoList>
 <!--tas1:taskOptionalInfo>Comments</tas1:taskOptionalInfo-->
 <!--tas1:taskOptionalInfo>Attachments</tas1:taskOptionalInfo-->
 <!--tas1:taskOptionalInfo>Payload</tas1:taskOptionalInfo-->
 </tas1:optionalInfoList>
 <tas1:predicate>
 <tas1:assignmentFilter>All</tas1:assignmentFilter>
 <tas1:clause>
 <tas1:column>IDENTIFICATIONKEY</tas1:column>
 <tas1:operator>EQ</tas1:operator>
 <tas1:value>35373030303632323333383139353637</tas1:value>
 </tas1:clause>
 </tas1:predicate>
 </tas1:taskPredicateQuery>
 </tas:taskListRequest>
 </soapenv:Body>
</soapenv:Envelope>

Result

 

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
 <env:Header/>
 <env:Body>
 <taskListResponse xmlns="http://xmlns.oracle.com/bpel/workflow/taskQueryService">
 <task xmlns="http://xmlns.oracle.com/bpel/workflow/task">
 <title>task-identification-key</title>
 <ownerRole>task-identification-key.ProcessOwner</ownerRole>
 <priority>3</priority>
 <processInfo/>
 <systemAttributes> ... </systemAttributes>
 <systemMessageAttributes/>
 <identificationKey>35373030303632323333383139353637</identificationKey>
 <percentageComplete>100.0</percentageComplete>
 <sca>
 <compositeDN>default/task-identification-key!1.0*soa_.....</compositeDN>
 </sca>
 <applicationContext>OracleBPMProcessRolesApp</applicationContext>
 <taskDefinitionId>default/task-identification-key!1.0/htMyTask</taskDefinitionId>
 <mdsLabel>soa_...</mdsLabel>
 <customAttributes/>
 </task>
 </taskListResponse>
 </env:Body>
</env:Envelope>

Example / Sources

 

Advertisements
 
1 Comment

Posted by on 29-04-2016 in BPM, Oracle

 

Tags: , ,

One response to “Using the Human Task identification key to set your own taskId with Oracle BPM (and BPEL)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: