




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 初识Activiti 1.1. 工作流与工作流引擎 1.2. BPMN2.0规范 1.3. Activiti概述 1.3.1. Activiti由来 1.3.2. Activiti简介 1.4. 文档说明 2. 开始学习 2.1. 必要的准备 2.1.1. 下载与了解目录 2.1.2. 其他准备 2.1.3. 一分钟入门(见用户手册) 2.2. 核心组件介绍 2.2.1. 关键对象 2.2.2. 服务接口 3. 入门示例(参考手册中10分钟教程) 3.1. 概述 3.2. 流程文件xxx.bpmn20.xml 3.3. Spring配置文件 3.4. 编写测试用例 3.5. 导入activiti-explorer 4. Eclipse中的Activiti插件 4.1. 安装 4.2. 使用1. 初识Activiti1.1. 工作流与工作流引擎工 作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。 它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。(我的理解就是:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化)所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。例如开发一个系统最关键的部分不是系统的界面,也不是和数据库之间的信息交换,而是如何根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性和弹性。比如你的系统中有一个任务流程,一般情况下这个任务的代码逻辑、流程你都要自己来编写。实现它是没有问题的。但是谁能保证逻辑编写的毫无纰漏?经过无数次的测试与改进,这个流程没有任何漏洞也是可以实现的,但是明显就会拖慢整个项目的进度。工作流引擎解决的就是这个问题:如果应用程序缺乏强大的逻辑层,势必变得容易出错(信息的路由错误、死循环等等)。1.2. BPMN2.0规范BPMN(Business Process Model and Notation)-业务流程模型与符号。BPMN是一套流程建模的标准,主要目标是被所有业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现,知道最终用户的管理监控。通俗一点其实就是一套规范,画流程模型的规范。流程模型包括:流程图、协作图、编排图、会话图。详细信息请google。1.3. Activiti概述1.3.1. Activiti由来学 习过Activiti的朋友都知道,Activiti的创始人也就是JBPM(也是一个优秀的BPM引擎)的创始人,从Jboss离职后开发了一个新的 BPM引擎:Activiti。所以,Activiti有很多地方都有JBPM的影子。所以,据说学习过JBPM的朋友学起Activiti来非常顺手。由于本人之前没有工作流及JBPM的相关基础,刚开始学习Activiti的时候可以说是无比痛苦的,根本不知道从何下手,这里也建议大家先进行工作流及BPMN2.0规范的学习,有了一定的基础后,再着手学习Activiti。1.3.2. Activiti简介Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。1.4. 文档说明以上部分对工作流、BPMN、Activiti的概念做了一个简单的介绍,目的是了解Activiti究竟是什么,能做些什么及在学习Activiti之前需要了解的知识与技术。其中大部分文字来自Copy网上的各种资料与文档,通过总结而来的。具体的更详细的内容需自己google,参考一些官方的文档与手册。本文档之后内容如下:1)下载与使用2)核心组件与说明3)入门示例4)Eclipse中的Activiti插件的使用本文档旨在为初学Activiti的朋友提供入门级别的参考,不会对其原理及其结构进行深层次的探究(更多是因为目前自身理解还不是很透彻),只是为大家理清思路,方便以后更深层次的学习。本文档还有一个重要的特点,那就是根据自己看官方手册的经验,教大家如何看手册从而更有效率!由于是初学,很多术语或解释难免理解有偏差,所以一定要看官方提供的文档与手册,那才是学习的最佳途径!2. 开始学习2.1. 必要的准备2.1.1. 下载与了解目录下载Activiti:下载路径,也就是官方网站的地址:/download.html。下载后解压(我所使用的是5.12版本的,Activiti更新速度飞快,几乎每两个月就会有一个更新的小版本),看到如下目录:1)database: 里面存放的是Activiti使用到的数据库信息的sql文件,它支持的数据库类型如下图,使用时只需执行你自己的数据库类型的文件即可。如:你的数据库 是mysql,那么就执行activiti.mysql.create.*.sql即可。2)docs:毫无疑问,api文档是也。3)libs:使用Activiti所需要的所有的jar包和源文件。4)wars:官方给我们提供的示例Demo,通过使用Demo可以更加快速的了解Activiti。2.1.2. 其他准备使用Activiti,首先当然要有jdk了!6+版本就可以了。其次,要有一款IDE,我们当然会使用Eclipse,这里使用Juno版本。然后,web容器当然也要有,这里使用Tomcat6.0版本。然后就是Activiti的Eclipse插件了,这个后面再介绍。2.1.3. 一分钟入门(见用户手册)所谓的一分钟入门就是通过运行你下载的包里的wars文件夹里的activiti-explorer.war文件,以便更快的了解Activiti。将文件拷贝至Tomcat的webapps目录,启动tomcat,输入http:/localhost:8080/activiti-explorer。然后你就可以开整了!总算是有一点微小的进展了。这里需要说明的就是,这个Demo默认采用的是h2内存数据库,如果想用你自己的数据库,就需要修改web应用WEB-INF/classes目录下的perties。然后,按上面说的,把database里的create文件夹里的数据库文件导入你自己的数据库(如果没有修改perties,就不用导入了)。Demo的具体解释与数据库配置的具体信息详见官方手册,手册已经说的很清楚了。这里需要重点了解activiti.cfg.xml的配置以及如何构建ProcessEngine(配置文件构建方式、代码构建方式)。对Demo的使用介绍在官方文档的后面才开始介绍,这里建议应用跑起来之后,先自己试试手(可看后面介绍Demo如何使用的章节),看看如何跑一个流程、整个流程是怎么流的、并随时关注数据库表里的数据的变化等,对以后的学习很有帮助!2.2. 核心组件介绍2.2.1. 关键对象1.Deployment:流程部署对象,部署一个流程时创建。2.ProcessDefinitions:流程定义,部署成功后自动创建。3.ProcessInstances:流程实例,启动流程时创建。4.Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。5.Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。2.2.2. 服务接口1.ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。2.RepositoryService:Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService 提供了对 repository的存取服务。3.RuntimeService: 在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、 设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。4.TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。 TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。5.IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。6.ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。7.HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。现在至少要知道有这些对象和接口。并结合Activiti Api这一章节来看,你就会对部署流程、启动流程、执行任务等操作有一个基本的概念。之后编写一个简单的单元测试,主要为了测试activiti.cfg.xml配置的是否正确,流程是否可以被部署即可。至于与Spring的集成,一定要熟悉基于Spring配置Activiti,以及事务的处理。3. 入门示例(参考手册中10分钟教程)3.1. 概述下面开始编写一个示例。这个Demo为一个“月度报表申请”流程。由“sales(销售)”组的用户制作月度报表,提交给“management(经理)”组的用户,经理审批该报表,最后结束。流程图如下:这 个Demo完成之后,我们会进行两个测试。一个是代码中的单元测试,就是跑一遍流程,看一下流程在跑的过程中输出的信息;一个是我们将编辑好的 bpmn20.xml文件通过我们之前一分钟入门的示例activiti-explorer应用导入进去,查看它的流程图,并完整执行一遍流程。在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自的任务与作用,并完成上一章的Demo。3.2. 流程文件xxx.bpmn20.xml首先,我们就来编写这个流程的bpmn20.xml文件。 Write monthly financial reportfor publication to shareholders. sales Verify monthly financial reportcomposed by the accountancy department. This financial report is goingto be sent to all the company shareholders. management 这里对部分代码进行解释。1) 文件的开头部分,这里的id对于Activiti来说, 应该叫做key。创建流程实例时,会根据此id来得到这个流程。2)开始流程。3)顺序流(就是连接各个节点的指向线)sourceRef和targetRef分别为起始节点和目标节点。4)描述用户任务id为该用户任务的标识。documentation为该用户任务的描述。5)分配用户可以把任务分配给指定的用户,也可以分配给指定的组,并且可以有多个,详见用户手册。3.3. Spring配置文件这里配置了数据源、事务管理、流程引擎及几个必要的xxxService。这里数据源使用的是dbcp。数据库信息就配置成你自己本地数据库的信息,如果不会配置。注:bpmn20.xml 文件中用到了两个用户组(sales、management),是因为我们启动Tomcat运行activiti-explorer应用初始化时自动就会 往数据库里添加一些数据,其中用户组的表中就会添加几条记录,其中就包括这两个组,所以不用管它怎么来的,总之数据库里有这两个组就对了。而应用默认使用的是内存数据库,服务一停止数据也就没有了。所以为了进行单元测试,需要按前面讲的修改数据库配置的方法:把activiti-explorer应用的数据库配置改成你自己的本地数据库的信息,我使用的是Mysql数据库。再启动tomcat运行应用(目的就是为了让数据库有数据),这时你的本地数据库就有数据了,可以编写测试用例进行单元测试了。3.4. 编写测试用例1)读取Spring配置文件,注入流程所需的Service2)编写测试方法Test publicvoidmonthtest() /部署流程定义repositoryService.createDeployment().addClasspathResource(myProcess.bpmn20.xml).deploy();/启动流程实例 String procId =runtimeService.startProcessInstanceByKey(financialReport).getId();/获得第一个任务 List tasks =taskService.createTaskQuery().taskCandidateGroup(sales).list();for(Task task : tasks) System.out.println(Following task is available for sales group: + task.getName();/认领任务这里由foozie认领,因为fozzie是sales组的成员taskService.claim(task.getId(),fozzie); /查看fozzie现在是否能够获取到该任务 tasks =taskService.createTaskQuery().taskAssignee(fozzie).list();for(Task task : tasks) System.out.println(Task for fozzie: + task.getName(); /执行(完成)任务taskSplete(task.getId(); /现在fozzie的可执行任务数就为0了 System.out.println(Number of tasks for fozzie: +taskService.createTaskQuery().taskAssignee(fozzie).count();/获得第二个任务 tasks =taskService.createTaskQuery().taskCandidateGroup(management).list();for(Task task : tasks) System.out.println(Following task is available for accountancy group:+ task.getName();/认领任务这里由kermit认领,因为kermit是management组的成员taskService.claim(task.getId(),kermit); /完成第二个任务结束流程for(Task task : tasks) taskSplete(task.getId(); /核实流程是否结束,输出流程结束时间 HistoricProcessInstancehistoricProcessInstance =historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult(); System.out.println(Process instance end time: + historicProcessInstance.getEndTime();3)运行示例,Demo完成。这就是一个最简单的流程,通过这个流程,了解到Activiti中流程是怎么流的,我们怎么控制它。3.5. 导入activiti-explorer1)单元测试完成后,我们可以将该bpmn20.xml文件导入之前我们部署的activiti-explorer应用中:点击流程的流程设计工作区,点击导入,将刚才我们编写的文件导入进去。2)导入之后在右上角点击部署。3)在已部署流程定义中我们可以看到这个流程,及它的流程图。4)点击启动流程,该流程就会被启动,再点击任务中,列队就会有该任务了,而且是分配给sales的,这正是我们定义流程时所分配给的用户组啊。注意
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧城市大数据中心云服务项目合作协议书
- 2025年度船舶抵押典当融资管理合同范本
- 2025中学教师劳动合同
- 2025年城市垃圾分类处理长效机制下公众参与路径探索报告
- 公共基础知识真题及答案
- 2025年职业技能培训在乡村振兴中的农业科技推广与应用报告
- 2025年市场分析:功能性食品消费需求预测与产品创新前景
- 2025年网络安全人才培养与认证报告:专业人才队伍建设
- 2025企业设备抵押借款合同书
- 2025年社交电商裂变营销与用户增长中的食品行业投资机会报告
- GB/T 7909-2017造纸木片
- 北师大版数学一年级上全册每课练习试题
- 修剪指甲培智五年级上册生活适应教案
- 《昆虫记》整本书阅读教学设计
- DB61-T 1295-2019保水采煤技术规范
- 八年级上册英语开学第一课
- 民事纠纷委托律师合同书
- 《统计学(第二版)》全套教学课件
- 应知应会质量管理
- 跨文化传播-导论课件
- 博士后出站研究报告
评论
0/150
提交评论