JBPM基本概念讲解课件_第1页
JBPM基本概念讲解课件_第2页
JBPM基本概念讲解课件_第3页
JBPM基本概念讲解课件_第4页
JBPM基本概念讲解课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京传智播客教育 基于jBPM的应用开发基础知识孙文举北京传智播客教育 内容l工作流基本知识概念和术语lJBPM基本概况jBPM中与工作流领域对应的概念lJBPM基本用法基本API的用法以l实例开发实例编写一个报销审批流程的相关代码北京传智播客教育 jBPM介绍ljBPM是什么是基于java实现的流程业务处理框架(Business Process Management)ljBPM能做什么支撑企业的流程性流程性业务应用:解释业务规则,使得协作协作自动化l特点没有采用WFMC的规范(尤其是业务定义部分)强大的业务逻辑描述能力(jPDL)核心组件是流程处理引擎轻量级,core engine无须运行于

2、JEEContainer采用hibernate作为数据持久化的工具,兼容多种数据库简单易用,灵活、可扩展,同一需求有多种解决方案北京传智播客教育 BPM VS Workflowl区别Workflow更侧重于对流程的处理模型BPM除了对流程的处理,还要提供灵活的编程模型,易于企业应用的集成l用workflow替代BPM我们在后面的课程中将以workflow名词为主北京传智播客教育 工作流(系统)简介l什么是工作流?WFMC定义:定义:The automation of a business process, in whole or part, during which documents, in

3、formation or tasks are passed from one participant to another for action, according to a set of procedural rules. 要素:要素:任务(task),参与者(participant )l什么是工作流管理系统WFMC定义:定义:A system that defines, creates and manages the execution of workflows through the use of software, running on one or more workflow en

4、gines, which is able to interpret the process definition, interact with workflow participants and, where required, invoke the use of IT tools and applications. 要素要素:工作流的管理、工作流的调度执行、工作流引擎北京传智播客教育 为什么用工作流l工作流带来的益处工作流带来的益处实现了无纸化的工作模式;过程可监控:便于对执行过程的跟踪和监控数据可管理:便于对数据进行检索、分析可靠性:减少人-人交互的主观错误的机率l常见应用领域常见应用领域

5、行政管理:行政、事业单位、大中型(国有)企业产品研发和制造:用于对整个研发、生产制造过程的管理和调度电子商务:订单处理其他 如内容管理系统l常见场景常见场景公文流转、行政审批、订单处理、产品研发、制造过程其他需要多个角色协作、多步完成的活动北京传智播客教育 业务流程示例示例:参与者/活动/数据北京传智播客教育 工作流系统主要架构 工作流引擎工作列表流程定义解释定义产生持久化组件北京传智播客教育 说明 l加载流程定义定义工具可以系统提供,也可以只是读取定义结果l启动流程启动选定的流程,创建流程实例l办理任务(流程的每一步)执行流程的每一个步骤(不一定都需要人参与)l记录流程的状态对状态的管理是工

6、作流引擎的主要职责北京传智播客教育 工作流(系统)主要概念l流程定义:预先定义的业务流转逻辑l流程实例:业务的一次实际流转过程l参与者:任务的执行者l活动(任务):组成流程定义的节点l活动实例:组成流程实例的元素l流转:从一个节点到另一个几点这一行为l工作列表l工作流引擎:工作流的核心组件,对流程实例、任务实例以及其状态进行管理北京传智播客教育 我们已经介绍了工作流的基本知识 我们看看jBPM中与之对应的一些概念和名词北京传智播客教育 概念 : ProcessDefinitionl定义了流程的业务逻辑,包含业务节点和流转。是有向图结构。北京传智播客教育 概念 : ProcessInstance

7、lProcessDefinition 执行期间的体现包含了流程定义被解释之后的一些信息,诸如开始时间,结束时间其他相关联的信息北京传智播客教育 概念 : Task TaskInstancelTask是ProcessDefinition的组成部分,定义了活动的具体内容lTaskInstanceTask被解释执行时的信息,开始时间,结束时间,参与者idcreate start end 三种状态北京传智播客教育 概念 : Actorl活动的参与者ljBPM目前只需要actor的Id,对actor的具体解释是由业务应用层负责l任务创建时可以指定任务的参与者,也可以不指定l在一般的系统中,不建议采用jB

8、PM的identity组件北京传智播客教育 概念:Tokenl概念来自于petri网l是一个指针(运行期的概念),代表着一条执行路径,指向当前流程中正在执行的节点l在实例的运行期间,tokens 可能是一树形结构l同一时刻,可能存在多个token,但是只有一个root token北京传智播客教育 我们已经介绍了jBPM的工作流主要元素我们看看jBPM中与之对应的工作机制jBPM如何加载流程如何启动流程 如何执行任务 如何完成任务北京传智播客教育 jBPM API : 典型应用-流程定义操作JbpmContext jbpmContext = JbpmConfiguration.getInstan

9、ce().createJbpmContext();GraphSession graphSession = jbpmContext.getGraphSession(); ProcessDefinition processDefinition = ProcessDefinition .parseXmlResource(org/ministone/training/jbpm/processdefinition.xml);graphSession. deployProcessDefinition(processDefinition); jbpmContext.close();北京传智播客教育 如何开始

10、流程JbpmContext jbpmContext =JbpmConfiguration.getInstance.createJbpmContext();GraphSession graphSession = jbpmContext.getGraphSession();ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);/ create process instance from definitionProcessInstance processInstanc

11、e = new ProcessInstance(processDefinition);/此时,rootToken指向流程定义的第一个节点jbpmContext.save(processInstance);jbpmContext.close();北京传智播客教育 如何设置变量l变量用来处理工作流相关数据l典型代码:JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();GraphSession graphSession = jbpmContext.getGraphSession();Process

12、Instance processInstance = graphSession.loadProcessInstance(Long.parseLong(instanceId);ContextInstance contextInstance = processInstance.getContextInstance();contextInstance.setVariable(vname, value);/设置到了rootTokenjbpmContext.save (processInstance);jbpmContext.close();北京传智播客教育 如何给任务设置参与者l用变量传递参与者的ID

13、值一般在web层确定l定义配置: lHandler 实现public class UserIdAssignmentHandler implements AssignmentHandler public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception String actorId = (String) executionContext.getVariable(userId); assignable.setActorId(actorId); 北京传智播客教育 如何获取工作列

14、表l获取待办列表:JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();/只能获取尚未完成的任务列表(待办任务)List list = taskMgmtSession.findTaskInstances(userId);jbpmContext.close();l如果需要灵活的列表获取接口,需要直接使用hibernate session对象对数据库进行查询诸如按时

15、间、按流程、分页等附加要求北京传智播客教育 如何执行任务l典型代码:JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id);taskInstance.start();jbpmContext.save(taskInstance);jbpm

16、Context.close();lstart()方法的调用标识着一个任务的执行的开始:任务的开始时间会被填充在实际业务中类似签收签收的作用也可以带入参数(actorId)来主动参与任务的执行北京传智播客教育 如何结束任务l典型代码:JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();TaskInstance taskInstance = taskMgmtSes

17、sion.loadTaskInstance(id);taskInstance.end();jbpmContext.save(taskInstance);jbpmContext.close();lend 方法的调用标识当前任务实例的结束:任务的结束时间会被填充下一个节点的初始化当前任务的结束和下一个流程节点的开始是在一个事务内完成,从而保证了数据的完整性北京传智播客教育 jBPM API : JbpmContext(一)l职责对实例数据的操作用于获取GraphSession对象;l主要方法Connection getConnection()Session getSession()public G

18、raphSession getGraphSession()public TaskMgmtSession getTaskMgmtSession()public LoggingSession getLoggingSession()public SchedulerSession getSchedulerSession() public void close() 北京传智播客教育 jBPM API : JbpmContext(二)l典型用法 JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();try

19、 TaskInstance taskInstance = . .do your process operations. jbpmContext.save(taskInstance); catch(Throwable) /process exception here finally jbpmContext.close(); 北京传智播客教育 jBPM API : GraphSessionl职责Graph 相关的数据持久化操作主要是ProcessDefinition和ProcessInstancel主要方法 public void saveProcessDefinition( ProcessDef

20、inition processDefinition )public ProcessDefinition loadProcessDefinition(long processDefinitionId)public ProcessDefinition findProcessDefinition(String name, int version) public List findAllProcessDefinitions() public void saveProcessInstance(ProcessInstance processInstance) public ProcessInstance

21、loadProcessInstance(long processInstanceId) public List findProcessInstances(long processDefinitionId)Delete方法北京传智播客教育 jBPM API : TaskMgmtSessionl职责TaskInstance相关的数据查询查询操作TaskInstance数据通过ProcessInstance进行保存l主要方法public List findTaskInstances(String actorId)public List findPooledTaskInstances(String actorId)public List findTaskInstancesByToken(long tokenId) public TaskInstance loadTaskInstance(long taskInstanceId)没有sav

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论