jbpm5.1介绍(5)
来源:互联网 发布:windows调色板pal下载 编辑:程序博客网 时间:2024/05/21 14:59
看几个jbpm5中带的示例程序吧,包括了很多我们在日常生活中的场景
循环示例
本示例是一个在外部传入的变量,通过传入的变量来判断循环次数的演示程序,看一下流程定义的内容
如图:
初始化的时候设置变量i的值为0,然后进入流程结点,选择的是XOR,就是异或的意思,在循环中输出变量i的值并且加1,
在后面的选择节点上判断变量i的值,如果小于count则循环继续,如果大于i那么就进行完成结点,输出结点中的内容。
运行程序LoopingExample,程序内容如下:
public
class
LoopingExample {
public
static
final
void
main(String[] args) {
try
{
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession,
"test"
, 1000);
// start a new process instance
Map<String, Object>
params
=
new
HashMap<String, Object>();
params
.put(
"count"
, 10);
ksession.startProcess(
"com.sample.looping"
,
params
);
logger.close();
}
catch
(Throwable t) {
t.printStackTrace();
}
}
private
static
KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(
"looping/Looping.bpmn"
), ResourceType.BPMN2);
return
kbuilder.newKnowledgeBase();
}
}
运行完结果如下:
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
Loop completed
可以动态修改params.put("count", 10); 设置的变量的值修改为5,则输出的结果为5次。
多实例子流程
下面的例子中演示的是审查销售代表的任务并且做对应的处理。
这个例子演示的是一个多实例子流程的示例,就是当执行到这个子流程的时候,传入一组元素,为其中的每一项都执行一次
其中CollectionExpression 的值设置为list,就是接受一个外部传入的list,VariableName的值设置为item,在下文中就可以使用item来取值
在下面的user task的comment就用到了这个值"你需要检查用户 #{item}”
启动示例程序,注意此时传入
public
class
MultipleInstanceExample {
public
static
final
void
main(String[] args) {
try
{
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(ksession,
"test"
, 1000);
ksession.getWorkItemManager().registerWorkItemHandler(
"Human Task"
,
new
WSHumanTaskHandler());
// start a new process instance
Map<String, Object>
params
=
new
HashMap<String, Object>();
<span style=
"color: #ff0000;"
>List<String> list =
new
ArrayList<String>();
list.add(
"krisv"
);
list.add(
"john doe"
);
list.add(
"superman"
);
params
.put(
"list"
, list);
</span> ksession.startProcess(
"com.sample.multipleinstance"
,
params
);
logger.close();
}
catch
(Throwable t) {
t.printStackTrace();
}
}
private
static
KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource(
"multipleinstance/multipleinstance.bpmn"
), ResourceType.BPMN2);
return
kbuilder.newKnowledgeBase();
}
}
以上的红色部分是传的列表,这三个人就是要被审查的销售代表的任务。
启动示例程序,输入sales-rep,刷新
当三个任务全部start,并且complete完成后则在控制台能够看到
Process completed
这个是Script Task任务结点执行后输出的结果。
- jbpm5.1介绍(5)
- jbpm5.1介绍(5)
- jbpm5.1介绍(1)
- jbpm5.1介绍(1)
- jbpm5.1介绍(2)
- jbpm5.1介绍(3)
- jbpm5.1介绍(4)
- jbpm5.1介绍(2)
- jbpm5.1介绍(3)
- jbpm5.1介绍(4)
- jbpm5.1介绍(6)
- jbpm5.1介绍(7)
- jbpm5.1介绍(8)
- jbpm5.1介绍(9)
- jBPM5.1介绍
- jbpm5 介绍
- JBPM5
- BPMN2,activiti,jbpm5学习资料1(规范,流程实例)
- MC/ServiceGuard在线修改的几点小结
- PPT打包成EXE常用方法
- MATLAB中字符串数组的文件输出
- jbpm5.1介绍(4)
- MySQL 数据库性能优化——缓存参数优化
- jbpm5.1介绍(5)
- Java中集合排序
- MySQL 数据库性能优化——表结构优化
- 不平稳的心
- VS2010数据库工程自动部署
- jsp中文显示乱码解决方案
- 在macpro上安装windows 7
- MDCC印象之二:芒果的味道
- Android初始化系统语言为简体中文