现在项目开发又用到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 开发文档 实例 流程 JBPM4 开发文档 实例 流程
JBPM4轻量级,简单初步的基础的开发步骤
jBPM4工作流应用开发指南 胡奇写的,十分赞!!
JBPM开发指南JBPM开发指南JBPM开发指南
jBPM4开发指南 项目中要用到工作流的 必须注意了。。 jBPM4开发指南 原来做项目的时候下的。。。
jbpm4源码jbpm4源码jbpm4源码
jbpm3,jbpm4用户文档,开发指南,jbpm4解读,jbpm学习笔记,jbpm最佳实践全套套
JBPM4开发指南代码 .
jbpm4.3 开发手册,chm格式文档,方便查看。
jbpm入门,开发,jbpm入门,开发,jbpm入门,开发,jbpm入门,开发,jbpm入门,开发,jbpm入门,开发,
JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...
讲解了JBPM4的一些特性,以及一些开发实例
jBPM4.4入门开发实例
jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版
jbpm4开发指南,搭建环境及请假实例说明
jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目,它使用要遵循 Apache License。jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为...
jbpm开发源码,一个jbpm开发的小例子
jbpm4.4开发指南,jbpm4.4用户指南
jbpm4.2开发是一个适合初学者看的文档,里面讲的很全面。
jboss jbpm4最新开发包 采用了pvm框架