博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jbpm5.1介绍(5)
阅读量:6070 次
发布时间:2019-06-20

本文共 2755 字,大约阅读时间需要 9 分钟。

看几个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任务结点执行后输出的结果。

转载地址:http://bibgx.baihongyu.com/

你可能感兴趣的文章
dom4j解析xml文件
查看>>
第六周
查看>>
解释一下 P/NP/NP-Complete/NP-Hard 等问题
查看>>
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>