从零开始学jBPM6(五)- BPMN2.0流程编辑
2017-03-29 09:51
387 查看
ps: 架构师交流群(QQ群号
304287620)
eclipse BPMN2 Modeler插件
http://www.eclipse.org/bpmn2-modeler/
上一讲在eclipse直接生成例子工程,这一讲我们将通过编辑BPMN,手动创建第一个流程
1 新建一个空jBPM项目
执行ant start.eclipse打开eclipse
2 新建jBPM Process Diagram
右击src/main/resouces
填写"Process name", "Process ID"等
流程图自动生成流程起点start
3 创建script task节点
在"Script Task"写入需执行java代码
4 创建user task节点
在"Script Task"写入需执行java代码
在"Actor"中添加用户tom
在"On End Script"中写入需执行的java代码
创建第二个User Script,并添加用户green
5 创建end节点并写入java
6 main方法运行流程图
最后得到如下结果
process7 started by test
tom approved process 7
green approved process 7
process 7 finished
7 junit运行流程图
reference:
https://docs.jboss.org/jbpm/release/6.5.0.Final/jbpm-docs/html/ch06.html
304287620)
eclipse BPMN2 Modeler插件
http://www.eclipse.org/bpmn2-modeler/
上一讲在eclipse直接生成例子工程,这一讲我们将通过编辑BPMN,手动创建第一个流程
1 新建一个空jBPM项目
执行ant start.eclipse打开eclipse
2 新建jBPM Process Diagram
右击src/main/resouces
填写"Process name", "Process ID"等
流程图自动生成流程起点start
3 创建script task节点
在"Script Task"写入需执行java代码
long id = kcontext.getProcessInstance().getId(); String name = (String)kcontext.getVariable("recipient"); String log = "process" + id + " started by " + name; System.out.println(log);
4 创建user task节点
在"Script Task"写入需执行java代码
long id = kcontext.getProcessInstance().getId(); String name = (String)kcontext.getVariable("recipient"); String log = "process" + id + " started by " + name; System.out.println(log);
在"Actor"中添加用户tom
在"On End Script"中写入需执行的java代码
创建第二个User Script,并添加用户green
5 创建end节点并写入java
6 main方法运行流程图
package com.sample; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.jbpm.test.JBPMHelper; import org.kie.api.KieBase; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.manager.RuntimeEngine; import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.runtime.manager.RuntimeManagerFactory; import org.kie.api.task.TaskService; import org.kie.api.task.model.TaskSummary; public class Leave { public static void main(String[] args) { KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieBase kbase = kContainer.getKieBase("kbase"); RuntimeManager manager = createRuntimeManager(kbase); RuntimeEngine engine = manager.getRuntimeEngine(null); KieSession ksession = engine.getKieSession(); TaskService taskService = engine.getTaskService(); Map<String, Object> params = new HashMap<String, Object>(); params.put("recipient", "test"); ksession.startProcess("com.sample.leave", params); // let john execute Task 1 List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("tom", "en-UK"); TaskSummary task = list.get(0); taskService.start(task.getId(), "tom"); taskService.complete(task.getId(), "tom", null); // let mary execute Task 2 list = taskService.getTasksAssignedAsPotentialOwner("green", "en-UK"); task = list.get(0); taskService.start(task.getId(), "green"); taskService.complete(task.getId(), "green", null); manager.disposeRuntimeEngine(engine); System.exit(0); } private static RuntimeManager createRuntimeManager(KieBase kbase) { JBPMHelper.startH2Server(); JBPMHelper.setupDataSource(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa"); RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf).knowledgeBase(kbase); return RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(builder.get(), "com.sample:example:1.0"); } }
最后得到如下结果
process7 started by test
tom approved process 7
green approved process 7
process 7 finished
7 junit运行流程图
package com.sample; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jbpm.test.JbpmJUnitBaseTestCase; import org.junit.Test; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.manager.RuntimeEngine; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.task.TaskService; import org.kie.api.task.model.TaskSummary; public class LeaveTest extends JbpmJUnitBaseTestCase{ public LeaveTest() { super(true, true); } @Test public void testRewardsProcess() { RuntimeManager manager = createRuntimeManager("com/sample/leave.bpmn2"); RuntimeEngine engine = manager.getRuntimeEngine(null); KieSession ksession = engine.getKieSession(); TaskService taskService = engine.getTaskService(); Map<String, Object> params = new HashMap<String, Object>(); params.put("recipient", "kylin"); ksession.startProcess("com.sample.leave", params); // let john execute Task 1 List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("tom", "en-UK"); TaskSummary task = list.get(0); taskService.start(task.getId(), "tom"); taskService.complete(task.getId(), "tom", null); // let mary execute Task 2 list = taskService.getTasksAssignedAsPotentialOwner("green", "en-UK"); task = list.get(0); taskService.start(task.getId(), "green"); taskService.complete(task.getId(), "green", null); manager.disposeRuntimeEngine(engine); } }
reference:
https://docs.jboss.org/jbpm/release/6.5.0.Final/jbpm-docs/html/ch06.html
相关文章推荐
- JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程
- jbpm 流程设计(BPMN2 Modeler)
- 【原创】流程引擎的网关(遵循BPMN2.0)设计总结
- 【原创】流程引擎的网关(遵循BPMN2.0)设计总结
- Activiti 5.16 版本 - 基于BPMN2.0规范的流程引擎
- 解读BPMN与JBPM中流程元素的对应关系
- 与小容探讨:Blog媒体和2.0时代的编辑
- 从零开始的RxJava2.0教程(一)基础
- jbpm 解析流程常用方法
- jbpm4.3自由流程(动态路由)的实现
- 将流程发布到jbpm数据库中
- JBPM5流程设计器jbpm-designer-2.4.0.Final-tomcat.war的部署没法访问的问题
- jBPM-jPDL学习笔记——流程设计与控制
- 从零开始的RxJava2.0教程(二)操作符
- MapReduce2.0运行流程
- Eclipse BPMN 2.0 Plugin,activiti designer source compile
- 开源驰骋工作流引擎ccbpm(CCFlow与JFlow)对bpmn2.0的支持
- jBPM jPDL 3.2用户指南:第9章流程建模
- 流程编辑开发工具小结
- 转载 使用JBoss jBPM实现流程访问和执行的授权