2022年activiti流程开发基本步骤 .pdf

上传人:C****o 文档编号:33384892 上传时间:2022-08-10 格式:PDF 页数:12 大小:1MB
返回 下载 相关 举报
2022年activiti流程开发基本步骤 .pdf_第1页
第1页 / 共12页
2022年activiti流程开发基本步骤 .pdf_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《2022年activiti流程开发基本步骤 .pdf》由会员分享,可在线阅读,更多相关《2022年activiti流程开发基本步骤 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、activiti流程开发指南一、BPMN二、activiti主要接口三、如何实现一个业务流程四、如何管理所有流程与实例五、开发流程六、api一、BPMN 1. 什么是 BPMN 首先 BPMN 规范是由标准组织BPMI 发布的 .BPMN 1.0规范发布于2004 年 5 月。此规范展示了 BPMI 组织两年多的努力成果。BPMN 的主要目标就是要提供被所有业务用户理解的一套标记语言 ,包括业务分析者、软件开发者以及业务管理者与监察者。BPMN 还将支持生成可执行的BPEL4WS语言。所以,BPMN 在业务流程设计与流程实现之间搭建了一条标准化的桥梁。BPMN 定义了 业务流程图 ,其基于流程

2、图技术,同时为创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。2. BPMN 基础业务流程图由一系列的图形化元素组成。这些元素简化了模型的开发,且业务分析者看上去非常熟悉。这些元素每个都有各自的特性,且与大多数的建模器类似。比如,活动是矩形,条件是菱形。应该强调的是:开发BPMN 的动力就是为了在创建业务流程模型时提供一个简单的机制,同时又能够处理来自业务流程的复杂性。要处理这两个矛盾的需求的方法就是将标记的图形化方面组织分类为特定的类别。这里提供标记类别中的一小部分,以便业务流程图 的读者可以简单地识别出元素的基本类

3、型从而理解图形。以下是四种基本的类型: 1 )流对象 2 )连接对象 3 )泳道名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 4 )人工信息BPMN2.0概要: http:/ processEngine = ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();Rep

4、ositoryService repositoryService = processEngine.getRepositoryService();TaskService taskService = processEngine.getTaskService();ManagementService managementService = processEngine.getManagementService();IdentityService identityService = processEngine.getIdentityService();HistoryService historyServi

5、ce = processEngine.getHistoryService();FormService formService = processEngine.getFormService();ProcessEngines.getDefaultProcessEngine()会在第一次调用时初始化并创建一个流程引擎,以后再调用就会返回相同的流程引擎。使用对应的方法可以创建和关闭所有流程引擎:ProcessEngines.init()和ProcessEngines.destroy()。 ProcessEngines会扫描所有activiti.cfg.xml和activiti-context.xml文

6、件。 对于activiti.cfg.xml文件,流程引擎会使用Activiti 的经典方式构建:ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream(inputStream).buildProcessEngine(). 对于activiti-context.xml文件,流程引擎会使用 Spring 方法构建:先创建一个Spring 的环境,然后通过环境获得流程引擎。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -

7、- - - - - 第 2 页,共 12 页 - - - - - - - - - 所有服务都是无状态的。这意味着可以在多节点集群环境下运行Activiti ,每个节点都指向同一个数据库, 不用担心哪个机器实际执行前端的调用。无论在哪里执行服务都没有问题 RepositoryService可能是使用Activiti 引擎时最先接触的服务。它提供了管理和控制发布包和流程定义的操作。这里不涉及太多细节,流程定义是BPMN 2.0流程的 java 实现。 它包含了一个流程每个环节的结构和行为。发布包是 Activiti 引擎的打包单位。一个发布包可以包含多个BPMN 2.0 xml 文件和其他资源。开

8、发者可以自由选择把任意资源包含到发布包中。既可以把一个单独的BPMN 2.0 xml文件放到发布包里,也可以把整个流程和相关资源都放在一起。(比如, hr-processes 实例可以包含hr 流程相关的任何资源)。可以通过RepositoryService来部署这种发布包。 发布一个发布包,意味着把它上传到引擎中,所有流程都会在保存进数据库之前分析解析好。从这点来说,系统知道这个发布包的存在,发布包中包含的流程就已经可以启动了。除此之外,服务可以o查询引擎中的发布包和流程定义。o暂停或激活发布包,对应全部和特定流程定义。暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。o获得多种资源

9、,像是包含在发布包里的文件,或引擎自动生成的流程图。o获得流程定义的pojo 版本, 可以用来通过java 解析流程,而不必通过xml 。正如RepositoryService负责静态信息(比如,不会改变的数据,至少是不怎么改变的), RuntimeService正好是完全相反的。它负责启动一个流程定义的新实例。如上所述,流程定义定义了流程各个节点的结构和行为。流程实例就是这样一个流程定义的实例。对每个流程定义来说,同一时间会有很多实例在执行。RuntimeService也可以用来获取和保存流程变量。 这些数据是特定于某个流程实例的,并会被很多流程中的节点使用(比如,一个排他网关常常使用流程变

10、量来决定选择哪条路径继续流程)。Runtimeservice也能查询流程实例和执行。执行对应BPMN 2.0 中的token。基本上执行指向流程实例当前在哪里。最后,RuntimeService可以在流程实例等待外部触发时使用,这时可以用来继续流程实例。流程实例可以有很多暂停状态,而服务提供了多种方法来触发 实例, 接受外部触发后,流程实例就会继续向下执行。任务是由系统中真实人员执行的,它是Activiti 这类 BPMN 引擎的核心功能之一。所有与任务有关的功能都包含在TaskService中:o查询分配给用户或组的任务o创建独立运行任务。这些任务与流程实例无关。o手工设置任务的执行者,或者

11、这些用户通过何种方式与任务关联。o认领并完成一个任务。认领意味着一个人期望成为任务的执行者,即这个用户会完成这个任务。完成意味着“ 做这个任务要求的事情” 。 通常来说会有很多种处理形式。 IdentityService非常简单。它可以管理(创建,更新,删除,查询.)群组和用户。请注意,Activiti 执行时并没有对用户进行检查。例如,任务可以分配给任何人,但是引擎不会校验系统中是否存在这个用户。这是 Activiti 引擎也可以使用外部服务,比如ldap ,活动目录,等等。 FormService是一个可选服务。即使不使用它,Activiti 也可以完美运行,不会损失任何功能。这个服务提供

12、了启动表单和任务表单两个概念。启动表单会在流程实例启动之前展示给用户,任务表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 单会在用户完成任务时展示。Activiti 支持在 BPMN 2.0流程定义中设置这些表单。这个服务以一种简单的方式将数据暴露出来。再次重申,它时可选的,表单也不一定要嵌入到流程定义中。 HistoryService提供了 Activiti 引擎收集的所有历史数据。在执行流程时,引擎会保存很多数据(根据配

13、置),比如流程实例启动时间,任务的参与者,完成任务的时间,每个流程实例的执行路径,等等。这个服务主要通过查询功能来获得这些数据。 ManagementService在使用 Activiti 的定制环境中基本上不会用到。它可以查询数据库的表和表的元数据。另外,它提供了查询和管理异步操作的功能。 Activiti 的异步操作用途很多,比如定时器,异步操作,延迟暂停、激活,等等。三、如何实现一个业务流程1. 静态表单(每个节点绘制对应的表单)o创建工作流实例(process_model)o创建每个节点的jsp 表单一般以 list 页面弹出一个form 表单页面就可以,至于表单的字段隐藏或者展示,由

14、表单自己控制。o部署流程把 process_model导出为 BPMN.XML格式,再导入进行流程部署名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 开始流程保存业务实体leaveManager.saveLeave(entity); 开始业务流程/ 用来设置启动流程的人员ID ,引擎会自动把用户ID 保存到 activiti:initiator中identityService.setAuthenticatedUserId(en

15、tity.getUserId(); /process为流程 key processInstance = runtimeService.startProcessInstanceByKey(process , businessKey, variables); 办理流程taskSplete(taskId, variables); 其中 variables是可以传递在流程间的变量,通过Map variables = taskService.getVariables(taskId)可以获取那些变量。待办列表TaskQuery taskQuery = taskService.createTaskQuery

16、().taskCandidateOrAssigned(userId);/自己办理或在该节点对应工作组中的流程过程中列表ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery().processDefinitionKey( process).active().orderByProcessInstanceId().desc(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 -

17、- - - - - - - - List list = query.listPage(pageParams0, pageParams1); 已结束列表HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery().processDefinitionKey(process).finished().orderByProcessInstanceEndTime().desc(); List list = query.listPage(pageParams0, pageParams1); 四

18、、如何管理所有流程与实例查看所有已部署的流程repositoryService.createProcessDefinitionQuery().active().orderByDeploymentId().desc(); 查看所有待办tasks = taskService.createTaskQuery().active().orderByTaskId().desc().list(); 个人待办tasks = taskService.createTaskQuery().taskCandidateOrAssigned(user.getId().active().orderByTaskId().de

19、sc().list(); 查看所有办理中ProcessInstanceQuery dynamicQuery = runtimeService.createProcessInstanceQuery().orderByProcessInstanceId().desc().active(); 办理中(本人)ProcessInstanceQuery dynamicQuery = runtimeService.createProcessInstanceQuery().involvedUser(UserUtil.getUserFromSession(session).getId().orderByProc

20、essInstanceId().desc().active(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 查看所有已办HistoricProcessInstanceQuery dynamicQuery = historyService.createHistoricProcessInstanceQuery().finished().orderByProcessInstanceEndTime().desc(); 已办(本人

21、)HistoricProcessInstanceQuery dynamicQuery = historyService.createHistoricProcessInstanceQuery().involvedUser(UserUtil.getUserFromSession(session).getId().finished().orderByProcessInstanceEndTime().desc(); 五、开发流程1. 绘制流程图单节点,多用户流程:必须设置下图红框属性,Multi-instance type 代表是单用户还是多用户,, Collection (Multi-instanc

22、e),代表是用户的集合名称,需要在代码中设置Element variable (Multi-instance),集合中的属性,不需要设置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 并行网关,不管是否设置条件,都会并行执行包容网关,根据条件可以执行单个或多个分支。注意点: 1.绘制流程的时候,箭头保证一定要已连接到usertask 2. 保证网关使用的时候,条件要写明 3. 保证流程绘制的简单化,重复节点最好保证使用同一个

23、usertask,减少 jsp 代码的编写量。2.表单编写 3. 编写后台entity名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - entity 继承 model 类, model 类中存在一个公共的业务实体commmodel,用来存储表单共用的的属性。4.编写后台controller名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -

24、 - - - 第 9 页,共 12 页 - - - - - - - - - controller 继承 modelcontroller,modelcontroller存在待办,已办,办理的查询列表,完成以及开始功能也存在,只是由于开始和完成可能存在不同的业务需求,所以还是写在自己的controller中。startWorkflow 开始流程complete完成任务taskList待办列表runningList办理列表finishedList已办列表5.编写前台表单JS 控制名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心

25、整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - setStep() 设置每一步的可编辑与不可编辑complete() 完成任务,调用comm.js 中的completeForm(users , userKey , key , tkey , taskid , url);参数: users, 代表多用户任务中的人员ID,使用逗号分隔开,无则为空 userKey,是流程图中定义的Collection (Multi-instance) 属性 key, 是流程的key, 如“sendcar ” tkey, 当前步骤的节点ID 名师资料总结 - - -精品

26、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - taskid,当前任务的ID(暂时没用到,可以为空) url, 完成后跳转的页面链接主要方法介绍: 1.chooseDep(id,name),选择部门 2.chooseUser(userKey,key,tkey,url),选择人员并发送流程(多选 ) 3.chooseUserSingle(userparam,key,tkey,url),选择人员并发送流程(单选) 4.chooseUserOnly(id,n

27、ame),选择人员(多选) 5.chooseUserSingleOnly(id,name)选择人员(单选)变量介绍: 1. var variables = 流程图中使用到的变量数组,属性格式如下,key 为流程中对应节点定义的变量名称,value 为对应值, type 表示字段类型,B 代表 boolean 类型 ,S 代表字符串类型。 key : iftrue , value : true , type : B 2.formCache 缓存,用于保存业务表单数据。六、api 具体用户手册地址:http:/ api :http:/www.activiti.org/javadocs/index.html名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁