现在项目开发又用到jbpm4了,也算是第二次搞这个了,第一次比较匆忙也没人指导,只能自己鼓捣,虽然项目是完成了,但还是留了不少疑惑。这一次再拾起来回顾了好久,也看了好些文章,总算有点体会了,上一次留下的问题也大体弄明白了,心中思路也清晰了起来。好记性不如烂笔头,功能又比较零碎,这次索性把一些常用到的东西和解决问题的思路记录下来,下次再用的时候就方便了。
1. 根据流程定义获取所有的流程节点Activity
由于我对Task的执行人和表单的权限控制是单独存放的,跟流程文件没有关系,所以在部署流程成功后,需要针对 流程定义的各个Activity尤其是Task进行权限控制等操作,所以需要取到该流程定义的所有Activity,以下是代码:
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionId(definitionId).uniqueResult();
ProcessDefinitionImpl definitionimpl = (ProcessDefinitionImpl)definition;
List<? extends Activity> list = definitionimpl.getActivities();
for (Activity activity : list) {
System.out.println(activity.getName()+"--"+activity.getType());
}
关键:把ProcessDefinition 强行转换为其实现类:ProcessDefinitionImpl ,然后调用getActivities()方法即可获取。
2. 对jbpm4中xxxImpl的使用
jBPM4本身维护的IoC容器就可以看到一个Environment。不打开Environment,里边的各种组件都没法使用。所以,如果使用ActivityImpl或者TaskImpl等impl类的话,必须要在Environment环境下进行。
启用Environment主要有两种方式:
1)
EnvironmentImpl env = ((EnvironmentFactory)processEngine).openEnvironment();
try{
// do sonething;
} finally{
env.close();
}
注意:直接openEnvironment不会自动维护其中的事务,如果报session closed错误,请检查是否启用spring事务或者环境是否关闭。
2)
processEngine.execute(new Command() {
public Object execute(Environment env) {
// do something:
}
});
注意:Command会自动打开Environment并维护其中的事务,执行传入的回调方法,结束后再自动将Environment关闭。
如果只是需要获得environment中的某个组件,不需要访问数据库,就可以使用openEnvironment()。
示例:获取当前任务的节点的Transitions集合
/ * 获取当前任务的节点的Transitions集合
* @param ExecutionId 当前流程实例id
* @return
*/
public List<Transition> getTransitions(final String ExecutionId) {
final List<Transition> listadd = new ArrayList<Transition>();
processEngine.execute(new Command() {
public Object execute(Environment env) {
ExecutionImpl e = (ExecutionImpl) executionService
.findExecutionById(ExecutionId);
ActivityImpl clerkOpinionActivityImpl = e.getActivity();
List<? extends Transition> list = clerkOpinionActivityImpl
.getOutgoingTransitions();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Transition ts = (Transition) iterator.next();
listadd.add(ts);
}
return list;
}
});
return listadd;
}
分享到:
相关推荐
**JBPM4 开发文档详解** JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为...
- **环境准备:** 讲述如何搭建jBPM4开发环境,包括下载jBPM4的发行包,配置开发工具和运行时环境。 - **基础概念:** 介绍工作流、BPMN(业务流程建模符号)、jBPM4中的关键术语和概念,帮助开发者建立基础知识...
### JBPM4开发步骤详解与服务接口功能解析 JBPM4是JBPM系列的一个版本,专注于提供一个轻量级的工作流引擎,适用于企业级应用的流程自动化。它以简单直观的方式设计,使得开发者能够轻松地定义、部署和执行业务流程...
jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...
**jbpm4 开发手册** jbpm4 是一个开源的工作流管理系统,用于设计、执行和管理业务流程。这个开发手册集合了多个版本的文档,...无论你是新手还是有经验的开发者,这套完整的jbpm4开发手册都是不可或缺的学习资源。
【JBPM4开发实例】是关于使用JBPM4进行工作流开发的一个具体实践教程,适合初学者进行入门学习。JBPM4是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。在这个实例中,我们将详细介绍如何设置...
"jbpm开发指南.pdf"可能是对jbpm4或更高版本的开发者指南,涵盖了jbpm的编程模型、API使用、集成策略等深入内容,帮助开发者构建基于jbpm的业务流程应用。这通常会包括如何使用jPDL(jbpm Process Definition ...
jBPM4是一款开源的工作流程管理系统,...总的来说,jBPM4提供了一套完整的解决方案,帮助开发人员实现灵活的业务流程管理。了解并掌握这些知识点,能有效地在项目中运用jBPM4,提升业务流程自动化水平,提高工作效率。
**JBPM4开发指南代码详解** JBPM4(Java Business Process Management 4)是一款开源的工作流管理系统,它提供了完整的企业级业务流程管理解决方案。本指南将深入解析JBPM4的开发过程,帮助开发者理解并掌握如何...
### jBPM4.4开发指南关键知识点解析 #### 一、工作流基础与概念 **1. 工作流定义** 工作流是指业务过程的部分或整体在计算机应用环境下的自动化,其目的是为了使在多个参与者之间按照某种预定义的规则传递文档、...
### JBPM5.3开发指南知识点详解 #### 一、概述 JBPM是Java Business Process Management的缩写,是一款开源的工作流引擎。本教程旨在帮助开发者快速掌握JBPM5.3的基本使用方法,包括下载安装、环境搭建以及通过具体...
**jBPM4.4开发实例** jBPM(Java Business Process Management)是一个开源的工作流管理系统,用于管理和执行业务流程。jBPM4.4是该框架的一个版本,它提供了强大的工作流服务,包括流程定义、流程实例管理、任务...
**jBPM4工作流应用开发指南** jBPM4是一款强大的开源工作流管理系统,它为业务流程管理和执行提供了一套完整的解决方案。本指南将深入探讨jBPM4的特性和使用方法,帮助开发者实现高效的工作流应用开发。 **1. jBPM...
jbpm4.3 开发手册,chm格式文档,方便查看。
**JBPM4学习文档CHM**是一份专为学习和理解JBPM4设计的工作流引擎技术文档,适合那些对工作流框架感兴趣的Java开发者,特别是希望将JBPM与Spring框架集成的人员。JBPM是一个开源的工作流程管理系统,它提供了一整套...
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...
《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能包括流程定义、流程执行、任务管理、事件处理和监控等。流程定义是通过Business Process Definition ...