• 1. 第二章 工作流管理系统实现1
  • 2. 主要内容工作流管理系统实现模型 工作流管理系统实现jBPM2
  • 3. 2.1 工作流管理系统实现模型2.1.1 通用的实现模型 2.1.2 可选的实现模型3
  • 4. 2.1.1 通用的实现模型流程定义工具(Process Definition Tool) 流程定义工具用来创建业务流程的描述,该描述以计算机能够处理的形式表示。 流程定义(Process Definition) 包含工作流执行软件运行过程中业务流程的所有详细信息 工作流执行服务(Workflow Enactment Service) 解释业务流程的描述、控制流程实例的运行、调度业务活动、向用户任务表添加任务并在必要的时候调用应用程序工具。 4
  • 5. 工作流相关数据和应用数据(Workflow Relevant Data and Application Data) 工作流引擎中流程导航的判断,或者其它一些控制操作,都是以工作流应用程序产生或者更新的数据为基础的。这些数据为工作流相关数据(有时候也称为“案例数据”)。这些数据可以被工作流引擎访问,同时,这也是工作流引擎唯一可以访问的数据类型。 任务表(Worklists) 任务表由工作流管理系统维护,它负责把任务分配给相应的用户,而这个过程对工作流参与者可能是不可见的。 2.1.1 通用的实现模型5
  • 6. 任务表处理器和 (Worklist Handler) 任务表处理器是一个软件组件,管理工作流参与者与工作流执行服务间的交互。任务表处理器负责请求用户关心的任务进展情况,并通过任务表与工作流执行服务交互。 用户接口(User Interface) 用户接口是一个单独的软件组件,负责维护用户的界面风格,并控制用户的本地接口。 2.1.1 通用的实现模型6
  • 7. 管理操作(Supervisory Operations) 工作流管理系统中有许多的管理功能;这些管理功能通常以工作站点或者用户的管理权限为基础。 外部和内部接口(Exposed and Embedded Interfaces) 2.1.1 通用的实现模型7
  • 8. 2.1.2 可选的实现模型在一个具体的产品实现中,人们可以采用多种不同的方法来实现工作流管理系统的通用模型 集中式或者分布式的工作流执行服务 任务表处理器的位置与分配机制 8
  • 9. 工作流执行软件 按照引擎的多少和部署方式划分 2.1.2 可选的实现模型9
  • 10. 工作流客户端软件 2.1.2 可选的实现模型10
  • 11. 2.2 工作流管理系统实现jBPM2.2.1 jBPM概述 2.2.2 安装jBPM 2.2.3 使用jBPM 流程设计工具 2.2.4 设计业务流程 2.2.5 执行业务流程11
  • 12. 2.2.1 jBPM概述 JBoss jBPM是一个灵活的流程语言框架,其中jPDL(jBPM Process Definition Language, jBPM流程定义语言)就是建立在该框架之上的一种流程定义语言。jPDL使用一种直观的流程定义语言来描述企业业务流程中的任务、活动、定时器等操作,然后把这些操作通过变迁和状态机制绑定在一起,实现了一个强大的、易扩展的流程控制机制。 12
  • 13. 2.2.1 jBPM概述jBPM架构13
  • 14. 2.2.2 安装jBPMjBPM目录结构 config:存放jBPM运行环境的配置文件模板 db:存放创建数据库模式的SQL脚本。 deploy:存放了jBPM中已打包可直接部署使用的应用程序。 designer:存放了jBPM的基于Eclipse的图形化流程定义工具。 doc:存放jBPM的Java API文档和用户参考手册。 examples:存放了jBPM的示例程序代码。 lib:存放使用jBPM时所依赖的Java库文件。 server:存放了一个已经预先配置好、包含了基于Web的jBPM控制台的JBoss应用服务器。 src:存放jBPM项目的Java源代码。 14
  • 15. 2.2.3 使用jBPM 流程设计工具安装流程设计工具 把插件拷贝到Eclipse安装目录下的plugins目录中 通过link文件的方式配置 在Eclipse安装目录下新建文件夹,并命名为links 进入links目录,新建一个文本文件,命名为org.jbpm.link 添加内容path = D:/OpenSource/jbpm-jpdl-3.2.3/designer 15
  • 16. 配置流程设计工具 配置jBPM安装路径2.2.3 使用jBPM 流程设计工具16
  • 17. 使用流程设计工具 创建jBPM项目2.2.3 使用jBPM 流程设计工具17
  • 18. 使用流程设计工具 jBPM项目结构 src\main\config存放项目的配置文件 src\main\java存放与项目相关的Java源代码 src\main\jpdl存放业务流程文件 src\test\java存放测试用例代码 2.2.3 使用jBPM 流程设计工具18
  • 19. 使用流程设计工具2.2.3 使用jBPM 流程设计工具19
  • 20. 2.2.4 设计业务流程业务流程设计 新建流程定义向导20
  • 21. 业务流程设计 设计流程2.2.4 设计业务流程 21
  • 22. 任务分配 实现AssignmentHandler分配接口 public class EnrollAssignmentHandler implements AssignmentHandler { …… public void assign(Assignable assignable, ExecutionContext executionContext) ….. } }2.2.4 设计业务流程22
  • 23. 任务分配 设置任务节点属性2.2.4 设计业务流程23
  • 24. 2.2.5 执行业务流程使用日志组件输出运行信息 配置Log4J #设置日志根级别和输出路径 log4j.rootLogger=DEBUG, CONSOLE #日志输出路径——控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout #日志输出格式——时间 日志优先级 类名 输出信息 log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %C{1} : %m%n #日志输出级别 log4j.logger.org.jbpm=INFO 24
  • 25. 测试流程运行过程 ## 流程执行路径进入开始节点 11:09:14,312 INFO HelloWorldTest : 现在的节点是: 开始 ## 类EnrollAssignmentHandler设置任务的参与者 11:09:14,343 INFO EnrollAssignmentHandler : The actor is student 11:09:14,343 INFO HelloWorldTest : 现在的节点是: 注册 ## 类PrintActionHandler自动输出流程定义设定的信息 11:09:14,343 INFO PrintActionHandler : The message is Hello, World! 11:09:14,343 INFO HelloWorldTest : 现在的节点是: 输出信息 ## 执行路径进入结束节点,流程运行结束 11:09:14,343 INFO HelloWorldTest : 现在的节点是: 结 2.2.5 执行业务流程25
  • 26. 总结 随着技术的进步,工作流管理产品越来越丰富、应用也越来越广泛,但不同的产品实现之间的沟通壁垒却限制了人们使用工作流技术完成业务流程管理的初衷。因此,我们需要一个完整的工作流管理系统实现模型,用来规范混乱的工作流产品市场。 本章描述的实现模型则是对工作流产品组件结构的功能划分。26