工作流引擎ppt课件.pptx_第1页
工作流引擎ppt课件.pptx_第2页
工作流引擎ppt课件.pptx_第3页
工作流引擎ppt课件.pptx_第4页
工作流引擎ppt课件.pptx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

工作流引擎 定义 工作流引擎是指workflow作为应用系统的一部分 并为之提供对各应用系统有决定作用的根据角色 分工和条件的不同决定信息传递路由 内容等级等核心解决方案 工作流引擎包括流程的节点管理 流向管理 流程样例管理等重要功能 1 主流的工作流引擎 OSWorkflowOSWorkflow是一个灵活的工作流引擎 设计成可嵌入到企业应用程序中 它提供了许多的持久化API支持包括 EJB Hibernate JDBC和其它 OSWorkflow还可以与Spring集成jBpmjBpm是一个灵活可扩展的工作流管理系统 作为jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中 jBmp将工作流应用开发的便利性和杰出的企业应用集成 EAI 能力结合了起来 jBmp包括一个Web应用程序和一个日程安排程序 jBmp是一组J2SE组件 可以作为J2EE应用集群部署 ActivitiActiviti是一个业务流程管理 BPM 和工作流系统 适用于开发人员和系统管理员 其核心是超快速 稳定的BPMN2流程引擎 它易于与Spring集成使用 2 关于Activiti 背景介绍Activiti其核心是BPMN2 0的流程引擎 BPMN是目前被各BPM厂商广泛接受的BPM标准 全称为BusinessProcessModelandNotation 由OMG组织进行维护 2011年1月份发布了其2 0的正式版 BPMN2 0对比于第一个版本 其最重要的变化在于其定义了流程的元模型和执行语义 即它自己解决了存储 交换和执行的问题 这代表着BPMN2 0流程定义模型不仅仅可以在任何兼容BPMN2 0的引擎中执行 而且也可以在图形编辑器间交换 作为一个标准 BPMN2 0统一了工作流社区 Activiti是由jBPM的创建者TomBaeyens离开JBoss之后建立的项目 构建在开发jBPM版本1到4时积累的多年经验的基础之上 旨在创建下一代的BPM解决方案 同时Activiti选择了Apache许可 一方面是希望Activiti能有更长久的生命力 因为它不受任何个人或是公司的控制而是属于整个社区 另一方面更是希望这个宽松的许可能够让ActivitiBPM引擎和BPMN2 0被更广泛的采纳 使用和商业化 对于Java开发者来说 Activiti的首席架构师TomBaeyens曾提到 Activiti的首个目标就是要获得开发者的青睐 首先它在使用时极为方便 只是个jar文件 使用时仅需要将其放在类路径中 当然 Activiti也可以作为独立服务器的方式使用 同时Activiti提供了很多BPM高级工具 其中还包括开发了协作工具 使得开发人员 业务人员和运维人员能够更好的协同工作 本文将会介绍Activiti的基本概念 同时通过示例来介绍如何通过搭建Activiti开发环境和ActivitiAPI使用 同时也会接触到Activiti的一些工具 希望通过阅读这篇文章 Activiti能成为您在开发BPM系统时的一个选择 3 Activiti基本架构和服务组件介绍 Activiti流程引擎重点关注在系统开发的易用性和轻量性上 每一项BPM业务功能Activiti流程引擎都以服务的形式提供给开发人员 通过使用这些服务 开发人员能够构建出功能丰富 轻便且高效的BPM应用程序 图1 Activiti系统服务结构图 4 上图显示了引擎提供的所有功能组件 以下为各个服务的功能简介 RepositoryService Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件 部署文件和支持数据 例如BPMN2 0XML文件 表单定义文件 流程定义图像文件等 这些文件都存储在Activiti内建的Repository中 RepositoryService提供了对repository的存取服务 RuntimeService 在Activiti中 每当一个流程定义被启动一次之后 都会生成一个相应的流程对象实例 RuntimeService提供了启动流程 查询流程实例 设置获取流程实例变量等功能 此外它还提供了对流程部署 流程定义和流程实例的存取服务 TaskService 在Activiti中业务流程定义中的每一个执行节点被称为一个Task 对流程中的数据存取 状态变更等操作均需要在Task中完成 TaskService提供了对用户Task和Form相关的操作 它提供了运行时任务查询 领取 完成 删除以及变量设置等功能 IdentityService Activiti中内置了用户以及组管理的功能 必须使用这些用户和组的信息才能获取到相应的Task IdentityService提供了对Activiti系统中的用户和组的管理功能 ManagementService ManagementService提供了对Activiti流程引擎的管理和维护功能 这些功能不在工作流驱动的应用程序中使用 主要用于Activiti系统的日常维护 HistoryService HistoryService用于获取正在运行或已经完成的流程实例的信息 与RuntimeService中获取的流程信息不同 历史信息包含已经持久化存储的永久信息 并已经被针对查询优化 FormService Activiti中的流程和状态Task均可以关联业务相关的数据 通过使用FormService可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单 5 Activiti开发环境的配置 Activiti需要运行在JDK6或以上版本上 Activiti提供了基于Eclipse插件的开发工具和流程设计工具 需要Eclipse的版本为Juno或Indigo 如果尚未安装Eclipse 请从http www eclipse org downloads 下载安装最新版本的Eclipse集成开发环境 这些工具可以使用Eclipse的 Installnewsoftware 功能在线安装 安装方法如下 在Eclipse的Help菜单中选择InstallNewSoftware选项 在弹出菜单中 点击AddRepository按钮添加新的远程SoftwareRepository 如图3所示 在Location中添加http activiti org designer update 作为Repository的远程地址 当新的Repository添加完成后 Eclipse会自动获取Repository中的软件列表 如图4所示 ActivitiBPMN2 0Designer的最新版本为5 8 1 选择所有选项然后等待安装完成即可 6 图3 7 图4 8 当Eclipse插件安装完成后 选择File Newproject选项新建一个项目 此时如果可以看到如下图所示的Activiti项目选项 证明Activiti的Eclipse开发环境的配置已经顺利完成 9 Activiti功能示例 Activiti可以和多种Java企业级开发技术 Spring JPA 动态开发语言 groovy 以及WebService开发工具 CXF 结合使用 在Actitivi的安装目录中的workspace文件夹中包含了Activiti自身特性和与这些开发技术结合使用的Eclipse项目示例 activiti engine examples activiti spring examples activiti groovy examples activiti jpa examples activiti cxf examples等Eclipse项目 要使用这些示例项目 只需在Eclipse中使用 Import ExistingProjectsintoWorkspace 从文件系统中导入这些项目即可 activiti engine examples项目中包含了使用Activiti大部分主要功能的示例代码 这些代码使用的流程定义信息都已经部署在项目使用的H2内存数据库中 流程的执行中产生的信息也都会使用持久化API存储在该H2内存数据库中 10 使用ActivitiEclipse流程设计器设计Activiti流程定义 Activiti使用标准的BPMN2 0流程定义文件来描述工作流的定义 BPMN2 0流程定义文件是一个符合行业标准的XML格式的文件 在这个文件中包含了流程的流转序列 步骤节点以及各个节点上相关的用户 变量信息等流程元素 在BPMN2 0XML流程定义文件中还包含了各个流程元素在定义中的显示位置等信息 从而可以以图形化的方式来显示或编辑流程定义文件 目前已经有多种BPMN2 0流程定义文件的可视化编辑器 Activiti中提供了2种定义文件的可视化编辑器 WebApplication形式的ActivitiModeler和Eclipse插件形式的流程编辑器 ActivitiModeler必须部署在Web应用服务器中才能通过Web浏览器来使用而Eclipse插件形式的编辑器可以在Eclipse中直接使用 更好的结合了Activiti的流程设计和程序编码 在Activiti5 6版之后 ActivitiModeler已经不再包含在Activiti的下载中 本文使用Eclipse插件的流程设计工具来介绍BPMN2 0流程定义文件的使用 11 在Eclipse项目中可以直接通过创建ActivitiDiagram的形式来创建一个流程定义文件并在可视化编辑器中编辑 如果项目中已经存在BPMN2 0流程定义XML文件 双击该文件Eclipse插件会自动生成一个后缀为 bpmn的流程可视化编译文件 双击该文件可在可视化流程编辑器中打开该流程 下图是在可视化编辑器中打开一个流程定义文件的截图 12 当流程定义文件设计完成后 可以使用以下的API代码获取RepositoryService 并使用该服务将流程定义文件部署到Activiti流程引擎中 本代码示例中流程定义文件名称为leaveProcess bpmn 获取RepositoryServiceRepositoryServicerepositoryService processEngine getRepositoryService 使用RepositoryService部署流程定义repositoryService createDeployment addClasspathResource leaveProcess bpmn deploy 13 Activiti基本编程Activiti的Java编程模型的核心是ProcessEngine 所有其他service都必须从ProcessEngine对象获取 下面代码清单展示了如何使用ActivitiJavaAPI获取ProcessEngine和其他Service对象 使用默认配置文件获取ProcessEngine对象实例ProcessEngineprocessEngine ProcessEngineConfiguration createStandaloneProcessEngineConfiguration buildProcessEngine 通过ProcessEngine实例获得RepositoryServiceRepositoryServicerepositoryService processEngine getRepositoryService 通过ProcessEngine实例获得RuntimeServiceRuntimeServiceruntimeService processEngine getRuntimeService 通过ProcessEngine实例获得TaskServiceTaskServicetaskService processEngine getTaskService HistoryServicehistoryService processEngine getHistoryService 通过ProcessEngine实例获得FormServiceFormServiceformService processEngine getFormService 通过ProcessEngine实例获得ManagementServiceManagementServicemanagementService processEngine getManagementService 通过ProcessEngine实例获得IdentityServiceIdentityServiceidentityService processEngine getIdentityService 14 当获得了这些Service对象后 就可以使用这些Service对象来完成各种Activiti流程引擎的操作 在实际应用中需要综合使用各种服务来部署流程定义 启动流程实例 领取 查询完成用户任务以及查询流程运行历史纪录等Activiti流程引擎的主要功能 代码清单3展示了如何使用API代码来完成这一系列操作 该示例代码使用的BPMN2 0流程定义文件可以在activiti engine examples示例Eclipse工程中获取 使用到的用户和用户组也已经在demo系统初始化时写入了Activiti的后端H2数据库 获取RepositoryService和RuntimeService实例RepositoryServicerepositoryService processEngine getRepositoryService RuntimeServiceruntimeService processEngine getRuntimeService 使用RepositoryService部署流程定义repositoryService createDeployment addClasspathResource leaveProcess bpmn deploy 使用RuntimeService创建一个流程的实例StringprocId runtimeService startProcessInstanceByKey leaveProcess getId 获取TaskService实例TaskServicetaskService processEngine getTaskService 使用TaskService获取指定用户组的Task列表并使用指定用户领取这些任务Listtasks taskService createTaskQuery taskCandidateGroup accountancy list for Tasktask tasks System out println Followingtaskisavailableforaccountancygroup task getName claimittaskService claim task getId fozzie 15 使用TaskService获取指定用户的工作Task列表 并完成这些任务tasks taskService createTaskQuery taskAssignee fozzie list for Tasktask tasks System out println Taskforfozzie task getName CompletethetasktaskSplete task getId System out println Numberoftasksforfozzie taskService createTaskQuery taskAssignee fozzie count 使用HistoryService来查询指定流程实例的状态HistoryServicehistoryService processEngine getHistoryService HistoricProcessInstancehistoricProcessInstance historyService createHistoricProcessInstanceQuery processInstanceId procId singleResult System out println Processinstanceendtime historicProcessInstance getEndTime 16 上节清单代码首先将流程定义文件leaveProcess bpmn部署到了Activiti引擎中 这个流程是activiti engine examples示例项目中内置的一个示例流程 共包含了2个顺序任务 第一个任务是Writemonthlyfinancialreport 关联的用户组为accountancy 第二个任务为Verifymonthlyfinancialreport 关联的用户组为management 之后使用RuntimeService创建了一个流程的实例 实例创建完成后示例代码使用TaskService查询出该流程实例涉及到的accountancy组的任务 并使用accountancy组中的用户fozzie来领取并完成了该项任务 最后使用HistoryService来查询了该流程的运行状态 17 Activiti单元测试 RulepublicActivitiRuleactivitiRule newActivitiRule Test DeploymentpublicvoidruleUsageExample RuntimeServiceruntimeService activitiRule getRuntimeService runtimeService startProcessInstanceByKey ruleUsage TaskServicetaskService activitiRule getTaskService Tasktask taskService createTaskQuery singleResult assertEquals MyTask task getName taskSplete task getId assertEquals 0 runtimeService createProcessInstanceQuery count 18 Activiti控件介绍 19 Activiti相关的表用户用户组表 Activiti系统一共有23个表 包括流程定义表 一般数据信息表 流程运行实例表 流

温馨提示

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

评论

0/150

提交评论