零全零美(www.zzgwt.com)
生活中的很多事情,并不像If...Else那么简单!
BlogJava
首页
新文章
联系
管理
posts - 96,comments - 52,trackbacks - 0
<
2011年2月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
常用链接
我的随笔
我的评论
我的参与
最新评论
随笔分类
apache组件(4)
JavaScript(14)
jbpm(6)
oracle(5)
PL/SQL(1)
SEO(3)
tomcat(5)
ubuntu(16)
安全相关(26)
数据库
正则表达式(6)
设计模式(3)
随笔档案
2012年9月 (1)
2012年7月 (3)
2012年6月 (2)
2009年11月 (36)
2009年10月 (18)
2009年9月 (1)
2009年2月 (1)
2009年1月 (1)
2008年11月 (9)
2008年9月 (1)
2008年8月 (1)
2008年7月 (4)
2008年6月 (2)
2008年5月 (6)
2008年4月 (11)
友情链接
www.modaotea.com
茶艺培训 茶楼管理
www.website371.com
郑州做网站 郑州网站建设 郑州做网站公司 郑州网站优化 郑州网站制作
河南省大井科技有限公司(www.zzgwt.com)
搜索
积分与排名
积分 - 149902
排名 - 409
最新评论
1. re: 正则表达式学习笔记(1) 行的开始和结束、字符组、连字符、脱字符、用"."去匹配任意字符
赞
--性感电子
2. re: Apache httpd+Jk+Tomcat实现JAVA服务器配置全解析(1):基础环境搭建
什么嘛,我就是不懂这些才搜索的,我最需要的就是你省略的部分,如何配置安装,唉,又得继续找资料了。
--吐槽
3. re: JavaScript学习笔记(1)变量的生命周期
写的很好
--fwd
4. re: SELinux学习(1):Can't connect to MySQL server on 'ip' (13) 的解决方案
没玩过这东西啊呵呵
--台式万用表
5. re: [原创]巧用System.getProperty()编译现有工程的java文件
你不能用ANT吗?
--DB Compare Tool
JBPM实践之:使用Fork中的Script实现多路路由选择
在阅读本文之前,建议先阅读一下《
JBPM源码解读之:Fork
》以了解Fork中Script的配置方法及处理方式:
按照Fork对Script的规范Script必须包含一个具有write权限的变量,而且该变量必须实现java.util.Collection接口。
<?
xml version="1.0" encoding="UTF-8"
?>
<
process-definition
xmlns
="urn:jbpm.org:jpdl-3.2"
name
="multiChoice"
>
<
start-state
name
="start"
>
<
transition
name
=""
to
="a"
></
transition
>
</
start-state
>
<
task-node
name
="a"
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node a--");
</
script
>
</
event
>
<
transition
name
=""
to
="multichoice"
></
transition
>
</
task-node
>
<
fork
name
="multichoice"
>
<
script
>
<
variable
name
="transitionNames"
access
="write"
></
variable
>
<
expression
>
transitionNames = new ArrayList();
if ( scenario == 1 ){
transitionNames.add( "to b" );
} else if ( scenario ==2 ) {
transitionNames.add( "to c" );
} else if (scenario >= 3 ) {
transitionNames.add( "to b" );
transitionNames.add( "to c" );
}
</
expression
>
</
script
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node fork--");
</
script
>
</
event
>
<
transition
name
="to b"
to
="b"
></
transition
>
<
transition
name
="to c"
to
="c"
></
transition
>
</
fork
>
<
task-node
name
="b"
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node b--");
</
script
>
</
event
>
<
transition
name
=""
to
="syncmerge"
></
transition
>
</
task-node
>
<
task-node
name
="c"
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node c--");
</
script
>
</
event
>
<
transition
name
=""
to
="syncmerge"
></
transition
>
</
task-node
>
<
join
name
="syncmerge"
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node syncmerge--");
</
script
>
</
event
>
<
transition
name
=""
to
="end"
></
transition
>
</
join
>
<
end-state
name
="end"
>
<
event
type
="node-enter"
>
<
script
>
System.out.println("---enter node end--");
</
script
>
</
event
>
</
end-state
>
</
process-definition
>
附上单元测试代码:
import
junit.framework.TestCase;
import
org.jbpm.graph.def.ProcessDefinition;
import
org.jbpm.graph.exe.ProcessInstance;
import
org.junit.After;
import
org.junit.Before;
import
org.junit.Test;
public
class
TestFork
extends
TestCase
{
private
ProcessDefinition processDefinition;
@Before
public
void
setUp()
throws
Exception
{
String xmlPath
=
"
jbpmTest/fork/jpdl/fork.xml
"
;
processDefinition
=
ProcessDefinition.parseXmlResource(xmlPath);
}
@After
public
void
tearDown()
throws
Exception
{
}
@Test
public
void
test()
{
ProcessInstance processInstance
=
new
ProcessInstance(processDefinition);
//
processInstance.getContextInstance().setVariable("scenario", new Integer(1));
//
processInstance.getContextInstance().setVariable("scenario", new Integer(2));
processInstance.getContextInstance().setVariable(
"
scenario
"
,
new
Integer(
3
));
processInstance.signal();
}
}
posted on 2008-11-05 17:05
零全零美
阅读(1902)
评论(4)
编辑
收藏
所属分类:
jbpm
FeedBack:
#
re: JBPM实践之:使用Fork中的Script实现多路路由选择[未登录]
2009-07-14 10:36 |
zhang
你好。我的运行报错。好像是这个地方。
<script>
<variable name="transitionNames" access="write"></variable>
<expression>
transitionNames=new ArrayList();
if(scenario==1){
transitionNames.add("to b" );
}else if ( scenario ==2 ) {
transitionNames.add( "to c" );
}else if (scenario >= 3) {
transitionNames.add( "to b" );
transitionNames.add("to c" );
}
</expression>
</script>
错误提示:
10:33:04,453 [main] WARN Script : exception during evaluation of script expression
Sourced file: inline evaluation of: ``transitionNames=new ArrayList(); if(scenario==1){ transitionNames.add("to b" ); . . . '' : illegal use of undefined variable, class, or 'void' literal : at Line: 1 : in file: inline evaluation of: ``transitionNames=new ArrayList(); if(scenario==1){ transitionNames.add("to b" ); . . . '' : ) {
回复
更多评论
#
re: JBPM实践之:使用Fork中的Script实现多路路由选择
2009-08-03 14:32 |
tomc
要怎么解决?
回复
更多评论
#
re: JBPM实践之:使用Fork中的Script实现多路路由选择
2009-08-17 21:42 |
阿斯顿
我也遇到了和楼上一样的问题,请问该如何解决呢?等待中。。。
回复
更多评论
#
re: JBPM实践之:使用Fork中的Script实现多路路由选择
2011-02-23 14:38 |
郑院生
我的也是这个问题 不过我的是因为出了个小错 解释把 access=“write” 写成了acess=“write”,修改以后就没事了 民可以再仔细检查一下自己的源码,仅供参考
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
[原创]巧用System.getProperty()编译现有工程的java文件
[原创]JBPM源码解读之:Join
[原创]JBPM实践之:并发子流程的实现
JBPM实践之:使用Fork中的Script实现多路路由选择
[原创]JBPM源码解读之:Fork
JBPM实践之:在流程图上高亮显示指定的任务节点