1、利用jpdl图形设计器分析和设计流程
2、定义流程
3、加载和启动jbpm流程定义、
A、利用JbpmConfiguration.createJbpmContext(),得到jbpmContext上下文对象;
B、再利用JbpmContext上下文对象得到GraphSession对象;
C、根据GraphSession对象来加载流程定义,根据流程定义id来加载得到流程定义对象;
D、创建流程实例:启动流程
ProcessInstance processInstance = new ProcessInstance(processDefinition);
E、保存jbpmContext.save(processInstance);
F、关闭jbpmContext.close();
=======================================================================================
一、部署流程定义
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
ProcessDefinition processDefinition = ProcessDefinition
.parseXmlResource(“jdpl/hello/processdefinition.xml");
//部署流程定义,如果已经存在同名的定义,则版本号会自动累加
jbpmContext. deployProcessDefinition(processDefinition);
jbpmContext.close();
======================================================================================
二、加载和开始流程
JbpmContext jbpmContext =JbpmConfiguration.getInstance.createJbpmContext();
GraphSession graphSession = jbpmContext.getGraphSession();
//加载流程定义
ProcessDefinition processDefinition = graphSession
.loadProcessDefinition(processDefinitionId);
// 创建流程实例:启动流程
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//此时,rootToken指向流程定义的第一个节点
jbpmContext.save(processInstance);
jbpmContext.close();
=====================================================================================
三、给任务设置参与者
某一个任务固定由某人处理:
<task-node name="collectform" >
<task >
<assignment actor-id=“manager” />"
</task>
<transition name="auditfork" to="auditfork" />
</task-node>
=====================================================================================
四、给任务设置参与者
用变量传递参与者的ID: 值一般在web层确定
定义配置:
<task-node name="collectform" >
<task >
<assignment class='org.ministone.training.jbpm.UserIdAssignmentHandler' />“
<assignment actor-id=‘#{userId}' />“
</task>
<transition name="auditfork" to="auditfork" />
</task-node>
Handler 实现
public class UserIdAssignmentHandler implements AssignmentHandler {
public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception {
String actorId = (String) executionContext.getVariable("userId");
assignable.setActorId(actorId);
}
}
=====================================================================================
五、获取工作列表
获取待办列表:
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
//只能获取尚未完成的任务列表(待办任务)
List list = taskMgmtSession.findTaskInstances(userId);
jbpmContext.close();
在实际的应用中,需要自己写DAO来获取各种列表,例如待签、待办、已办、办结等列表,而且可以进行条件查询,分页等
======================================================================================
六、执行任务
典型代码:取得某个任务id对应的任务实例
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id);
taskInstance.start();
jbpmContext.save(taskInstance);
jbpmContext.close();
start()方法的调用
标识着一个任务的执行的开始:任务的开始时间字段会被填充
在实际业务中类似签收的作用
也可以带入参数(actorId)来主动参与任务的执行
======================================================================================
七、如何结束任务
典型代码:
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();
TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id);
taskInstance.end();
jbpmContext.save(taskInstance);
jbpmContext.close();
end 方法的调用
当前任务实例的结束:任务的结束时间字段会被填充
下一个节点的初始化(实际上调用了token.signal()方法)
当前任务的结束和下一个流程节点的开始是在一个事务内完成,从而保证了数据的完整性
======================================================================================
八、设置(流程实例)变量
变量用来处理工作流相关数据
不需要定义
和流程实例信息一起被持久化
变量的访问和赋值是在某一个token上进行的,缺省时,是基于root Token
变量的作用域和所属的token的生命周期一致,分支上同名变量互不影响,和parent的同名变量也互不影响
典型代码:
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessInstance processInstance = graphSession.loadProcessInstance(Long
.parseLong(instanceId));
ContextInstance contextInstance = processInstance.getContextInstance();
contextInstance.setVariable(vname, value); //设置到了rootToken
jbpmContext.save (processInstance);
jbpmContext.close();
====================================================================================
九、对JbpmContext的理解(-)
职责
封装了对流程实例的持久化操作
用于获取GraphSession对象;
主要方法
Connection getConnection()
Session getSession()
public GraphSession getGraphSession()
public TaskMgmtSession getTaskMgmtSession()
public LoggingSession getLoggingSession()
public SchedulerSession getSchedulerSession()
public void close()
理解(二)
典型用法
JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
try {
TaskInstance taskInstance = ...
...do your process operations..............
jbpmContext.save(taskInstance);
}catch(Throwable){
//process exception here
}
finally {
jbpmContext.close();
}
理解(三)
web.xml中的配置
filter>
<filter-name>JbpmContextFilter</filter-name>
<filter-class>org.jbpm.web.JbpmContextFilter</filter-class>
</filter>
……
<filter-mapping>
<filter-name>JbpmContextFilter</filter-name>
<url-pattern>/wfapp/*</url-pattern>
</filter-mapping>
jsp页面上 <%
JbpmContext jbpmContext = JbpmConfiguration.getInstance().getCurrentJbpmContext();
List list = jbpmContext.getGraphSession().findLatestProcessDefinitions();
for (int i = 0; i < list.size(); i++) {
ProcessDefinition pd = (ProcessDefinition)list.get(i);
%>
<tr><td><%=pd.getName()%></td><td><%=pd.getVersion()%></td> </tr>
<% } %> <!– 不需要关闭-->
======================================================================================
十、对GraphSession的理解
职责
Graph 相关的数据持久化操作
主要是ProcessDefinition和ProcessInstance
主要方法
public void saveProcessDefinition( ProcessDefinition processDefinition )
public ProcessDefinition loadProcessDefinition(long processDefinitionId)
public ProcessDefinition findProcessDefinition(String name, int version)
public List findAllProcessDefinitions()
public void saveProcessInstance(ProcessInstance processInstance)
public ProcessInstance loadProcessInstance(long processInstanceId)
public List findProcessInstances(long processDefinitionId)
Delete方法
=====================================================================================
十一、TaskMgmtSession的理解
职责
TaskInstance相关的数据查询操作
TaskInstance数据通过ProcessInstance进行保存
主要方法
public List findTaskInstances(String actorId)
public List findPooledTaskInstances(String actorId)
public List findTaskInstancesByToken(long tokenId)
public TaskInstance loadTaskInstance(long taskInstanceId)
没有save方法,save是通过对processInstance的操作实现的
======================================================================================
总结:
一、jBPM编程步骤总结
创建流程定义
部署流程定义
启动流程实例
获取任务列表
执行某个任务
结束任务
二、工作流应用一般开发步骤
分析业务流程、用jPDL对业务流程进行建模
部署流程定义
创建和启动流程实例
获取待办任务
执行任务
提交(结束)任务
分享到:
相关推荐
【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...
总结来说,JBPM3是一个强大的业务流程管理工具,通过XML描述流程,利用Hibernate进行数据管理,提供了轻量级的依赖和灵活的部署选项。其核心概念如流程定义、流程实例、令牌和事件,共同构建了一个完整的业务流程...
本文主要围绕jbpm3.2在开发过程中的关键概念、组件、API使用以及配置等知识点进行总结。 首先,了解jbpm3.2需要掌握Java语言,J2EE技术栈,特别是Hibernate,因为在jbpm3.2中,流程定义、任务实例等数据的持久化是...
#### 五、总结 综上所述,jBPM是一个功能强大、易于使用的商业流程管理工作流引擎。它不仅具备丰富的特性和高度的灵活性,而且在实际应用中也表现出了出色的稳定性和性能。对于寻求提高业务流程管理效率、简化软件...
**JBPM4 学习使用总结** JBPM4(Java Business Process Management)是Jboss公司推出的一款开源的工作流管理系统,它提供了完整的业务流程自动化解决方案,包括流程设计、部署、执行、监控以及管理等功能。在深入...
**jbPM 3.2 知识点详解** jbPM,全称为Java Business Process Management,是一个开源的工作流管理系统,主要用于企业级应用中的业务流程管理。...希望这份知识总结能对你在jbPM的学习和使用上提供帮助。
**jbpm3基本资料与代码总结** jbpm(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程的建模、执行和管理。jbpm3是该系统的第三个主要版本,它提供了一整套工具和API,帮助开发者...
JBPM4学习经验总结 JBPM4是Java Business Process Management(业务流程管理)的缩写,它是一个开源的、灵活的、易扩展的可执行流程语言框架。JBPM4学习经验总结包括了JBPM4的概念、配置JBPM4开发环境、JBPM默认的...
总结来说,jbpm-jpdl-designer-3.0.13是一个jbpm的图形化流程设计工具,使用它可以方便地创建和编辑JPDL文件,而无需直接处理XML。这个工具支持在Eclipse集成开发环境下使用,提供了友好的界面和丰富的功能,有助于...
jbpm工作流引擎基于J2EE的轻量级,纯java,开源的工作流管理系统。
总结来说,jbpm是一个强大的Java工作流引擎,具有流程建模、执行和管理的全面功能,适合用于构建企业级工作流系统。jbpm-demo提供了丰富的示例,帮助开发者快速上手,而jbpm-2.0-beta1的压缩包则包含了实现这些功能...
JBPM笔记总结,最最经典的,初学者的必看
请把webwork、spring、hibernate和jbpm的所有jar包放入web-inf的lib下。然后将这个rar包下的jbpm3.2.1的sql导入mysql中。大家可以用src里面的两个XXXTest测试用例跑一下,代码很粗糙,需要大量重构,请见谅。只是...
总结来说,jbpm4web是一个实用的学习工具,它使开发者能够深入了解JBPM4的运作机制,并快速上手实践。通过这个Demo,你可以掌握流程设计、执行、管理和监控的关键技术,为实际项目开发打下坚实的基础。
【JBPM简介】 JBPM,全称JBOSS Business Process Management,是一个基于Java的开源工作流管理系统。它提供了一种灵活且可扩展的方式来设计、执行和管理业务流程。JBPM利用直观的流程语言,如任务、异步等待状态、...
这些报错指南可能是开发者根据经验总结出的常见问题解决方案,或者是官方文档中的错误处理部分,对于快速定位和解决问题非常有帮助。 在jbpm4_maven目录下,我们可以期待找到以下内容: 1. **源代码**:包括业务...
总结,jbpm作为企业级的业务流程管理工具,其强大之处在于它提供的完整流程生命周期管理、灵活的流程定义和强大的数据持久化能力。结合Hibernate的集成,jbpm成为Java开发人员实现高效流程自动化和管理的理想选择。...
总结来说,jbpm是一个功能丰富的Java工作流管理框架,它通过提供强大的API和工具,让开发者能够轻松地构建、执行和管理业务流程。在实际开发中,理解jbpm的核心概念、API使用以及最佳实践,将有助于构建高效、灵活的...