- jeffen2006
- 等级:


- 性别:

- 文章: 32
- 积分: 127
- 来自: 深圳

|
最后更新时间:2006-12-06 关键字: 使用fork/join的常见错误
在实际的流程设计中常常会出现如下的流程:

看上去没什么问题,那么开始编程
xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <process-definition xmlns="" name="yytest">
- <start-state name="start">
- <transition name="" to="f1">transition>
- start-state>
- <fork name="f1">
- <transition name="to_s1" to="s1">transition>
- <transition name="to_j1_1" to="j1">transition>
- fork>
- <state name="s1">
- <transition name="" to="f2">transition>
- state>
- <fork name="f2">
- <transition name="to_j1_2" to="j1">transition>
- <transition name="to_s2" to="s2">transition>
- fork>
- <state name="s2">
- <transition name="to_j1_3" to="j1">transition>
- state>
- <join name="j1">
- <transition name="" to="s3">transition>
- join>
- <state name="s3">
- <transition name="" to="end">transition>
- state>
- <end-state name="end">end-state>
-
- process-definition>
java 代码
- private static void run(){
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
- try {
- long processInstanceId =1;
- processInstance = jbpmContext.loadProcessInstance(processInstanceId);
- Token root = processInstance.getRootToken();
- root.signal();
- Token to_s1 = root.getChild("to_s1");
- Token to_j1_1 = root.getChild("to_j1_1");
- System.out.println("root:"+root.getNode());
- System.out.println("to_s1:"+to_s1.getNode());
- System.out.println("to_j1_1:"+to_j1_1.getNode());
- to_s1.signal();
- Token to_s2 = to_s1.getChild("to_s2");
- Token to_j1_2 = to_s1.getChild("to_j1_2");
- System.out.println("root:"+root.getNode());
- System.out.println("to_s2:"+to_s2.getNode());
- System.out.println("to_j1_2:"+to_j1_2.getNode());
- to_s2.signal();
- System.out.println("root:"+root.getNode());
-
- }finally {
- jbpmContext.close();
- }
-
- }
为什么所有的子令牌都结束了,根令牌仍然在fork呢?原因就是fork和join没有配对使用。所以看似正确的流程也一定要经过严格的测试,绝不能想当然。重新编写流程定义文件:

xml 代码
- xml version="1.0" encoding="UTF-8"?>
- <process-definition xmlns="" name="yytest">
- <start-state name="start">
- <transition name="" to="f1">transition>
- start-state>
- <fork name="f1">
- <transition name="to_s1" to="s1">transition>
- <transition name="to_j1_1" to="j1">transition>
- fork>
- <state name="s1">
- <transition name="" to="f2">transition>
- state>
- <fork name="f2">
- <transition name="to_j2_1" to="j2">transition>
- <transition name="to_s2" to="s2">transition>
- fork>
- <state name="s2">
- <transition name="to_j2_2" to="j2">transition>
- state>
- <join name="j2">
- <transition name="to_j1_2" to="j1">transition>
- join>
- <join name="j1">
- <transition name="" to="s3">transition>
- join>
- <state name="s3">
- <transition name="" to="end">transition>
- state>
- <end-state name="end">end-state>
-
-
- process-definition>
java 代码
- private static void run(){
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
- try {
- long processInstanceId =1;
- processInstance = jbpmContext.loadProcessInstance(processInstanceId);
- Token root = processInstance.getRootToken();
- root.signal();
- Token to_s1 = root.getChild("to_s1");
- Token to_j1_1 = root.getChild("to_j1_1");
- System.out.println("root:"+root.getNode());
- System.out.println("to_s1:"+to_s1.getNode());
- System.out.println("to_j1_1:"+to_j1_1.getNode());
- to_s1.signal();
- Token to_s2 = to_s1.getChild("to_s2");
- Token to_j2_1 = to_s1.getChild("to_j2_1");
- System.out.println("root:"+root.getNode());
- System.out.println("to_s2:"+to_s2.getNode());
- System.out.println("to_j2_1:"+to_j2_1.getNode());
- to_s2.signal();
- System.out.println("root:"+root.getNode());
-
- }finally {
- jbpmContext.close();
- }
-
- }

- 描述: error
- 大小: 26.1 KB

- 描述: ok
- 大小: 27.5 KB
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- 抛出异常的爱
- 等级:


- 性别:

- 文章: 7982
- 积分: 2402
- 来自: 北京

|
D:/eclipse/jbpm/jbpm-starters-kit-3.1.2/jbpm-designer/workspace/yytestjbpm/processes/yytest/processimage.jpg
注意先上传之后再用网络URL引用图片
|
| 返回顶楼 |
|
|
- jeffen2006
- 等级:


- 性别:

- 文章: 32
- 积分: 127
- 来自: 深圳

|
如何上传呢?我点插入图片的按钮,弹出的对话框中没有上传的功能,我就copy的地址。
|
| 返回顶楼 |
|
|