activiti学习笔记Activiti工作流教程 Activiti5 流程实例_第1页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例_第2页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例_第3页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例_第4页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、activiti学习笔记:Activiti工作流教程Activiti5流程实例觉得activiti设计得简单而强大,尝试翻译一下他的10分钟入门指南:10分钟入门指南通过一个(非常简单的)业务流程,介绍一些基本的Activiti工作流感念和API接口。使用案例这个用例叫干脆(straightfoward):有一个公司,暂且叫它BPMCorp。在BPMCop内部,会计部门每 个月都要写一份财务报告给公司的股东。但在发送给所有股东之前必须经过上级部门的批准。下面涉及的所有文件及代码片段均可以通过Activiti分发的examples范例包中找到,请查看包org.activiti.examples.

2、bpmn.usertask 的 内容。推荐Activiti工作流教程:基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件) HYPERLINK /goods-343.html /goods-343.html流程图如上所述的业务流程可以使用Activiti的可视化流程编辑器Activiti Modeler查看及编辑。使用BPMN2.0的标准符号则如下图所示:这里没有什么特殊的东西,图中看到的是一个none start event (左边的圆圈),其次是两个tasks:,撰写财务报告和”批准财务报告,以none end event (右边边框加粗型

3、的圆圈)结束。XML表示上述业务流程的XML表示形式如下所示(FinancialReportProcess.bpmn20.xml).流程中包含一些主要的元素(通过点击链接可以查看更详细的BPMN 2.0元素的说明):none start event让我们认识到要开始一个流程。user tasks声明一个基于用户操作的流程任务.注意第一个任务是分派用户组accountancy的,而第二个任务是分派到用户组management的.查看分派用户任务章节可以得到更多怎样分派任务到用户或组的信息。_当到达none end event节点后流程就结束。process id=financialReport

4、name=每月财务报告处理流程documentation撰写要发送给公司股东的每月财务报告。/documentationaccountancy核实并批准会计部门提交的每月财务报告,报告将发送给公司的所有股东 们。management开始一个流程实例现在我们有了业务流程的流程定义(process definition)0通过这个流程定义我们就 可以创建一个流程实例(process instances)了。在这个用例中,一个流程实例将和 每月财务报告的创建和批准项匹配。为了能够通过一个流程定义创建一个流程实例,我们必须先将定义的流程发布(deploy),发布流程意味着两件事:流程定义保存到Acti

5、viti引擎的持久化数据库中。通过发布业务流程,我们就能 确保就算在引擎重启后也能够找到该流程的定义。BPMN2.0流程定义文件将被解释到内存中,从而可以通过activiti的API执行相 应的操作。更详细的信息可以通过专门的发布流程章节获取。就像专门的发布流程章节中提及的,可以通过多种方式来发布流程,以下是其中的一种:Deployment deployment = repositoryService. createDeployment().addClasspathResource(org/activiti/examples/bpmn/usertask/FinancialRepor tProc

6、ess.bpmn20.xml).deploy();现在我们可以通过在流程id (看XML流程定义文件中的第一行)来初始化一个流程实 例了。注意这个id在Activiti的术语中称为key。ProcessInstance processInstance =runtimeService. startProcessInstanceByKey(financialReport);一经上面的初始化将立即通过流程的start event,在start event.之后,紧跟着就是流出 流向(在这个用例中只有一条)和到达第一个任务(撰写财务报告)。Activiti引擎将保 存一个任务到数据库中。这时候附属于该

7、任务的相关用户或用户组的作业也会被保存到 数据库中。activiti5流程实例任务创建后,处于等待接收状态,引擎将仅在下次接收到而外的触发调用后才会继续下 去。在这个节点,任务是分派到用户组的,意指该用户组中的任何人都可以作为这个任 务的候选者来执行这个任务。任务列表现在我们可以通过taskService来获取用户的任务列表了。List tasks = taskService.createTaskQuery().taskCandidateUser(fozzie).list(); 因为流程定义中这个任务是定义为分派到用户组accountancy的,因此方法中传入的用 户名参数”fozzie”必须

8、是属于该用户组的用户:accountancy 也可以通过任务的查询API,如下获取用户组的任务:List tasks =taskService.createTaskQuery().taskCandidateGroup(accountancy).list();上面描述的业务流程已经发布到了演示数据中。在运行ant demo.start后,以用 户fozzie (他是一个会计师)身份登录到Activiti Explorer,选择PROCESSES 页签,在列表的 Action 列中点击流程Monthly financial report”的“Start Process 链接来启动一个流程实例。如下

9、图所示:OActivitiuExplcrerTASKS i PROCESSESProcessesNameKeyVersionMonthly financial reportfinancial Re port1Mixed candidate user and gnotip examplemixedC an did ateU serAndGroup1Multiple candidate groups examplemultipleCandiclatesGroup1Single candidate group examplesing leCandidateGroup1Task Assignee ex

10、ampletaskAssigneePracess1Vacation requestvacation Request1Actions混 Start Process 静 Start Process 混 Start Process 瀚 Start Process 简 Start Process簿 Start Formq 湘0 Actlviti.onQ. AN rights resrvftJ.正如前面解解释的,流程将运行到第一个任务处。由于我们是以用户fozzie登录,故在 我们启动了这个流程实例后,可以看到一个新的候选任务。我们这是切换到TASKS页 签页去看看这个新任务(如下图),可以发现就算其他

11、人启动的流程实例,所有属于用 户组accountancy的用户都可以看到这个新的候选任务。My tasks (0)Unasslgn&d tasks (D)In Accountancy (0)My tasks (0)Unas$ign&d tasks (1)In Accountancy 领取任务现在其中一个会计人员需要领取这个任务(claim the task)。通过领取任务操作,特 定的用户就会成为这个任务的代理人(assignee),这是这个任务就会从用户组 accountancy的其他所有用户的列表视图中消失。领取任务的调用代码如下:taskService. claim(task. getI

12、d(), fozzie);现在这个任务成为了任务领取者的个人任务了。List tasks =taskService. createTaskQuery(). taskAssignee(fozzie);通过Activiti Explorer界面点击claim按钮将执行相同的领取任务操作。现在这个任务将 显示在任务领取者的个人任务列表中,如下图所示:Unassigned taskfs);Unssaignsd tasks (1)in Accotintancy (1)121 | Witte monthly financial reportWrite monmiy linancd report tor p

13、u Hicatjon tnMy lasksUn既割gned启底(Q) in Atcounlancy QMy task(s)121 | Write monthly financial reportWrllB monthly financial porl tot pubhcallDn to shanslwlders.L二完成任务现在会计员可以开始撰写财务报表了,一但报表撰写完毕,就可以执行完成任务的操作 将任务完成掉:taskService. complete (task. getId();对Activiti引擎来说,这是通知流程实例必须继续跑下去的额外信号。该任务的外出流 向将被解析执行,引导到

14、第二个任务(批准财务报告)。同样的原理,就像上面第一个 任务所发生的事情一样将在第二个任务出发生,唯一不同的是这次任务将被分派到用户 组 management。在上面的demo中,使它能够过点击complete按钮来完成任务的。因Frozzie不是管 理者,所以我们需要注销并以kermit(他是管理者)用户登录。第二个任务现在就显示 在待指定任务列表中了。如下图所示:My task(s)Password;My tasks (0)Unassigned tasks (DJ in Accountancy (0)121 | Write monthly financial reportWrite mon

15、ttiiy financial report for pubiication to shareholders.User Name: : kermitIMy teaks (0| Un assigned task?Unassigned task(s) in group Management ps ,“In Accauntancy (0)In Sales 测In Eng;n?MnnQ (0):1231 Verify monthly tinancial reportClaimInMagefwntl (1)结束流程这个批准任务就像第一个任务的处理一样可以接受和领取。完成这个任务将导致流程执 行到end

16、event节点,在这个节点将终止该流程实例。该流程实例以及所有与其相关的 运行时期的执行数据将会从数据库中删除。可以通过Activiti Probe来证实这些数据已被清除。因为表中已经没有任何流程的执行 数据。OActivitiFrobePROCESS ENGINE DATABASE JOBSACT_GE_0YTEARRAY (12ACT GE PROPERTY (2)ACTHLACUNST (B) ACT HI DETAIL (0) ACT_HLPROC1N$T ACTJD,GROUP (7) ACT,ID,MEMBERSHIP (12) ACT_ID_USER p)ACT.RE DEPLOYMENT (1) ACT_RE_PROCDEF (B) reY_RUEXECIJTlON actrlfJ6ENT1TVlink (dj ACTRU.JOB (0 ACT_RU_TASK (0

温馨提示

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

最新文档

评论

0/150

提交评论