从零开始学jBPM6(五)- BPMN2.0流程编辑

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代码

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值