Hope it is clear now 

<process-definition xmlns='' name='TestProcess'> 
  |     <start-state name='start'>  
  |             <transition name='' to='setup'>< /transition> 
  |     </start-state> 
  |     <node name='setup'> 
  |             <action class='com.sample.SetupProcessActionHandler'/> 
  |             <transition name='' to='TNODE1'>< /transition> 
  |     </node> 
  |     
  |     <task-node name='TNODE1' signal='never' create-tasks='false'> 
  |             <event type='node-enter'> 
  |                     <action class='com.sample.testTask.OnNodeEnter'/> 
  |             </event> 
  |     <task name='TASK_EAT'> 
  |             <event type='task-create'> 
  |             <action class='com.sample.testTask.OnTaskCreation'/> 
  |             </event> 
  |     <event type='task-end'> 
  |             <action class='com.sample.testTask.OnComplete'/> 
  |     </event> 
  |     </task> 
  |     
  |     <task name='TASK_DRINK'> 
  |             <event type='task-create'> 
  |                     <action class='com.sample.testTask.OnTaskCreation'/> 
  |             </event> 
  |             <event type='task-end'> 
  |                     <action class='com.sample.testTask.OnComplete'/> 
  |             </event> 
  |     </task> 
  |     
  |     <transition name='' to='TNODE2'>< /transition> 
  | </task-node> 
  | 
  | <task-node name='TNODE2' signal='never' create-tasks='false'> 
  |     <event type='node-enter'> 
  |             <action class='com.sample.testTask.OnNodeEnter2'/> 
  |     </event> 
  | 
  |     <task name='TASK_SLEEP'> 
  |             <event type='task-create'> 
  |                     <action class='com.sample.testTask.OnTaskCreation'/> 
  |             </event> 
  |             <event type='task-end'> 
  |                     <action class='com.sample.testTask.OnComplete'/> 
  |             </event> 
  |     </task> 
  |     <transition name='' to='end'>< /transition> 
  | </task-node> 
  | 
  | <node name='loopback'> 
  |     <transition name='' to='TNODE1'></transition> 
  | </node> 
  | 
  | <end-state name='end'></end-state> 
  | 
  | </process-definition> 

anonymous wrote : TNODE1  Task Creation Handler

public class OnNodeEnter implements ActionHandler { 
  | 
  |     public void execute(ExecutionContext executionContext) throws Exception 
{ 
  |             System.out.println("OnNodeEnter-->- Start"); 
  | 
  |             Token token = executionContext.getToken(); 
  |             TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance(); 
  |             TaskNode taskNode = (TaskNode) executionContext.getNode(); 
  | 
  | 
  |             Task doEAT = taskNode.getTask("TASK_EAT"); 
  |             tmi.createTaskInstance(doEAT, token); 
  | 
  |             Task doDrink = taskNode.getTask("TASK_DRINK"); 
  |             tmi.createTaskInstance(doDrink, token); 
  | 
  |             System.out.println("OnNodeEnter-->- END"); 
  |     } 
  | }

anonymous wrote : TNODE2  Task Creation Handler


  | public class OnNodeEnter2 implements ActionHandler { 
  | 
  |     public void execute(ExecutionContext executionContext) throws Exception 
{ 
  |             System.out.println("OnNodeEnter2-->- Start"); 
  | 
  |             Token token = executionContext.getToken(); 
  |             TaskMgmtInstance tmi = executionContext.getTaskMgmtInstance(); 
  |             TaskNode taskNode = (TaskNode) executionContext.getNode(); 
  | 
  |             Task doSleep = taskNode.getTask("TASK_SLEEP"); 
  |             tmi.createTaskInstance(doSleep, token); 
  | 
  |             System.out.println("OnNodeEnter2-->- END"); 
  |     } 
  | }

anonymous wrote : ActionHandler on task-create event on all tasks 
public class OnTaskCreation implements ActionHandler { 
  | public void execute(ExecutionContext executionContext) throws Exception { 
  | System.out.println("--> TaskInstacne Id 
="+executionContext.getTaskInstance().getName()); 
  | System.out.println("--> TaskInstacne Id 
="+executionContext.getTaskInstance().getId()); 
  | } 
  | }


anonymous wrote : Process Exceution and TASK_EAT ending 

Following test is within transaction and in the end i rollback transaction, so 
that in case of exception nothing is populated in tables.

public void testRunTimeTaskCreation() {
  |       try {
  |            loadProcessDefinition(processDef);
  |            
  |            Long processInstanceId = createNewProcessInstance();
  |        ProcessInstance processInstance = 
findProcessInstance(processInstanceId);
  | 
  |            Collection<TaskInstance> tasks = 
processInstance.getTaskMgmtInstance().getTaskInstances();
  | 
  | // only complete TASK_EAT which get created once process is created
  | 
  |            for (TaskInstance task : tasks) {
  |                System.out.println("----------Task name = "+task.getName());
  |                if (task.getName().equals("TASK_EAT")) {
  | 
  |                assignAndStart(task);
  |                    task.end(); // end the task and transit to TNODE2, leave 
TASK_DIRNK as it is (uncompleted)
  |                    break;
  |              }
  |            }
  |        } catch (Exception e) {
  |            e.printStackTrace();
  |            fail();
  |        }  
  |        
  |    }
  | 

anonymous wrote : OnCreation Actionhandler is giving following out put, if 
above test is run all togather in same transaction.

: 
TaskInstacne Name = TASK_EAT
TaskInstacne Id   = 700

TaskInstacne Name = TASK_DRINK
TaskInstacne Id   = 701

.....
TaskInstacne Name = TASK_SLEEP
TaskInstacne Id   = 0


anonymous wrote :  if above test is divided in two test , 1. create process and 
commit trans then , 2. complete TASK_EAT is perform in different within 
separate  trans output is.


: 
TaskInstacne Name = TASK_EAT
TaskInstacne Id   = 702

TaskInstacne Name = TASK_DRINK
TaskInstacne Id   = 703
.
.
.
TaskInstacne Name = TASK_SLEEP
TaskInstacne Id   = 704



View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3958942#3958942

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3958942
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to