开源产品分析-jbpm

上传人:qt****68 文档编号:54364416 上传时间:2018-09-11 格式:PPT 页数:38 大小:773KB
返回 下载 相关 举报
开源产品分析-jbpm_第1页
第1页 / 共38页
开源产品分析-jbpm_第2页
第2页 / 共38页
开源产品分析-jbpm_第3页
第3页 / 共38页
开源产品分析-jbpm_第4页
第4页 / 共38页
开源产品分析-jbpm_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《开源产品分析-jbpm》由会员分享,可在线阅读,更多相关《开源产品分析-jbpm(38页珍藏版)》请在金锄头文库上搜索。

1、开源产品分析JBPM,小组:NO.21 成员:陈云锋 王小建雷 淳,一、工作流相关概念,工作流:工作流管理联盟(W FMC )给出定义:工作流是一类够完全或者部分自动执行的经营过程, 它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。工作流管理系统:是一个软件系统, 它完成工作流的定义和管理, 并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。,二、工作流管理系统,工作流管理系统的构成: 1、工作流引擎(核心)定义流程规则和执行流程 2、工作流设计器(如JBPM自带的设计器或者flex) 3、流程操作 4、工作流客户端程序 5、流程监控 6、表单设计器 7、

2、与表单的集成 8、与应用程序集成,三、JBPM概述,BPM:BPM是指业务流程管理,多用在企业的多个系统之间,用来实现多个系统的协同(包括多个业务系统之间的数据交互)。JBPM:是基于java实现的流程业务处理框架(Business Process Management)。是一个工作流引擎,它能够支撑企业的流程性业务应用,实现流程的自动化。 特点:没有采用WFMC的规范xPDL(尤其是业务定义部分)强大的业务逻辑描述能力(jPDL)核心组件是流程调度引擎(核心调度算法)轻量级,core engine无须运行于J2EEContainer采用hibernate作为数据持久化的工具,兼容多种数据库简

3、单易用,灵活、可扩展,同一需求有多种解决策略,四、JBPM架构分析,五、JBPM主要功能,流程建模功能,eclipse的plugin实现可视化的流程编辑功能 流程定义及实例的持久化功能,通过hibernate将流程定义持久化到数据库 流程的自动导航,即对任务的调度(核心调度引擎) 对外部应用的调用,通过Event-Action机制实现 流程监控,六、JBPM主要套件(JPDL),JPDL Designer:流程定义设计器,流程建模工具(流程定义文件) JPDL Library:流程执行引擎 WebConsole:参与者和流程执行环境的交互界面,流程运行期间的监控工具,七、JBPM编程的核心概念

4、,start-state end-state Node token decision fork/join ProcessDefinition ProcessInstance JbpmConfiguration JbpmContext,Action Event Task TaskInstance,七、JBPM编程的核心概念,工作流引擎(engine): 核心组件,负责生成流程运行时的各种实例及数据,以及监视和管理流程的运行; 流程定义(ProcessDefinition): 预先定义的业务逻辑; 流程实例(ProcessInstance): 业务的实际流转过程; 参与者(Actor): 任务的参

5、与者(可能是人也可能是角色或是组织等); 任务(Task):业务逻辑上定义的需要呈现给参与者参与处理的元素; 任务实例(TaskInstance):业务实际流转过程中,生成的需要参与者进行参与的实际内容; 流转(Transition):连接业务逻辑不同节点的桥梁,也是业务实例进行流转的依据; 令牌(Token):概念源于PetriNet,可记录流程当前状态及记录父子流程及分支等; 信号(signal):触发流程进行流转的一个标志; 工作列表(worklist):根据实际应用的需求,需要展示给参与者的任务实例列表。,八、图例说明JBPM概念(流程定义),流程定义是一种采用xml语法表达的有向图结

6、构 流程定义文件包包括: processdefinition.xml processimage.jpg gpd.xml 三个文件 processdefinition.xml为流程定义的xml表示文件 processimage.jpg为其图片展示 gpd.xml为定义文件上各节点位置信息,JBPM的过程建模采用的是改良了的UML 活动图。,八、图例说明JBPM概念(流程定义),八、图例说明JBPM概念(流程定义),流程定义文件中的各种结点关系,八、图例说明JBPM概念(流程定义),流程定义文件对应的源代码,八、图例说明JBPM概念(流程执行),九、JBPM流程引擎核心调度过程,十、JBPM工作流

7、应用一般开发步骤,分析业务流程、用JPDL对业务流程进行建模(流程定义文件) 部署流程定义(即把流程定义对象持久化到数据库) 创建和启动流程实例(如创建公文) 获取待办任务(核心) 执行任务(核心) 提交(结束)任务,十一、JBPM中与之对应的API,JBPM API : 典型应用-流程定义部署JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource(“

8、*/processdefinition.xml“);/部署流程定义,如果已经存在同名的定义,则版本号会自动累加 jbpmContext. deployProcessDefinition(processDefinition);jbpmContext.close();,十一、JBPM中与之对应的API,如何加载和开始流程JbpmContext jbpmContext =JbpmConfiguration.getInstance.createJbpmContext(); GraphSession graphSession = jbpmContext.getGraphSession(); /加载流程定

9、义 ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);/ 创建流程实例:启动流程 ProcessInstance processInstance = new ProcessInstance(processDefinition);/此时,rootToken指向流程定义的第一个节点jbpmContext.save(processInstance);jbpmContext.close();,十一、JBPM中与之对应的API,如何获取工作列表JbpmContext

10、jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession();/只能获取尚未完成的任务列表(待办任务) List list = taskMgmtSession.findTaskInstances(userId);jbpmContext.close(); 在实际的应用中,需要自己写DAO来获取各种列表,例如待签、待办、已办、办结等列表,而且可以进行条件查询,分页等,十一、JBPM中与之对应的AP

11、I,如何执行任务 典型代码:JbpmContext jbpmContext =JbpmConfiguration.getInstance().createJbpmContext(); TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id); taskInstance.start(); jbpmContext.save(taskInstance); jbpmContext.close();

12、start(): 标识着一个任务的执行的开始:任务的开始时间会被填充 在实际业务中类似签收的作用 也可以带入参数(actorId)来主动参与任务的执行,十一、JBPM中与之对应的API,如何结束任务 典型代码:JbpmContext jbpmContext =JbpmConfiguration.getInstance().createJbpmContext(); TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); TaskInstance taskInstance = taskMgmtSession.loadT

13、askInstance(id); taskInstance.end(); jbpmContext.save(taskInstance); jbpmContext.close();end方法的调用: 当前任务实例的结束:任务的结束时间会被填充 下一个节点的初始化(实际上调用了token.signal()方法) 当前任务的结束和下一个流程节点的开始是在一个事务内完成,从而保证了数据的完整性,十一、JBPM中与之对应的API,如何设置(流程实例)变量 变量用来处理工作流相关数据 不需要定义 和流程实例信息一起被持久化 变量的访问和赋值是在某一个token上进行的,缺省时,是基于root Token

14、变量的作用域和所属的token的生命周期一致,分支上同名变量互不影响,和parent的同名变量也互不影响典型代码: JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); GraphSession graphSession = jbpmContext.getGraphSession();ProcessInstance processInstance = graphSession.loadProcessInstance(Long.parseLong(instanceId);ContextInst

15、ance contextInstance = processInstance.getContextInstance(); contextInstance.setVariable(vname, value);/设置到了rootTokenjbpmContext.save (processInstance); jbpmContext.close();,十一、JBPM中与之对应的API,JBPM API : JbpmContext 职责 封装了对流程实例的持久化操作 用于获取GraphSession对象; 主要方法 Connection getConnection() Session getSessi

16、on() public GraphSession getGraphSession() public TaskMgmtSession getTaskMgmtSession() public LoggingSession getLoggingSession() public SchedulerSession getSchedulerSession() public void close(),十一、JBPM中与之对应的API,JBPM API : GraphSession 职责 Graph 相关的数据持久化操作 主要是ProcessDefinition和ProcessInstance 主要方法pub

17、lic 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方法,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号