专栏首页cloudskymejbpm5.1介绍(5)

jbpm5.1介绍(5)

看几个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>();
			List<String> list = new ArrayList<String>();
			list.add("krisv");
			list.add("john doe");
			list.add("superman");
			params.put("list", list);
			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 条评论
登录 后参与评论

相关文章

  • 时间管理的定义与目的

    时间管理定义 ◆时间就是生命,时间就是金钱。 ◆人们往往是重视生命,乐于理财,而忽略了时间管理。 ◆善用时间,就是善用自己的生命! 时...

    cloudskyme
  • Could not find artifact com.sun:tools:jar:1.5.0

    【maven package】,则依然报错,但报的是另外一个错误: [INFO] Scanning for projects…[INFO]           ...

    cloudskyme
  • jbpm5.1介绍(6)

    Junit测试的mini流程helloworld 这是一个在demo中使用的Script Task做的简单示例,在执行到这个任务结点的时候自动输出"hello...

    cloudskyme
  • 重磅整理---Android进程保活组件

    导语 Android进程保活的文章很多,但是基本没有一个完整的工程化的东西。所以在这里整理主流的保活方案,将其工程化到github上供大家直接使用。 ...

    MelonTeam
  • 可怕的万圣节 Linux 命令

    虽然现在不是万圣节,也可以关注一下 Linux 可怕的一面。什么命令可能会显示鬼、巫婆和僵尸的图像?哪个会鼓励“不给糖果就捣蛋”的精神?

    砸漏
  • 跨平台应用构建工具

    Electron 是一个可以用JavaScript,Html,Css构建桌面应用的库,可以打包部署到Mac,Windows,Linux上。 Chrominum ...

    春哥大魔王
  • torch.nn.Module.named_parameters ()

    named_parameters(prefix='', recurse=True)[source]

    于小勇
  • SwiftUI:获取应用进入后台的通知

    SwiftUI可以检测您的应用何时移至后台(即用户何时返回主屏幕),何时回到前台,用户何时截取屏幕截图等等。这些全部由 Notification Center ...

    韦弦zhy
  • Linux查看进程占用资源排名

    ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

    py3study
  • OpenStack报错:Host is not mapped to any cell

    新建实例dt01报错:Host 'openstack-computer' is not mapped to any cell

    loong576

扫码关注云+社区

领取腾讯云代金券