[jboss-user] [JBoss jBPM] - Re: Passing objects through the workflow
mmusaji
do-not-reply at jboss.com
Tue Aug 18 08:37:33 EDT 2009
Okay so here's my workflow
| <?xml version="1.0" encoding="UTF-8"?>
|
| <process name="process" xmlns="http://jbpm.org/4.0/jpdl">
| <start g="0,0,80,40">
| <transition to="parse request"/>
| </start>
|
| <java class="org.tlg.workflow.ParseRequest" g="90,4,80,40" method="execute" name="parse request">
| <transition g="-27,-18" name="valid" to="find providers"/>
| <transition g="-35,-18" name="invalid" to="error"/>
| </java>
|
| <java class="org.tlg.workflow.FindProviders" g="276,7,80,40" method="execute" name="find providers">
| <transition to="fork"/>
| </java>
|
| <fork g="298,85,80,40" name="fork">
| <on continue="exclusive" event="end"/>
| <transition g="-62,-18" name="validate red" to="validate red request"/>
| <transition g="-64,-18" name="validate exp" to="validate exp request"/>
| <transition g="-63,-17" name="validate sys" to="validate sys request"/>
| </fork>
|
| <custom name="validate red request" class="org.tlg.workflow.AlterObject" exp="#{myObj}">
| <transition g="-27,-18" to="join"/>
| </custom>
|
| <custom name="validate exp request" class="org.tlg.workflow.AlterObject" exp="#{myObj}">
| <transition g="-27,-18" to="join"/>
| </custom>
|
| <custom name="validate sys request" class="org.tlg.workflow.AlterObject" exp="#{myObj}">
| <transition g="-27,-18" to="join"/>
| </custom>
|
| <join g="267,368,80,40" name="join">
| <transition name="check results" to="evaluate validation results" g="-47,-16"/>
| </join>
|
| <decision name="evaluate validation results" expr="#{content}" >
| <transition name="valid" to="construct message" />
| <transition name="invalid" to="error"/>
| </decision>
|
| <java class="org.tlg.workflow.ConstructFraudRequest" g="505,168,80,40" method="execute" name="construct message">
| <transition to="send"/>
| </java>
|
| <java class="org.tlg.workflow.SendRequest" g="501,78,80,40" method="execute" name="send">
| <transition to="get responses"/>
| </java>
|
| <java class="org.tlg.workflow.GetResponse" g="372,84,80,40" method="execute" name="get responses">
| <transition to="process responses"/>
| </java>
|
| <java class="org.tlg.workflow.ProcessResponse" g="431,6,80,40" method="execute" name="process responses">
| <transition g="-48,-18" name="complete" to="end"/>
| <transition g="-42,-18" name="process" to="find providers"/>
| </java>
|
| <end g="624,21,80,40" name="end" state="complete"/>
| <end-error g="37,104,80,40" name="error"/>
|
| </process>
|
It is experimental at the moment so i know it may be a bit messy and i apologize.
Here's my Unit test
| public void testSimple() throws Exception {
| Map<String, Object> variables = new HashMap<String, Object>();
| variables.put("content", "valid");
|
| myObj = new MyObject();
| myObj.setName("A reusable fraud object");
| variables.put("myObj", myObj);
|
| ProcessInstance processInstance = executionService.startProcessInstanceByKey("process", variables);
| String processInstanceId = processInstance.getId();
|
| List<Job> jobs = managementService.createJobQuery()
| .processInstanceId(processInstanceId)
| .list();
|
| for(Job job: jobs) {
| managementService.executeJob(job.getId());
| System.out.println("Executing Job number " + job.getId());
| }
|
| MyObject myObjUpdated = (MyObject) variables.get("myObj");
| System.out.println(myObjUpdated.getName());
| }
|
And the class that amends the object
|
| public class AlterObject implements ActivityBehaviour{
|
| private static final long serialVersionUID = 1L;
|
| public void execute(ActivityExecution execution) throws Exception {
| MyObject myObject= (MyObject )execution.getVariable("myObj");
|
| System.out.println(myObject.getName());
| fraudObject.setName("Name now changed");
|
| execution.setVariable("myObj", myObject);
|
| }
|
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4250160#4250160
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4250160
More information about the jboss-user
mailing list