JBPM-其他节点
2014-04-24 21:57
281 查看
(一) decision 其实就是判断节点 目的 改善代码结构
<?xml version="1.0" encoding="UTF-8"?>
<process name="decision" xmlns="http://jbpm.org/4.4/jpdl">
<start g="314,26,48,48" name="start1">
<transition g="-53,-17" name="to task1" to="task1"/>
</start>
<end g="283,386,48,48" name="end1"/>
<task g="185,107,92,52" name="task1">
<transition g="26,-23" name="to task2" to="task2"/>
</task>
<task g="267,176,104,58" name="task2">
<transition g="-103,-13" name="to exclusive1" to="exclusive1"/>
</task>
<task g="465,261,92,52" name="task3">
<transition g="29,-9" name="to end1" to="end1"/>
</task>
<decision g="350,267,48,48" name="exclusive1">
<handler class="cn.itcast.jbpm0909.decision.MyHandler" />
<transition g="-9,-40" name="to task3" to="task3"/>
<transition g="-47,-17" name="to end1" to="end1"/>
</decision>
</process>
public class MyHandler implements DecisionHandler{ @Override public String decide(OpenExecution execution) { // TODO Auto-generated method stub int days = (Integer)execution.getVariable("请假天数"); if(days<=3){ return "to end1"; }else{ return "to task3"; } } }
public class DecisionTest extends BaseJbpm{ @Test public void testDeploy(){ processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("cn/itcast/jbpm0909/decision/decision.jpdl.xml") .deploy(); } @Test public void testStartPI(){ processEngine.getExecutionService() .startProcessInstanceById("decision-1"); } @Test public void testFinishTask(){ // Map<String, Integer> variables = new HashMap<String, Integer>(); // variables.put("请假天数", 2); // processEngine.getTaskService().setVariables("410002", variables); processEngine.getTaskService() .completeTask("420002"); } }
(二) event
<?xml version="1.0" encoding="UTF-8"?>
<process name="event" xmlns="http://jbpm.org/4.4/jpdl">
<!--
流程级别的开始事件
-->
<on event="start">
<event-listener class="c.event.ProcessStartEvent"></event-listener>
</on>
<!--
流程级别的结束事件
-->
<on event="end">
<event-listener class="c.event.ProcessEndEvent"></event-listener>
</on>
<start name="start1" g="257,59,48,48"> <!-- 开始节点的结束事件 -->
<on event="end">
<event-listener class="cStartNodeEndEvent"></event-listener>
</on>
<transition name="to task1" to="task1" g="-53,-17"/>
</start>
<end name="end1" g="276,330,48,48"> <!-- 开始节点的结束事件 -->
<on event="start">
<event-listener class="c.EndNodeStartEvent"></event-listener>
</on>
</end>
<task name="task1" g="225,177,92,52">
<on event="start">
<!-- 一般节点的开始事件 -->
<event-listener class="c.NodeStartEvent"></event-listener> </on> <on event="end">
<!-- 一般节点的结束事件 --><event-listener class="c.NodeEndEvent"></event-listener> </on> <transition name="to end1" to="end1" g="-47,-17"/> </task></process>
public class ProcessStartEvent implements EventListener{ @Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("process start event"); } }
@Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("process end event"); }
public class StartNodeEndEvent implements EventListener{ @Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("start node end event"); } }
public class EndNodeStartEvent implements EventListener{ @Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("end node start event"); } }
public class NodeStartEvent implements EventListener{ @Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("node start event"); } }
public class NodeEndEvent implements EventListener{ @Override public void notify(EventListenerExecution execution) throws Exception { System.out.println("node end event"); } }
/** * event和decision的发明就是为了达到代码的松耦合 * 把流程的控制逻辑和流程的业务逻辑分离 * @author Administrator * */ public class EventTest extends BaseJbpm{ @Test public void testDeploy(){ processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("cn/itcast/jbpm0909/event/event.jpdl.xml") .deploy(); } @Test public void testStartPI(){ processEngine.getExecutionService() .startProcessInstanceById("event-1"); } @Test public void testFinishTask(){ processEngine.getTaskService() .completeTask("450002"); } }
(三)fock和join(并发执行的)
<?xml version="1.0" encoding="UTF-8"?>
<process name="forkjoin" xmlns="http://jbpm.org/4.4/jpdl">
<start name="start1" g="270,8,48,48">
<transition name="to fork1" to="fork1" g="-53,-17"/>
</start>
<end name="end1" g="276,404,48,48"/>
<task name="task1" g="129,137,92,52" assignee="张三">
<transition name="to task3" to="task3" g="-53,-17"/>
</task>
<task name="task2" g="366,146,92,52" assignee="干露露">
<transition name="to task4" to="task4" g="-53,-17"/>
</task>
<task name="task3" g="106,275,92,52" assignee="干露露">
<transition name="to join1" to="join1" g="-74,6"/>
</task>
<task name="task4" g="391,292,92,52" assignee="张三">
<transition name="to join1" to="join1" g="3,11"/>
</task>
<fork name="fork1" g="273,95,48,48">
<transition name="to task1" to="task1" g="-53,-17"/>
<transition name="to task2" to="task2" g="9,-19"/>
</fork>
<join name="join1" g="293,326,48,48">
<transition name="to end1" to="end1" g="-47,-17"/>
</join>
</process>
相关文章推荐
- jbpm系列之八--fork节点
- JBPM4.4 使用泳道动态指定下一个任务节点任务人的两种方式之方法二
- Sprite Kit编程指南(6)-使用其他节点类型
- 【Creator】访问节点或者其他组件
- jbpm教程(七)从开始节点和从中间节点 搜索可选路径
- JBPM实践之:在流程图上高亮显示指定的任务节点
- hdu 2196 Computer 求树上每个节点到其他节点的最远距离
- JBPM节点分支之Group节点分析
- jbpm分支decision节点判断跳转
- JBPM具体应用之decision节点的使用
- 配置Jenkins的slave节点的详细步骤适合windows等其他平台
- 当其他RAC节点上的私网互连断开连接时,CRS不启动(文档 ID 1981887.1)
- jbpm4.4 java节点
- JBPM具体应用之decision节点的使用
- Extjs 树的动态更改加载地址,以及动态加载已有子节点其他节点问题!
- Linq to Xml,从其他xml文件读取节点(Element和Text混合)插入当前xml文件, 尖括号不转义
- 从JBPM3到JBPM4,兼谈其他
- IO中其他流--节点流
- 【代码篇】JBPM4.4开发流程节点(动态代理实现流程管理业务)
- jBPM4.4开发(四)-----------sub-process节点