开源产品分析-jbpm.ppt_第1页
开源产品分析-jbpm.ppt_第2页
开源产品分析-jbpm.ppt_第3页
开源产品分析-jbpm.ppt_第4页
开源产品分析-jbpm.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

开源产品分析JBPM 小组:NO.21 成员:陈云锋 王小建 雷 淳 一、工作流相关概念 l工作流:工作流管理联盟(W FMC )给出定义:工作流是一类够 完全或者部分自动执行的经营过程, 它根据一系列过程规则、文 档、信息或任务能够在不同的执行者之间进行传递与执行。 l工作流管理系统:是一个软件系统, 它完成工作流的定义和管理, 并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执 行。 二、工作流管理系统 l工作流管理系统的构成: l1、工作流引擎(核心)定义流程规则和执行流程 l2、工作流设计器(如JBPM自带的设计器或者flex) l3、流程操作 l4、工作流客户端程序 l5、流程监控 l6、表单设计器 l7、与表单的集成 l8、与应用程序集成 三、JBPM概述 lBPM:BPM是指业务流程管理,多用在企业的多个系统之间,用 来实现多个系统的协同(包括多个业务系统之间的数据交互)。 lJBPM:是基于java实现的流程业务处理框架(Business Process Management)。是一个工作流引擎,它能够支撑企业的流程性业 务应用,实现流程的自动化。 l特点:没有采用WFMC的规范xPDL(尤其是业务定义部分) 强大的业务逻辑描述能力(jPDL) 核心组件是流程调度引擎(核心调度算法) 轻量级,core engine无须运行于J2EEContainer 采用hibernate作为数据持久化的工具,兼容多种数据库 简单易用,灵活、可扩展,同一需求有多种解决策略 四、JBPM架构分析 五、JBPM主要功能 流程建模功能,eclipse的plugin实现可视化的流程编 辑功能 流程定义及实例的持久化功能,通过hibernate将流 程定义持久化到数据库 流程的自动导航,即对任务的调度(核心调度引擎 ) 对外部应用的调用,通过Event-Action机制实现 流程监控 六、JBPM主要套件(JPDL) lJPDL Designer:流程定义设计器,流程建模工具(流程定义文件) lJPDL Library:流程执行引擎 lWebConsole:参与者和流程执行环境的交互界面,流程运行期 间的监控工具 七、JBPM编程的核心概念 lstart-state lend-state lNode ltoken ldecision lfork/join lProcessDefinition lProcessInstance lJbpmConfiguration lJbpmContext lAction lEvent lTask lTaskInstance 七、JBPM编程的核心概念 l工作流引擎(engine): 核心组件,负责生成流程运行时的各种实例及数据,以及 监视和管理流程的运行; l流程定义(ProcessDefinition): 预先定义的业务逻辑; l流程实例(ProcessInstance): 业务的实际流转过程; l参与者(Actor): 任务的参与者(可能是人也可能是角色或是组织等); l任务(Task):业务逻辑上定义的需要呈现给参与者参与处理的元素; l任务实例(TaskInstance):业务实际流转过程中,生成的需要参与者进行参与的 实际内容; l流转(Transition):连接业务逻辑不同节点的桥梁,也是业务实例进行流转的依据 ; l令牌(Token):概念源于PetriNet,可记录流程当前状态及记录父子流程及分支等 ; l信号(signal):触发流程进行流转的一个标志; l工作列表(worklist):根据实际应用的需求,需要展示给参与者的任务实例列表。 八、图例说明JBPM概念(流程定义) l流程定义是一种采用xml语法表达的有向图结构 l流程定义文件包包括: processdefinition.xml processimage.jpg gpd.xml 三个文件 lprocessdefinition.xml为流程定义的xml表示文件 lprocessimage.jpg为其图片展示 lgpd.xml为定义文件上各节点位置信息 JBPM的过程建模采用的是改良了的UML 活动图。 八、图例说明JBPM概念(流程定义) 八、图例说明JBPM概念(流程定义) l流程定义文件中的各种结点关系 八、图例说明JBPM概念(流程定义) l流程定义文件对应的源代码 八、图例说明JBPM概念(流程执行) 九、JBPM流程引擎核心调度过程 十、JBPM工作流应用一般开发步骤 分析业务流程、用JPDL对业务流程进行建模(流程定义文件) 部署流程定义(即把流程定义对象持久化到数据库) 创建和启动流程实例(如创建公文) 获取待办任务(核心) 执行任务(核心) 提交(结束)任务 十一、JBPM中与之对应的API JBPM API : 典型应用-流程定义部署 JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); ProcessDefinition processDefinition = ProcessDefinition .parseXmlResource(“*/processdefinition.xml“); /部署流程定义,如果已经存在同名的定义,则版本号会自动累加 jbpmContext. deployProcessDefinition(processDefinition); jbpmContext.close(); 十一、JBPM中与之对应的API 如何加载和开始流程 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(); 十一、JBPM中与之对应的API 如何获取工作列表 JbpmContext jbpmContext = JbpmConfiguration.getInstance().createJbpmContext(); TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); /只能获取尚未完成的任务列表(待办任务) List list = taskMgmtSession.findTaskInstances(userId); jbpmContext.close(); l在实际的应用中,需要自己写DAO来获取各种列表,例如待签、 待办、已办、办结等列表,而且可以进行条件查询,分页等 十一、JBPM中与之对应的API 如何执行任务 典型代码: JbpmContext jbpmContext =JbpmConfiguration.getInstance().createJbpmContext(); TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id); taskInstance.start(); jbpmContext.save(taskInstance); jbpmContext.close(); start(): 标识着一个任务的执行的开始:任务的开始时间会被填充 在实际业务中类似签收的作用 也可以带入参数(actorId)来主动参与任务的执行 十一、JBPM中与之对应的API 如何结束任务 典型代码: JbpmContext jbpmContext =JbpmConfiguration.getInstance().createJbpmContext(); TaskMgmtSession taskMgmtSession = jbpmContext.getTaskMgmtSession(); TaskInstance taskInstance = taskMgmtSession.loadTaskInstance(id); taskInstance.end(); jbpmContext.save(taskInstance); jbpmContext.close(); end方法的调用: 当前任务实例的结束:任务的结束时间会被填充 下一个节点的初始化(实际上调用了token.signal()方法) 当前任务的结束和下一个流程节点的开始是在一个事务内完成,从而保证了 数据的完整性 十一、JBPM中与之对应的API 如何设置(流程实例)变量 变量用来处理工作流相关数据 不需要定义 和流程实例信息一起被持久化 变量的访问和赋值是在某一个token上进行的,缺省时,是基于root Token 变量的作用域和所属的token的生命周期一致,分支上同名变量互不影响,和 parent的同名变量也互不影响 l典型代码: 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(); 十一、JBPM中与之对应的API JBPM API : JbpmContext l职责 封装了对流程实例的持久化操作 用于获取GraphSession对象; l主要方法 Connection getConnection() Session getSession() public GraphSession getGraphSession() public TaskMgmtSession getTaskMgmtSession() public LoggingSession getLoggingSession() public SchedulerSession getSchedulerSession() public void close() 十一、JBPM中与之对应的API lJBPM API : GraphSession l职责 Graph 相关的数据持久化操作 主要是ProcessDefinition和ProcessInstance l主要方法 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方法 十一、JBPM中与之对应的API JBPM API : TaskMgmtSession l职责 TaskInstance相关的数据查询操作 TaskInstance数据通过ProcessInstance进行保存 l主要方法 public List findTaskInstances(String actorId) public List findPooledTaskInstances(String actorId) public List findTaskInstancesByToken(long okenId) public TaskInstance loadTaskInstance(long taskInstanceId) 没有save方法,save是通过对processInstance的操作实现的 十二JBPM数据库模型 ljBPM数据实现说明 使用hibernate作为持久层,实现了多种类型数据库的兼容 总共33张表,全部以JBPM作为前缀(这提醒我们在同一个 数据库系统中,加入我们的业务表的时候,可以加入业务前 缀,从而方便数据库管理员进行管理) 定义信息:静态信息 执行信息:动态信息 十二、JBPM数据库模型 l创建JBPM数据库的三种方式: 1、采用程序方式创建 2、使用hibernate自动生成 3、根据JBPM提供的各类型数据库的sql自行生成 十二、JBPM数据库模型 JBPM_ACTION JBPM_BYTEARRAY JBPM_BYTEBLOCK JBPM_COMMENT JBPM_DECISIONCONDITIONS JBPM_DELEGATION JBPM_EVENT JBPM_EXCEPTIONHANDLER JBPM_JOB JBPM_LOG JBPM_MODULEDEFINITION JBPM_MODULEINSTANCE JBPM_NODE JBPM_VARIABLEINSTANCE JBPM_POOLEDACTOR JBPM_PROCESSDEFINITION JBPM_PROCESSINSTANCE JBPM_RUNTIMEACTION JBPM_SWIMLANE JBPM_SWIMLANEINSTANCE JBPM_TASK JBPM_TASKACTORPOOL JBPM_TASKCONTROLLER JBPM_TASKINSTANCE JBPM_TOKEN JBPM_TOKENVARIABLEMAP JBPM_TRANSITION JBPM_VARIABLEACCESS 十二、JBPM数据库模型(定义信息 ) JBPM_PROCESSDEFI NITION 流程定义,包含流程名称,版本等信息,外键指明 其start-state节点(在JBPM_NODE表里) JBPM_NODE 流程节点:包含节点的类型,名称,以及 action/subprocess/decisionexpression(均是外键) 等信息 JBPM_TASK 只包含任务类型的节点 JBPM_TRANSITION 定义中节点间流转信息 JBPM_MODULEDEFI NITION 流程定义中用到的module JBPM_ACTION定义中的action元素的信息 JBPM_EVENT 节点定义的事件信息 JBPM_VARIABLEACC ESS node或task的变量的访问级别 JBPM_DELEGATION流程定义中的java class的定义信息,各种handler 十二、JBPM数据库模型(定义信息 ) JBPM_SWIMLANE流程定义中定义的swimlane的信息 JBPM_DECISIONCONDITIO NS decision节点定义的条件信息 JBPM_TASKCONTROLLER记录task controller的delegate class信息 JBPM_EXCEPTIONHANDL ER action的exception handler的定义信息 JBPM_BYTEARRAY流程所对应的file definition module信息,外键指向 module_definition JBPM_BYTEBLOCK二进制内容的存放字段(对于byte型的变量) 十二、JBPM数据库模型(实例) JBPM_PROCESSINSTANC E process instance的运行期信息 JBPM_TASKINSTANCE task的实例信息 JBPM_VARIABLEINSTANC E 变量的实例信息 JBPM_SWIMLANEINSTANC E swimlane的实例信息 JBPM_POOLEDACTOR swimlane所对应的actor列表 JBPM_TASKACTORPOOL pooledactor和taskinstance的关联关系 JBPM_MODULEININSTANC E module实例的运行期信息 JBPM_TOKEN token的信息 JBPM_TOKENVARIABLEMA P token 和token对应的variablemap(读conte

温馨提示

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

评论

0/150

提交评论