[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