join是和fork一起使用的,主要是从fork<fork></fork>开始会变成两个分枝,同时并行两个流程,最后两个流程在join<join></join>汇合,才能走入<join></join>下面的节点task。
业务罗辑图1 (在附件中,总是图片上传后,在另一台机上的无法显示,郁闷中)
在流程进入 sale 时,将分成两个流程分枝,一个是送货,一个是付款帐单,两个流程各自独立。
如果送货流程先完成 receive item 节点任务,那么它必须等待付款流程完成send money 节点任务,这时整个流程才能进入下一个任务。这种情况下用fork与join共同实现这样的场景。
业务罗辑图2 (在附件中,上图1情况相同)
流程定义文件(回头有时间我会提交一个完整的jbpm的发部包的):
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <process-definition xmlns="" name="sale">
- <start-state name="start">
- <transition name="" to="拍卖"/>
- start-state>
- <end-state name="end1"/>
- <task-node name="拍卖">
- <transition name="" to="fork1"/>
- task-node>
- <fork name="fork1">
- <transition name="运送" to="发货"/>
- <transition name="帐单" to="付款"/>
- fork>
- <join name="join1">
- <transition name="交易完成" to="end1"/>
- join>
- <task-node name="发货">
- <transition name="" to="货物验收"/>
- task-node>
- <task-node name="货物验收">
- <transition name="" to="join1"/>
- task-node>
- <task-node name="付款">
- <transition name="" to="货款验收"/>
- task-node>
- <task-node name="货款验收">
- <transition name="" to="join1"/>
- task-node>
- <process-definition>