论坛首页 Java企业应用论坛

jbpm的例子之三 使用fork

浏览 2586 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-08   最后修改:2009-09-17
fork的使用有一些小的地方需要注意。

1 fork节点出去的transition必须有name属性,因为Fork要用该属性来构建子token,如果不指定的话,那么所有的transition的name都为null,则只有一个transition会被调用。
2 fork的行为是依次调用transition,所以在底层它并不是一个并发的模型,如果需要使用并发模型的话,可以考虑jbpm的异步调用,当然,也可以自己起一个Thread去完成一些task。
3 token的name是和transition的name相关的,如下例所示,rootToken的fullName为'/',fork出来的两个子token分别为'/t2','/t1'。
4 join的token必须是兄弟token。


<process-definition name='TestForkProcess'>

<start-state>
<transition to='fork'></transition>
</start-state>

<fork name='fork'>
<transition  name ='t1' to='node0'></transition>
<transition  name ='t2' to='node1'></transition>
</fork>

<node name='node0'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>

<node name='node1'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>

<join name='joinNode'>
<script>
System.out.println("this script is entering node "+node);
</script>
<transition to='end' />
</join>

<end-state name='end' />

</process-definition><process-definition name='TestForkProcess'>

<start-state>
<transition to='fork'></transition>
</start-state>

<fork name='fork'>
<transition  name ='t1' to='node0'></transition>
<transition  name ='t2' to='node1'></transition>
</fork>

<node name='node0'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>

<node name='node1'>
<script>
System.out.println("this script is entering node "+node);
token.signal();
</script>
<transition to='joinNode'></transition>
</node>

<join name='joinNode'>
<script>
System.out.println("this script is entering node "+node);
</script>
<transition to='end' />
</join>

<end-state name='end' />

</process-definition>
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics