jbpm5学习资料

34 篇文章 0 订阅
31 篇文章 0 订阅

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值