• 1. 工作流教程沈东良 Edward Shen http://blog.csdn.net/shendl
  • 2. 内容工作流基本概念简介 工作流实现内幕 开源工作流引擎JBPM的介绍 工作流实例
  • 3. 一、工作流基本概念简介工作流基本概念简介
  • 4. 工作流的起源起源于:生产组织和办公自动化领域 目的:将工作分解,按照一定的规则和过程来执行并监控,提高效率,降低成本 并行工程和敏捷制造的提出
  • 5. 工作流基本概念 WfMC定义:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档信息或任务能够在不同的执行者之间传递与执行。 工作流是一种反映业务流程的计算机化的模型,实现经营过程集成与经营过程自动化而建立的可由工作流管理系统执行的业务模型 基本元素:任务,任务之间的关系
  • 6. 工作流的基本特征工作流是面向业务过程的技术,这与传统的面向功能的管理技术不同 工作流反映了业务过程的自动化,描述的是可由计算机系统支持运行的业务过程 工作流根据业务规则将系统中的各种资源相互关联,并协调完成整个业务过程
  • 7. 实际情况中的工作流广义:凡是由计算机软件系统控制其执行的过程都可以看做工作流 用途:通常用于过程自动化,将文档信息任务按照定义好的规则进行传递,最终将经营目标完成
  • 8. 工作流技术的优点是实现BPR(核心经营过程)的一个较好方法,对BPR进行建模、评价分析和实施 实现应用逻辑和过程逻辑分离,可以在不修改具体功能实现方式的情况下重组模型 把流程逻辑和执行代码分离,实现可配置
  • 9. 描述企业的经营过程应该主要说明: 1、要做什么,即目的或目标(整个工作流模型) 2、如何完成的,经过那些任务(活动)和步骤(执行活动和活动间连接) 3、参与者,有哪些部门,哪些人 4、采用了哪些方式或手段来完成(应用程序)
  • 10. 计算机销售过程的工作流描述1、用户发出订单,描述计算机配置和台数 2、公司收到订单 1)满足客户要求,继续 2)不满足客户要求,拒绝 3、检查订单(3个任务并发执行) 1)计算价格 2)检查库存部件是否满足要求 3)进行配置检查,满足订单要求 4、决策 1)通过检查,继续进行 2)未通过检查,则向用户解释原因 5、等待接收确认,并要求付款 6、发出通知 7、装配计算机 8、送货
  • 11. 图例
  • 12. 银行取款过程的工作流描述1、客户填写取款单 2、银行出纳接收取款单和客户存折 3、检查客户信息: 1)余额不足,要求重写取款单,返回步骤1 2)余额足够,继续进行 4、客户输入密码: 1)密码正确,继续进行 2)密码错误,重新输入;3次错误,退出执行 5、出纳取出相应现金,并在存折上记录 6、将现金和存折交给客户
  • 13. 图例
  • 14. 工作流管理系统WfMC定义:它是一个软件系统,完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行 指运行在一个或多个工作流引擎的软件上用于定义、实现和管理工作流运行的一套软件,人机交互,推进工作流实例的执行,并监控其工作状态 工作流管理系统可称为企业的业务操作系统
  • 15. 工作流管理系统的功能一、建立阶段功能 主要是工作流过程和相关活动的定义和建模功能 二、运行阶段的控制功能 在一定运行环境下,执行工作流过程,并完成每个过程中活动的排序和调度 三、运行时的人机交互 执行过程中用户和应用工具之间的交互
  • 16. 过程建模主要解决:根据目标和系统约束条件,将系统中的活动组织为适当的经营过程的问题 作用: 1)描述企业的经营过程,供流程分析和优化使用 2)在不同组织和信息系统间共享信息,实现一个共同的标准和企业动态联盟 3)研究开发新的经营过程,满足不同需求和结构演化
  • 17. 工作流运行控制核心:工作流管理软件(工作流引擎)创建、删除活动的执行和控制过程模型与现实实际过程连接通过工作流执行服务、应用软件和操作人员交互来完成
  • 18. 工作流中的人机交互一、模型定义 创建、修改、发布业务过程模型 由企业管理人员完成 二、人机交互 按照工作流任务管理器提供的任务,完成具体的业务处理 由企业业务人员完成 三、系统运行状态监控 检查、监视系统的运行状况,对意外情况进行紧急处理,如终止恢复某个实例的运行,改变某个活动的状态,以使系统继续正常运行 由高级系统管理员完成
  • 19. 工作流管理系统的实施(一)1、模型建立:将企业实际经营过程转化为工作流模型 2、实例化阶段:为每个过程设定运行参数,并分配资源(生产资源,人力,应用) 3、模型执行阶段:完成人机交互和应用的执行,并对执行情况进行监控跟踪
  • 20. 工作流管理系统的循环(二)
  • 21. 工作流管理系统的体系结构
  • 22. 几种数据 工作流控制数据【状态】:标识每个过程和活动实例的状态,由工作流引擎直接控制。 工作流相关数据【储存】:标识过程实例状态转换条件,工作流管理系统根据它来选择下一个活动。可以被工作流应用程序访问和修改。 工作流应用数据:由应用程序操作,是企业完成具体业务功能所需要的数据
  • 23. 工作流参考模型
  • 24. 工作流模型与建模工具工作流模型包含了能够满足工作流管理系统执行的过程的描述,该描述包含了所有需要的信息。 如:开始结束条件、活动、规则、用户需完成的任务、被调应用、涉及角色等 WfMC制定了一个公共元模型,定义了一套API(接口1)
  • 25. 过程元模型
  • 26. 接口1
  • 27. 工作流引擎工作流引擎,提供过程实例的运行环境,功能有 1、实例化及执行过程模型:根据初始条件和运行参数实例化,运行并管理实例 2、为过程和活动的执行进行导航:启动和终止实例,根据条件决定串行或并行执行后续活动,给用户提供相关信息,启动相应应用程序 3、与外部资源交互完成各种活动: 客户应用接口:任务列表管理器向用户提供任务列表供用户选择,并记录工作项的完成情况。由用户完成选择的相应的任务,必要的时候调用相应的工具来完成。完成后,用户修改任务项的状态。 如:在完成对产品招标标书评审后,业务员向供应商发出竞标成功通知,并签订合同 直接调用应用接口:由工作流引擎直接调用相应的应用,应用将执行情况反馈给工作流引擎 4、维护工作流控制数据和工作流相关数据:维护内部信息,协调恢复各种检查数据和恢复重起数据,向用户提供相关信息
  • 28. 工作流引擎它是工作流执行服务的核心,主要完成: 1、对过程定义进行解释 2、控制过程实例的创建,激活,挂起,终止等 3、控制实例跳转,包括串行、并行操作,工作流相关数据的解释 4、提供支持用户操作的接口 5、维护工作流控制数据和相关数据,在应用和用户之间传递工作流相关数据 6、提供激活外部应用程序和访问工作流相关数据的接口 7、提供控制、管理和监督工作流实例执行情况的功能
  • 29. 过程实例状态转换几种状态: 1、起始:过程实例生成,但还没满足执行条件 2、准备运行:过程实例已经可以执行,还不满足开始执行第一个活动并生成一个任务项的条件 3、运行中:一个或多个活动已经开始执行 4、挂起:过程实例正在运行,但处于静止状态,除非有一个“重启”命令或外部事件促使该过程实例回到准备状态,否则所有活动都不会运行 5、结束:过程实例已经完成,并满足结束该过程实例的条件,系统将执行结束后操作,并删除该过程实例 6、终止:过程实例正常结束前被迫停止(错误或异常),系统将执行补救并删除该过程实例
  • 30. 活动实例运行状态1、未开始:活动实例已经生成但没有激活 2、运行中:活动实例已被激活,并运行中 3、挂起:出现异常或错误,活动实例被暂时挂起,活动处于静止状态 4、结束:活动实例已经执行完毕,系统执行活动结束后的导航工作,激活下一个符合启动条件的活动实例
  • 31. 客户端功能客户端功能是指用户操作工作流管理系统分配的任务或者活动的功能 由工作流任务表管理器和用户操作共同完成 4种通过任务表实现客户与引擎之间的通讯方式: 1、基于主机方式模型:适合集中情况,客户端应用程序,任务表管理器,任务表,和工作流机都在中央服务器上,用户通过终端获得任务表 2、共享的文件库模型:客户应用程序和任务表管理器在用户端,工作流机在服务器上。任务表位于客户应用和工作流机都能访问的共享文件系统中 3、电子邮件模型:客户应用程序和任务表管理器在用户端,工作流机在服务器上。所有通讯使用电子邮件。任务表一般位于客户端 4、过程调用或消息传递模型:客户应用程序和任务表管理器在用户端,任务表和工作流机在服务器。用户通过RPC或者其他机制来活动任务表
  • 32. 激活应用时的信息提供在激活某些应用时,必须提供一些相关信息:如应用的名称,地址 1、可以直接存放在工作流任务列表中 2、可以通过工作流机和工作流任务表管理器之间提供的交互接口来传递(客户应用可以通过编制一个接口函数通过直接调用的应用来获得必要信息)
  • 33. 直接启动应用与应用代理模型定义为应用启动提供了足够的信息,如应用程序类型,地址等,因此工作流机可以激活该程序并执行相应动作。 但由于分别性和异构性,在启动应用的时候需要用到应用代理,以提高系统柔性和适应性
  • 34. 系统管理和监控工具能对工作流在整个组织内的流动状况进行监视,并提供一系列的管理功能,实现安全性、过程控制和授权操作等方面的管理 1、建立、设置和优化组成工作流管理系统的各个软件 2、对过程模型进行实例化 3、将过程模型中的角色实例化 4、将过程实例、活动实例和数据分发到各个工作流机中 5、启动、挂起、恢复和终止过程实例 6、管理
  • 35. 三、JBPM及其他工作流引擎介绍
  • 36. OSWorkFlowOSWorkflow----特色,灵活 OSWorkflow是一个灵活的工作流引擎,设计成可嵌入到企业应用程序中。它提供了许多的持久化API支持包括:EJB,Hibernate,JDBC和其它。OSWorkflow还可以与Spring集成。
  • 37. Osworkflow是完全用java语言编写的开放源代码的工作流引擎,具有显著的灵活性及完全面向有技术背景的用户的特点。用户可以根据自身的需求利用这款开源软件设计简单或是复杂的工作流。通过使用,用户就可以把工作中心放在业务和规则的定义上,而不需通过硬编码的方式实现一个Petri网或是一个有穷自动机。用户可以以最小的代价把osworkflow整合到自己的程序中来。
  • 38. Osworkflow几乎提供了所有用户可能在实际流程定义中需要用到的工作流构成元素,如:环节(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)、角色(roles)等等。
  • 39. SharkShark1.0完全是根据WFMC规范实施的,可扩展功能的工作流引擎,它利用xpdl来定义流程,同时还包括服务器端的用于活动节点执行的WFMC工具代理API。这个工具代理API可以服务于JavaScript, JDBC access, EJB access, pure Java classes, Corba calls, EM ail, Webservice调用。流程的存储和活动的实例化都是通过一个可定义的持久层API来完成。
  • 40. Shark1.0使用自带的一个轻量级Enhydra DODS O/R mapping作为自己的标准持久层,但是它同时也支持重量级的J2EE EJB持久层。Shark1.0中的每个组件例如持久层,事物管理器,脚本引擎,流程库,都是可以按照标准实施运用的,而且还可以被具体项目的模块扩展和替换。
  • 41. 最先进的开源工作流引擎JBpm2004-2009 JBoss jBPM 是一个灵活的,易扩展的工作流管理系统。JBoss jBPM有一套直观的流程建模语言,这套语言能用任务(task),异步通信的等待状态(wait state ),定时器(timer),自动化的动作(automated action)等来图形化的表示业务流程。把这些操作集成在一起,JBoss jBPM拥有强大的,易扩展的控制流程机制。
  • 42. JBoss jBPM对外依赖程度很小,你完全可以像用java的类库一样用它。并且它也可以被部署在高性能的J2EE集群应用服务器上。 JBoss jBPM能通过配置运行在任何数据库上,并且能被部署在任何的应用服务器上。
  • 43. 流程建模语言jPDL jBPM业务程序定义语言jBPM Process Definition Language (JPDL),是jBPM使用的一套面向图表的流程建模语言。是一种特定领域语言(DSL)。 它是对WFMC(工作流管理联盟)提出的XML Processing Description Language (XPDL)语言的扩展,增加了一些jBPM自己的元素。
  • 44. jBPM的构造技术 jBPM是一个业务程序管理引擎,是一个工作流引擎。它实现了对jPDL的支持。它还实现了对BPEL的支持。 作为一个工作流引擎,就必须要处理“等待状态”。jBPM整合了Hibernate技术处理数据库,它创建了一系列的数据库表,持久化工作流引擎所需的“等待状态”。因此,jBPM支持所有Hibernate支持的数据库。
  • 45. jBPM还能够把Java对象持久化到数据库中。它能够把Hibernate支持的Java类的对象保存到数据库中,还能够把实现了Serializable接口的类的对象持久化到数据库中!具体的实现机制不详! 另外,jBPM还使用了JBoss Seam这个IOC容器。JBoss Seam非常类似于Spring,能够管理Java类的对象。
  • 46. 二、工作流实现技术内幕工作流的运作原理是状态图。 一个工作流程就是一个对象,对象在生命周期中处于多个状态中。 这些状态由一些对象、数据、人员驱动。 工作流需要定义状态的流程。一般使用xml文件进行定义。 工作流程定义需要持久化。 具体的工作流程实例需要持久化。
  • 47. 工作流程实例需要执行的方法需要参数,也需要持久化 工作流的节点有2类:1)程序自动处理2)人员手工处理—任务分派,角色 工作流程需要版本控制
  • 48. 自己设计工作流引擎工作流可以抽象为状态图 对象的几种状态
  • 49. 使用状态模式实现工作流引擎 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 适用性 一个对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为。
  • 50. 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。通常, 有多个操作包含这一相同的条件结构。S t a t e模式将每一个条件分支放入一个独立的类中。这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化。
  • 51. 对象内部根据所处状态切换currentState,执行state的方法。 重构:根据流程配置,确定状态的切换路径。 State的执行方法,会切换对象本身的一些属性。以使对象进入某种状态。
  • 52. 增加持久化能力专业的工作流需求,需要持久化能力。能够从宕机中恢复状态能力。 流程配置可能会修改。需要为流程配置提供版本标识。旧流程实例按旧流程走,新流程实例按新流程走。 把状态切换、持久化等提取出来,成为一个独立的模块,这就是工作流引擎。 JBpm基本就是按照这个流程和思路来实现的。
  • 53. JBPM的设计者洞悉了工作流的本质,因此JBPM工作流引擎是最简单、最实用、最先进的工作流引擎。
  • 54. JBPM是JBOSS组织的开源产品。秉承JBOSS一贯的自成体系的特点。使用: Hibernate。 因此,必须使用Hibernate。如果需要使用JBpm引擎,必须使用Hibernate,或者使用JTA关联JBPM的Hibernate。
  • 55. JBPM把工作流定义保存到数据库中,并提供版本号。这样,一个工作流可以有多个版本同时运行。 JBPM可以把工作流实例的参数保存在数据库中。 开发人员可以直接编辑HQL,操作JBPM的数据库,创建自己的业务逻辑。超强的定制能力,可以满足用户的任何需求!
  • 56. 编辑器 JBpm使用xml定义工作流程。因此JBPM工作流引擎编辑器就是一个实现Graph-XML映射的GUI程序。
  • 57.
  • 58.
  • 59.
  • 60.
  • 61. JBPM的配置 hibernate.queries.hbm.xml
  • 62. 5,桌面管理工具可以可视化查看所有工作流实例,可视化显示执行的状态。 JBPM每一个工作流实例的状态都保存在数据库中。通过读取数据库记录即可实现可视化监控工作执行状态的功能。
  • 63. 精选的节点 1,Start-Node 开始节点 可以拥有的事件 event-leave 2,End-Node 结束节点 可以拥有的事件 event-enter
  • 64. 3,Node 可以直接包含 action 可以拥有的事件   event-enter   event-leave
  • 65. 4, task-node任务,供西甲平台上的用户接管。 可以拥有的事件   event-enter   event-leave  
  • 66. 包含task任务 当业务程序实例的执行进入该节点时,这些任务的实例会被创建。 可以包括多个任务。 任务内部也使用事件。 任务-------》事件------》Action==Class
  • 67. 5,Fork 分叉 6,Join 合并 只有所有分支到达Join节点后,才能往下走流程。
  • 68. 整个执行流程: Start-Node(event—leave执行初始化任务)---Node/TaskNode等--EndNode(event-enter)
  • 69. JBPM4重大变革,简化
  • 70. 谢谢!沈东良 Edward Shen http://blog.csdn.net/shendl