JBoss 系列七十九: jBPM 6 示例之 evaluation

概述

jBPM Evaluation 示例具有悠久的历史,也是传统的jBPM示例,jBPM首页(http://www.jboss.org/jbpm)就有Evaluation 示例的介绍,jBPM默认安装完成Evaluation 示例也被默认安装,Evaluation 示例流程如下图:


Evaluation流程有7个节点:

  • Start Event - 表示流程开始
  • User Task - Self Evaluation 
  • Gateway - Diverging,表示流程执行到此分开两支
  • User Task - HR Manager Evaluation
  • User Task - Project Manager Evaluation
  • Gateway - Converging, 表示流程执行到此合并
  • End Event - 表示流程执行结束
Evaluation描述的是一个评估流程,首先自我评估,然后分别是HR评估和PM评估。本示例中设计到三种角色,krisv为普通员工,john为PM,mary为HR,接下来我们分别演示在Eclipse 中运行Evaluation 示例,和在jBPM console中运行Evaluation 示例。

在Eclipse 中运行Evaluation 示例

根据jBPM 6 发布,快速安装,新功能介绍中介绍的步骤安装jBPM 6,jbpm-installer目录下会有sample目录,该目录中的sample为jBPM Evaluation 示例。我将此示例整合到Github jBPM 6示例,详细代码见:https://github.com/kylinsoong/jbpm-6-examples/tree/master/evaluation

根据软件安装及资料下载中描述的方法下载jBPM Evaluation 示例到本地导入Eclipse,运行org.jbpm.demo.evaluation.ProcessMain可以执行Evaluation流程。ProcessMain代码如下:

package org.jbpm.demo.evaluation;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.jbpm.services.task.identity.JBossUserGroupCallbackImpl;
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 ProcessMain {

	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();

		// start a new process instance
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("employee", "krisv");
		params.put("reason", "Yearly performance evaluation");
		ksession.startProcess("org.jbpm.demo.evaluation", params);
		System.out.println("Process started ...");
		
		// complete Self Evaluation
		List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("krisv", "en-UK");
		TaskSummary task = tasks.get(0);
		System.out.println("'krisv' completing task " + task.getName() + ": " + task.getDescription());
		taskService.start(task.getId(), "krisv");
		Map<String, Object> results = new HashMap<String, Object>();
		results.put("performance", "exceeding");
		taskService.complete(task.getId(), "krisv", results);
		
		// john from HR
		tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
		task = tasks.get(0);
		System.out.println("'john' completing task " + task.getName() + ": " + task.getDescription());
		taskService.start(task.getId(), "john");
		results = new HashMap<String, Object>();
		results.put("performance", "acceptable");
		taskService.complete(task.getId(), "john", results);
		
		// mary from PM
		tasks = taskService.getTasksAssignedAsPotentialOwner("mary", "en-UK");
		task = tasks.get(0);
		System.out.println("'mary' completing task " + task.getName() + ": " + task.getDescription());
		taskService.start(task.getId(), "mary");
		results = new HashMap<String, Object>();
		results.put("performance", "outstanding");
		taskService.complete(task.getId(), "mary", results);
		
		System.out.println("Process instance completed");
		
		manager.disposeRuntimeEngine(engine);
		manager.close();
		
		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).userGroupCallback(new JBossUserGroupCallbackImpl("classpath:/usergroups.properties")).knowledgeBase(kbase);
		return RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(builder.get(), "org.jbpm.demo:evaluation:1.0");
	}

}

运行ProcessMain输出的结果如下:

Process started ...
'krisv' completing task Self Evaluation: Please perform a self-evalutation.
'john' completing task Project Manager Evaluation: You need to evaluate krisv.
'mary' completing task HR Manager Evaluation: You need to evaluate krisv.
Process instance completed

另外JUnit运行org.jbpm.demo.evaluation.ProcessTest同样可以运行流程,同样输出结果:

Process started ...
'krisv' completing task Self Evaluation: Please perform a self-evalutation.
'john' completing task Project Manager Evaluation: You need to evaluate krisv.
'mary' completing task HR Manager Evaluation: You need to evaluate krisv.
Process instance completed

在jBPM console中运行Evaluation 示例

任意根据jBPM 6 发布,快速安装,新功能介绍中介绍的步骤,或jBPM 6 使用 Mysql 替换默认的 H2 数据库中介绍的步骤启动jBPM 6,登录jBPM console(http://localhost:8080/jbpm-console)。我们通过如下步骤运行示例。

启动流程并进行Self Evaluation

使用krisv/krisv登录jBPM console:


Authoring -> Project Authoring,在Project Explorer中选择jbpm-playground,在jbpm-playground中选择Evaluation,在右边Project栏点击Build & Deploy:


选择Deploy -> Deployments会显示部署的流程,选择Process Management -> Process Definitions会列出所有定义部署的流程,在最右端点击开始按钮,开始执行流程,在弹出的输入如下信息点击开始:


选择Task-> Task List,可以列出krisv所有权限的Self Evaluation,在列表右边点击Start图标,Start图标会变化为Complete图标,点击Complete图标,在流程右边输入good点击Complete按钮:


选择Process Management -> Process Instance,接着在右边Instance Details栏选择Views -> Process Model,查看流程执行状况:


如上图Self Evaluation为灰色,表示已经执行完成。

HR Manager Evaluation

退出当前登录,使用mary/mary登录jBPM console,选择Task-> Task List,可以列出mary所有权限的HR Manager Evaluation,在列表右边点击Cliam图标,Start图标会变化为Complete图标,点击Complete图标,在流程右边输入good点击Complete按钮:


Project Manager Evaluation

退出当前登录,使用john/john登录jBPM console,选择Task-> Task List,可以列出mary所有权限的Project Manager Evaluation,在列表右边点击Cliam图标,Start图标会变化为Complete图标,点击Complete图标,在流程右边输入good点击Complete按钮:




转载于:https://my.oschina.net/iwuyang/blog/197175

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2017年jBPM 正式发布了全新的 7版本。jBPM 是一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来支持整个生命周期中的业务流程: 基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程实例管理,任务列表和任务表单管理以及报告。 部署流程的可选流程仓库(和其他相关知识)。 历史记录(用于查询/监视/分析)。 与Seam,Spring,OSGi等集成 BPM通过以业务用户和开发人员喜欢的方式提供流程管理功能和工具,从而实现业务分析师,开发人员和最终用户之间的桥梁。域特定的节点可以插入调色板,使业务用户更容易理解这些过程。 jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个独立的流程引擎。复杂的业务逻辑可以被建模为业务流程与业务规则和复杂事件处理的组合。jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven仓库中)。 如果您使用Maven,只需添加一个依赖关系pom.xml: org.jbpm jbpm-test 7.3.0.Final 这与Gradle,Ivy和Buildr类似。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值