jbpm實踐4 beanshell

  1. <node name="node1"> 
  2.     <action class="com.xj.TestAction"></action> 
  3.     <transition name="" to="state2"></transition> 
  4. </node> 
  5.  
  6. package com.xj; 
  7. import org.jbpm.graph.def.ActionHandler; 
  8. import org.jbpm.graph.exe.ExecutionContext; 
  9. /** 
  10. *node加action變成非自動節點 
  11. **/ 
  12. public class TestAction implements ActionHandler { 
  13.      
  14.     public void execute(ExecutionContext context) throws Exception { 
  15.         System.out.println("通過Action類來解決問題!!!"); 
  16.     } 
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  <task-node name="task1"> 
  24.        <task> 
  25.          <assignment actor-id="#{user}"></assignment> 
  26.       </task> 
  27.       <transition name="同意" to="state2"></transition> 
  28.       <transition name="不同意" to="node1"></transition> 
  29. </task-node> 
  30.  
  31. public static void main(String[] args) { 
  32.     JbpmConfiguration config = JbpmConfiguration.getInstance(); 
  33.     JbpmContext context = config.createJbpmContext(); 
  34.     GraphSession gs = context.getGraphSession(); 
  35.     ProcessDefinition pd = gs.findLatestProcessDefinition("test04"); 
  36.     ProcessInstance pi = new ProcessInstance(pd); 
  37.     pi.getContextInstance().setVariable("user", "001"); 
  38.     Token token = pi.getRootToken(); 
  39.     TaskInstance ti = (TaskInstance)pi.getTaskMgmtInstance().getTaskInstances().iterator().next(); 
  40.     System.out.println("現在工作的參與者是"+ti.getActorId()); 
  41.     //獲取該工作的路由 
  42.     List<Transition> tns = ti.getTask().getTaskNode().getLeavingTransitions(); 
  43.     for(Transition tn : tns) { 
  44.         System.out.println("該工作的所有路由"+tn.getName()); 
  45.     } 
  46.      
  47.     context.close(); 
  48.  
  49.  
  50.  
  51.  
  52.  
  53. <!--event--> 
  54.  <task-node name="task1"> 
  55.       <task> 
  56.         <assignment class="com.xj.TestAssignment"></assignment> 
  57.       </task> 
  58.       <event type="node-enter"> 
  59.     <script> 
  60.     print(&qout;dd&qout;+token.getId()); 
  61.     </script> 
  62.       </event> 
  63.       <transition name="" to="end1"></transition> 
  64. </task-node> 
  65.  
  66.  
  67. package com.xj; 
  68.  
  69. import org.jbpm.graph.exe.ExecutionContext; 
  70. import org.jbpm.taskmgmt.def.AssignmentHandler; 
  71. import org.jbpm.taskmgmt.exe.Assignable; 
  72.  
  73. public class TestAssignment implements AssignmentHandler { 
  74.     public void assign(Assignable assignale, ExecutionContext context) throws Exception { 
  75.         assignale.setActorId("北風007"); 
  76.     } 
  77.  
  78.  
  79.  
  80.  
  81. <fork name="frok1"> 
  82.     <script> 
  83.         <variable name="trans" access="write"></variable> 
  84.         <expression> 
  85.             trans = new ArraList(); 
  86.             if(){ 
  87.                 trans.add("tr1"); 
  88.                 trans.add("tr1"); 
  89.             } 
  90.         </expression> 
  91.     </script> 
  92.     <transition name="tr1" to="node3"> 
  93.     <transition name="tr2" to="node3"> 
  94.     <transition name="tr3" to="node3"> 
  95.     <transition name="tr4" to="node3"> 
  96. </fork> 
  97.  
  98.  
  99.  
  100.  
  101. <decision name="decision1" expression="#{trans}"> 
  102.       <transition name="tr1" to="node1"></transition> 
  103.       <transition name="tr2" to="node2"></transition> 
  104.       <transition name="tr3" to="node3"></transition> 
  105. </decision> 
  106.  
  107. <decision name="decision1" expression="#{trans}"> 
  108.     <handler class="com.xj.TestDecision"></handler> 
  109.       <transition name="tr1" to="node1"></transition> 
  110.       <transition name="tr2" to="node2"></transition> 
  111.       <transition name="tr3" to="node3"></transition> 
  112. </decision> 
  113.  
  114. package com.xj; 
  115. import org.jbpm.graph.exe.ExecutionContext; 
  116. import org.jbpm.graph.node.DecisionHandler; 
  117. public class TestDecision implements DecisionHandler { 
  118.  
  119.     public String decide(ExecutionContext context) throws Exception { 
  120.          
  121.         return "tr3"; 
  122.     } 
  123.     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章