




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
activiti 流程开发指南流程开发指南 一 一 BPMN 二 二 activiti 主要接口主要接口 三 如何实现一个业务流程三 如何实现一个业务流程 四 如何管理所有流程与实例四 如何管理所有流程与实例 五 开发流程五 开发流程 六 六 api 一 一 BPMN 1 什么是 BPMN 首先 BPMN 规范是由标准组织 BPMI 发布的 BPMN 1 0 规范发布于 2004 年 5 月 此规范展示 了 BPMI 组织两年多的努力成果 BPMN 的主要目标就是要提供被所有业务用户理解的一套 标记 语言 包括业务分析者 软件开发者以及业务管理者与监察者 BPMN 还将支持生成可执行的 BPEL4WS 语言 所以 BPMN 在业务流程设计与流程实现之间搭建了一条标准化的桥梁 BPMN 定义了 业务流程图 其基于流程图技术 同时为创建业务流程操作的图形化模型进行了裁 减 业务流程的模型就是图形化对象的网图 包括活动 也可以说工作 和定义操作顺序的流控制 2 BPMN 基础 业务流程图由一系列的图形化元素组成 这些元素简化了模型的开发 且业务分析者看上去非 常熟悉 这些元素每个都有各自的特性 且与大多数的建模器类似 比如 活动是矩形 条件是菱 形 应该强调的是 开发 BPMN 的动力就是为了在创建业务流程模型时提供一个简单的机制 同 时又能够处理来自业务流程的复杂性 要处理这两个矛盾的需求的方法就是将标记的图形化方面组 织分类为特定的类别 这里提供标记类别中的一小部分 以便 业务流程图的读者可以简单地识别 出元素的基本类型从而理解图形 以下是四种基本的类型 1 流对象 2 连接对象 3 泳道 4 人工信息 BPMN2 0 概要 二 二 activiti 主要接口主要接口 ProcessEngine processEngine ProcessEngines getDefaultProcessEngine RuntimeService runtimeService processEngine getRuntimeService RepositoryService repositoryService processEngine getRepositoryService TaskService taskService processEngine getTaskService ManagementService managementService processEngine getManagementService IdentityService identityService processEngine getIdentityService HistoryService historyService processEngine getHistoryService FormService formService processEngine getFormService ProcessEngines getDefaultProcessEngine 会在第一次调用时 初始化并创建一个流程 引擎 以后再调用就会返回相同的流程引擎 使用对应的方法可以创建和关闭所有流程引擎 ProcessEngines init 和 ProcessEngines destroy ProcessEngines 会扫描所有activiti cfg xml 和 activiti context xml 文件 对于 activiti cfg xml文件 流程引擎会使用 Activiti 的经典方式构建 ProcessEngineConfiguration createProcessEngineConfigurationFromInputStream inputStream buildProcessEngine 对于activiti context xml文件 流程引擎会使 用 Spring 方法构建 先创建一个 Spring 的环境 然后通过环境获得流程引擎 所有服务都是无状态的 这意味着可以在多节点集群环境下运行 Activiti 每个节点都指向同一个数据 库 不用担心哪个机器实际执行前端的调用 无论在哪里执行服务都没有问题 RepositoryService 可能是使用 Activiti 引擎时最先接触的服务 它提供了管理和控制发布包和 流程定义的操作 这里不涉及太多细节 流程定义是 BPMN 2 0 流程的 java 实现 它包含了一个 流程每个环节的结构和行为 发布包是 Activiti 引擎的打包单位 一个发布包可以包含多个 BPMN 2 0 xml 文件和其他资源 开发者可以自由选择把任意资源包含到发布包中 既可以把一个单独的 BPMN 2 0 xml 文件放到发布包里 也可以把整个流程和相关资源都放在一起 比如 hr processes 实例可以包含 hr 流程相关的任何资源 可以通过RepositoryService来部署这种 发布包 发布一个发布包 意味着把它上传到引擎中 所有流程都会在保存进数据库之前分析解析好 从这点来说 系统知道这个发布包的存在 发布包中包含的流程就已经可以启动了 除此之外 服务可以 o查询引擎中的发布包和流程定义 o暂停或激活发布包 对应全部和特定流程定义 暂停意味着它们不能再执行任何操作了 激活是对应的反向操作 o获得多种资源 像是包含在发布包里的文件 或引擎自动生成的流程图 o获得流程定义的 pojo 版本 可以用来通过 java 解析流程 而不必通过 xml 正如RepositoryService负责静态信息 比如 不会改变的数据 至少是不怎么改变的 RuntimeService 正好是完全相反的 它负责启动一个流程定义的新实例 如上所述 流程定义定 义了流程各个节点的结构和行为 流程实例就是这样一个流程定义的实例 对每个流程定义来说 同 一时间会有很多实例在执行 RuntimeService也可以用来获取和保存流程变量 这些数据是特 定于某个流程实例的 并会被很多流程中的节点使用 比如 一个排他网关常常使用流程变量来决定 选择哪条路径继续流程 Runtimeservice也能查询流程实例和执行 执行对应 BPMN 2 0 中的 token 基本上执行指向流程实例当前在哪里 最后 RuntimeService可以在流程实例等待外 部触发时使用 这时可以用来继续流程实例 流程实例可以有很多暂停状态 而服务提供了多种方 法来 触发 实例 接受外部触发后 流程实例就会继续向下执行 任务是由系统中真实人员执行的 它是 Activiti 这类 BPMN 引擎的核心功能之一 所有与任务有关的 功能都包含在 TaskService 中 o查询分配给用户或组的任务 o创建独立运行任务 这些任务与流程实例无关 o手工设置任务的执行者 或者这些用户通过何种方式与任务关联 o认领并完成一个任务 认领意味着一个人期望成为任务的执行者 即这个用户会完成这个 任务 完成意味着 做这个任务要求的事情 通常来说会有很多种处理形式 IdentityService 非常简单 它可以管理 创建 更新 删除 查询 群组和用户 请注意 Activiti 执行时并没有对用户进行检查 例如 任务可以分配给任何人 但是引擎不会校验系统中是否 存在这个用户 这是 Activiti 引擎也可以使用外部服务 比如 ldap 活动目录 等等 FormService 是一个可选服务 即使不使用它 Activiti 也可以完美运行 不会损失任何功能 这 个服务提供了启动表单和任务表单两个概念 启动表单会在流程实例启动之前展示给用户 任务表 单会在用户完成任务时展示 Activiti 支持在 BPMN 2 0 流程定义中设置这些表单 这个服务以一种简 单的方式将数据暴露出来 再次重申 它时可选的 表单也不一定要嵌入到流程定义中 HistoryService 提供了 Activiti 引擎收集的所有历史数据 在执行流程时 引擎会保存很多数据 根据配置 比如流程实例启动时间 任务的参与者 完成任务的时间 每个流程实例的执行路径 等等 这个服务主要通过查询功能来获得这些数据 ManagementService 在使用 Activiti 的定制环境中基本上不会用到 它可以查询数据库的表和表的 元数据 另外 它提供了查询和管理异步操作的功能 Activiti 的异步操作用途很多 比如定时器 异 步操作 延迟暂停 激活 等等 三 如何实现一个业务流程三 如何实现一个业务流程 1 静态表单 每个节点绘制对应的表单 静态表单 每个节点绘制对应的表单 o创建工作流实例 创建工作流实例 process model o创建每个节点的创建每个节点的 jsp 表单表单 一般以 list 页面弹出一个 form 表单页面就可以 至于表单的字段隐藏或者展示 由表单自己控制 o部署流程部署流程 把 process model 导出为 BPMN XML 格式 再导入进行流程部署 开始流程开始流程 保存业务实体 leaveManager saveLeave entity 开始业务流程 用来设置启动流程的人员 ID 引擎会自动把用户 ID 保存到 activiti initiator 中 identityService setAuthenticatedUserId entity getUserId process 为流程 key processInstance runtimeService startProcessInstanceByKey process businessKey variables 办理流程办理流程 taskSplete taskId variables 其中 variables 是可以传递在流程间的变量 通过 Map variables taskService getVariables taskId 可以获取那些变量 待办列表待办列表 TaskQuery taskQuery taskService createTaskQuery taskCandidateOrAssigned userI d 自己办理或在该节点对应工作组中的流程 过程中列表过程中列表 ProcessInstanceQuery query runtimeService createProcessInstanceQuery processDefiniti onKey process active orderByProcessInstanceId desc List list query listPage pageParams 0 pageParams 1 已结束列表已结束列表 HistoricProcessInstanceQuery query historyService createHistoricProcessInstanceQuery process DefinitionKey process finished orderByProcessInstanceE ndTime desc List list query listPage pageParams 0 pageParams 1 四 如何管理所有流程与实例四 如何管理所有流程与实例 查看所有已部署的流程 repositoryService createProcessDefinitionQuery active o rderByDeploymentId desc 查看所有待办 tasks taskService createTaskQuery active orderByTaskId desc list 个人待办 tasks taskService createTaskQuery taskCandidateOrAssigned user getId active orderByTaskId desc list 查看所有办理中 ProcessInstanceQuery dynamicQuery runtimeService createProcessInstanceQuery orderByProcessI nstanceId desc active 办理中 本人 ProcessInstanceQuery dynamicQuery runtimeService createProcessInstanceQuery involvedUser UserUtil getUserFromSession sessi on getId orderByProcessInstanceId desc active 查看所有已办 HistoricProcessInstanceQuery dynamicQuery historyService createHistoricProcessInstanceQuery finishe d orderByProcessInstanceEndTime desc 已办 本人 HistoricProcessInstanceQuery dynamicQuery historyService createHistoricProcessInstanceQuery involve dUser UserUtil getUserFromSession session getId finishe d orderByProcessInstanceEndTime desc 五 开发流程五 开发流程 1 绘制流程图绘制流程图 单节点 多用户流程 必须设置下图红框属性 Multi instance type 代表是单用户还是多用户 Collection Multi instance 代表是用户的集合名称 需要在代码中设置 Element variable Multi instance 集合中的属性 不需要设置 并行网关 不管是否设置条件 都会并行执行 包容网关 根据条件可以执行单个或多个分支 注意点 注意点 1 绘制流程的时候 箭头保证一定要已连接到绘制流程的时候 箭头保证一定要已连接到 usertask 2 保证网关使用的时候 条件要写明保证网关使用的时候 条件要写明 3 保证流程绘制的简单化 重复节点最好保证使用同一个保证流程绘制的简单化 重复节点最好保证使用同一个 usertask 减少 减少 jsp 代码的编代码的编 写量 写量 2 表单编写表单编写 3 编写后台编写后台 entity entity 继承 model 类 model 类中存在一个公共的业务实体 commmodel 用来存储表单共用的的属 性 4 编写后台编写后台 controller controller 继承 modelcontroller modelcontroller 存在待办 已办 办理的查询列表 完成以及 开始功能也存在 只是由于开始和完成可能存在不同的业务需求 所以还是写在自己的 controller 中 startWorkflow 开始流程 complete 完成任务 taskList 待办列表 runningList 办理列表 finishedList 已办列表 5 编写前台表单编写前台表单 JS 控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能赋能高校辅导员个性化服务的实施策略
- 影视产业赋能区域经济发展的现状及总体形势
- 高二新课程全解析
- 春节营销与人资并进
- 共筑校园安全墙
- 电化学储能电站项目投资估算
- 健康教育质控检查总结
- 2025合作协议:技术股东合作合同
- 骰子智力测试题及答案大全
- 腹外疝医学进展
- GA/T 445-2010公安交通指挥系统建设技术规范
- 国家开放大学《可编程控制器应用实训》形考任务2(实训二)参考答案
- 质量检验表格
- (中职)美容美发实用英语Unit6 课件
- 室内五人制足球竞赛规则
- 2022年展览馆项目可行性研究报告
- 广州版五年级英语下册期末知识点复习ppt课件
- 产品研发流程管理制度管理办法
- 计算方法全书课件完整版ppt整本书电子教案最全教学教程ppt课件
- 人教版小学四年级英语下册期末测试卷
- 单代号网络图
评论
0/150
提交评论