Update the Human task payload via JAVA API - Oracle SOA Suite:
Oracle SOA Suite provides java API’s to manipulate the Human
task data.The below java code will help us to update the Human task
payload.
This is the Remote Java client to get the Workflow service and perform the required operations on the task.
This is the Remote Java client to get the Workflow service and perform the required operations on the task.
The XPath of the input element will be used to update the
payload data.
UpdateWorkflowPayload.java
import java.util.*;
import oracle.bpel.services.workflow.IWorkflowConstants;
import oracle.bpel.services.workflow.client.*;
import
oracle.bpel.services.workflow.query.ITaskQueryService;
import oracle.bpel.services.workflow.repos.*;
import oracle.bpel.services.workflow.task.ITaskService;
import oracle.bpel.services.workflow.task.model.Task;
import
oracle.bpel.services.workflow.verification.IWorkflowContext;
import org.w3c.dom.Element;
public class UpdateWorkflowPayload {
public static void
updatePayload()
{
List displayColumns = new ArrayList();
displayColumns.add("TASKNUMBER");
displayColumns.add("TITLE");
displayColumns.add("STATE");
displayColumns.add("CREATOR");
List
optionalInfo = new ArrayList();
optionalInfo.add("Comments");
optionalInfo.add("Payload");
try {
String
userid="weblogic";
String
password = "password";
String
serverUrl ="t3://localhost:8000"; // host:port of the soa
server
Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String>
connProperties = new
HashMap<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String>();
connProperties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.CLIENT_TYPE,WorkflowServiceClientFactory.REMOTE_CLIENT);
connProperties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL,serverUrl);
connProperties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(connProperties,
null, null);
IWorkflowContext ctx =
wfSvcClient.getTaskQueryService().authenticate(userid, password.toCharArray(),
"jazn.com" );
ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();
ITaskService taskSvc = wfSvcClient.getTaskService();
Predicate statePredicate =new
Predicate(TableConstants.WFTASK_STATE_COLUMN,Predicate.OP_EQ,IWorkflowConstants.TASK_STATE_ASSIGNED);
Predicate compositenamePredicate = new
Predicate(TableConstants.COMPONENT_COMPOSITE_NAME_COLUMN,Predicate.OP_EQ,"HumanWorkflow");
Predicate predicate = new Predicate(statePredicate, Predicate.AND,
compositenamePredicate);
List
tasks =querySvc.queryTasks(ctx, displayColumns, optionalInfo,
ITaskQueryService.AssignmentFilter.MY,null, statePredicate, null, 0, 0);
for (int
i = 0; i < tasks.size(); i++) {
Task task = (Task)tasks.get(i);
String taskId = task.getSystemAttributes().getTaskId();
String title = task.getTitle();
String state = task.getSystemAttributes().getState();
Task currentTask=querySvc.getTaskDetailsById(ctx,taskId);
Element payload = currentTask.getPayloadAsElement();
Map namespacemap = new HashMap();
namespacemap.put("ns0",
"http://xmlns.oracle.com/bpel/workflow/task");
setPayloadValue(payload,"/ns0:task/ns0:payload/ns0:Name",namespacemap,"Albin
Issac");
setPayloadValue(payload,"/ns0:task/ns0:payload/ns0:Number",namespacemap,"024");
setPayloadValue(payload,"/ns0:task/ns0:payload/ns0:Dep",namespacemap,"I.T");
setPayloadValue(payload,"/ns0:task/ns0:payload/ns0:Place",namespacemap,"KAMPLAR");
currentTask.setPayloadAsElement(payload);
taskSvc.updateTaskOutcome(ctx, currentTask,"APPROVE");
}
} catch
(Exception e) {
e.printStackTrace();
}
}
public static void
setPayloadValue(Element payload,String xpath,Map namespacemap,String value) {
try {
XPathUtils.setNodeValue(payload, namespacemap, xpath,value);
} catch
(Exception e) {
}
}
public static void
main(String[] args) {
updatePayload();
}
}