`
suhuanzheng7784877
  • 浏览: 701356 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47681
社区版块
存档分类
最新评论

JBPM4学习总结之9——子流程(sub-process)

    博客分类:
  • jbpm
阅读更多

一个复杂的程序可以分成几个细微的模块开发,同样一个复杂的业务流程也可以分成几个及其微小的子流程去执行、管理。

我们先来看看父流程,如图:

 

其中Subprocess1是一个子流程,在别的流程定义中单独有定义,

子流程如图:

 父流程的xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<process name="ProcessFather" xmlns="http://jbpm.org/4.4/jpdl">
	<start name="start1" g="75,52,48,48">
		<transition name="to Subprocess1" to="Subprocess1" g="304,75:-96,-22" />
	</start>
	<state name="wait" g="61,241,92,52" />
	<sub-process name="Subprocess1" g="243,143,117,52"
		sub-process-key="ProcessSub">
		<parameter-in var="fatherVar" subvar="subVar" />
		<parameter-out var="fatherRes" subvar="subRes" />
		<transition name="to wait" to="wait" g="302,268:-44,-22" />
	</sub-process>
</process>

 测试程序如下

/**
	 * 开始父流程 传入参数
	 */
	public void test03StartFather() {

		Map<String, Object> in = new HashMap<String, Object>();
		in.put("fatherVar", "你爸是李刚");

		// 开始process流程
		ProcessInstance processInstance = executionService
				.startProcessInstanceByKey("ProcessFather", in);

		// 流程实例的ID
		String pid = processInstance.getId();

		System.out.println(pid);// ProcessFather.20001
	}

	/**
	 * 看子流程
	 */
	public void test04SubSeeTask() {
		List<Task> list = taskService.findPersonalTasks("liuyan");

		for (Task task : list) {
			String taskId = task.getId();

			String subValue = (String) taskService
					.getVariable(taskId, "subVar");

			System.out.println(subValue);
		}

	}

	/**
	 * 结束子流程的任务,向父流程传输参数
	 */
	public void test05completeTask() {
		List<Task> list = taskService.findPersonalTasks("liuyan");

		for (Task task : list) {
			String taskId = task.getId();

			// 传给父流程的参数
			Map<String, Object> res = new HashMap<String, Object>();
			res.put("subRes", "你是小霸王");

			taskService.setVariables(taskId, res);

			taskService.completeTask(taskId);
		}
	}

	/**
	 * 查找父流程的变量
	 */
	public void test06findFatherRes() {
		// 20001
		ProcessInstance processInstance = executionService
				.findProcessInstanceById("ProcessFather.20001");

		String processInstanceId = processInstance.getId();

		String result = (String) executionService.getVariable(
				processInstanceId, "fatherRes");

		System.out.println(result);
	}
  • 大小: 10.1 KB
  • 大小: 8.2 KB
分享到:
评论

相关推荐

    JBPM采购申请系统——08_JBPM流程节点.7z

    JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...

    jBPM4学习总结

    【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...

    jBPM-jPDL学习笔记——流程设计与控制

    下面,我们将通过学习笔记,了解jBPM-jPDL的流程设计与控制机制。 流程设计 在jBPM-jPDL中,流程设计是指定义业务流程的结构和行为。流程设计通常包括定义流程的各个节点、 переход和操作。jPDL(Java ...

    jBPM-jPDL学习笔记——流程设计与控制(转载)

    《jBPM-jPDL学习笔记——流程设计与控制》 在IT行业中,流程管理和自动化是企业提升效率的关键。jBPM(Java Business Process Management)是一个开源的工作流和业务流程管理套件,它允许开发者通过定义流程定义...

    JBPM4学习经验总结

    JPDL4 schema效验是在jbpm-4.4.zip中的src文件夹下的jpdl-4.0.xsd——jpdl-4.4.xsd的xml效验,将其引入到Eclipse中来,就可以使用快捷键编辑xml流程了。引入步骤如下:Preferences-&gt;Myeclipse-&gt;files and editors-&gt;...

    JBPM4 学习使用总结

    **JBPM4 学习使用总结** JBPM4(Java Business Process Management)是Jboss公司推出的一款开源的工作流管理系统,它提供了完整的业务流程自动化解决方案,包括流程设计、部署、执行、监控以及管理等功能。在深入...

    JBPM实践之:并发子流程的实现.doc

    总结起来,通过巧妙地使用TaskNode和自定义的动作,我们可以模拟实现JBPM中的并发子流程执行。这种方法避免了复杂的实现和Token流转问题,提供了一种相对简洁且有效的并发控制机制。在实际应用中,这种方案可以很好...

    JBPM采购申请系统——05_构建JBPM数据库.7z

    JBPM采购申请系统——05_构建JBPM数据库.7z JBPM采购申请系统——05_构建JBPM数据库.7z JBPM采购申请系统——05_构建JBPM数据库.7z JBPM采购申请系统——05_构建JBPM数据库.7z JBPM采购申请系统——05_构建JBPM...

    JBPM采购申请系统——06_JBPM版本控制及Token对象.7z

    JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z JBPM采购申请系统——06_JBPM版本控制及Token对象.7z ...

    JBPM采购申请系统——02_Eclipse与JBPM.7z

    JBPM采购申请系统——02_Eclipse与JBPM.7z JBPM采购申请系统——02_Eclipse与JBPM.7z JBPM采购申请系统——02_Eclipse与JBPM.7z JBPM采购申请系统——02_Eclipse与JBPM.7z JBPM采购申请系统——02_Eclipse与JBPM.7z ...

    jbpm-console-ng-process-modeling-client-6.0.0.Beta1.zip

    【jbpm-console-ng-process-modeling-client-6.0.0.Beta1.zip】是一个与业务流程管理(BPM)相关的开源项目,主要关注的是过程建模的用户界面客户端。jbpm是JBoss企业级中间件的一部分,由Red Hat公司维护,提供了...

    JBPM采购申请系统——12_JBPM异步(一).7z

    JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM...

    JBPM采购申请系统——13_JBPM异步(二).7z

    JBPM采购申请系统——13_JBPM异步(二).7z JBPM采购申请系统——13_JBPM异步(二).7z JBPM采购申请系统——13_JBPM异步(二).7z JBPM采购申请系统——13_JBPM异步(二).7z JBPM采购申请系统——13_JBPM异步(二).7z JBPM...

    jbpm4流程提交及执行完整代码

    jbpm4支持导出流程定义为BPMN(Business Process Modeling Notation)标准格式,然后使用工具如jBPM Designer或者在线工具将其转化为图形化展示,方便开发者和业务人员理解和修改流程。按照该文件的指示,可以更好地...

    JBPM采购申请系统——07_JBPM中的脚本语言.7z

    JBPM采购申请系统——07_JBPM中的脚本语言.7z JBPM采购申请系统——07_JBPM中的脚本语言.7z JBPM采购申请系统——07_JBPM中的脚本语言.7z JBPM采购申请系统——07_JBPM中的脚本语言.7z JBPM采购申请系统——07_JBPM...

    JBPM采购申请系统——20_JBPM4.0使用及特性.7z

    JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_JBPM4.0使用及特性.7z JBPM采购申请系统——20_...

    JBPM4 开发文档 实例 流程

    总结,JBPM4提供了一套完整的工作流管理系统,包括流程设计、执行、监控和优化等功能,通过JPdl语言和Hibernate整合,实现了流程的可视化和灵活管理。对于开发人员来说,理解这些核心概念和数据库表结构,能更好地...

Global site tag (gtag.js) - Google Analytics