版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、觉得activiti设计得简单而强大,尝试翻译一下他的10分钟入门指南:10分钟入门指南通过一个(非常简单的)业务流程,介绍一些基本的Activiti工作流感念和API接口。使用案例这个用例叫干脆(straightfoward):有一个公司,暂且叫它BPMCorp。在BPMCorp内部,会计部门每个月都要写一份财务报告给公司的股东。 但在发送给所有股东之前必须经过上级部门的批准。下面涉及的所有文件及代码片段均可以通过Activiti分发的examples范例包中找到,请查看包的内容。流程图如上所述的业务流程可以使用Activiti的可视化流程编辑器 Activiti Mod
2、eler查看及编辑。 使用BPMN2.0的标准符号则如下图所示: 这里没有什么特殊的东西,图中看到的是一个 none start event (左边的圆圈),其次是两个 user tasks: "撰写财务报告"和”批准财务报告",以 none end event (右边边框加粗型的圆圈) 结束。XML表示上述业务流程的XML表示形式如下所示 (). 流程中包含一些主要的元素 (通过点击链接可以查看更详细的BPMN 2.0 元素的说明):· none start ev
3、ent 让我们认识到要开始一个流程。· user tasks 声明一个基于用户操作的流程任务. 注意第一个任务是分派用户组 accountancy 的, 而第二个任务是分派到用户组management 的. 查看 分派用户任务章节 可以得到更多怎样分派任务到用户或组的信息。· 当到达 none end event 节点后流程就结束。<process id="financialReport" name="每月财务报告处理流程">
4、0; <startEvent id="theStart" /> <sequenceFlow id='flow1' sourceRef='theStart' targetRef='writeReportTask' /> <userTask id="writeReportTask" name="撰写财务报告" > <document
5、ation> 撰写要发送给公司股东的每月财务报告。 </documentation> <potentialOwner> <resourceAssignmentExpression> <formalExpression>accountancy</formalExpression> </resourceA
6、ssignmentExpression> </potentialOwner> </userTask> <sequenceFlow id='flow2' sourceRef='writeReportTask' targetRef='verifyReportTask' /> <userTask id="verifyReportTask" name=&qu
7、ot;批准财务报告" > <documentation> 核实并批准会计部门提交的每月财务报告,报告将发送给公司的所有股东们。 </documentation> <potentialOwner> <resourceAssignmentExpression> <formalExpression>ma
8、nagement</formalExpression> </resourceAssignmentExpression> </potentialOwner> </userTask> <sequenceFlow id='flow3' sourceRef='verifyReportTask' targetRef='theEnd' /> &
9、#160; <endEvent id="theEnd" /> </process>开始一个流程实例现在我们有了业务流程的流程定义(process definition)。通过这个流程定义我们就可以创建一个流程实例(process instances)了。在这个用例中,一个流程实例将和每月财务报告的创建和批准项匹配。为了能够通过一个流程定义创建一个流程实例,我们必须先将定义的流程发布(deploy),发布流程意味着两件事:· 流程定义保存到Activiti引擎的持久化数据库中。通过发布业务流程,我们就能
10、确保就算在引擎重启后也能够找到该流程的定义。· BPMN2.0流程定义文件将被解释到内存中,从而可以通过activiti的API执行相应的操作。更详细的信息可以通过专门的发布流程章节获取。就像专门的发布流程章节中提及的,可以通过多种方式来发布流程,以下是其中的一种:Deployment deployment = repositoryService.createDeployment() .addClasspathResource("org/activiti/examples/bpmn/usertask/FinancialReportProcess.bpmn20.x
11、ml") .deploy();现在我们可以通过在流程id(看XML流程定义文件中的第一行)来初始化一个流程实例了。注意这个id在Activiti的术语中称为key。ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("financialReport");一经上面的初始化将立即通过流程的start event,在start event.之后,紧跟着就是流出流向(在这个用例中只有一条)和到达第一个任务(撰写财务报告)。Activiti引擎将保存一个任务到数据库
12、中。这时候附属于该任务的相关用户或用户组的作业也会被保存到数据库中。任务创建后,处于等待接收状态,引擎将仅在下次接收到而外的触发调用后才会继续下去。在这个节点,任务是分派到用户组的,意指该用户组中的任何人都可以作为这个任务的候选者来执行这个任务。任务列表现在我们可以通过taskService来获取用户的任务列表了。List<Task> tasks = taskService.createTaskQuery().taskCandidateUser("fozzie").list();因为流程定义中这个任务是定义为分派到用户组accountancy的,因此方法中传入的
13、用户名参数"fozzie"必须是属于该用户组的用户:<potentialOwner> <resourceAssignmentExpression> <formalExpression>accountancy</formalExpression> </resourceAssignmentExpression></potentialOwner>也可以通过任务的查询API,如下获取用户组的任务:List<Task> tasks = taskServ
14、ice.createTaskQuery().taskCandidateGroup("accountancy").list();上面描述的业务流程已经发布到了演示数据中。在运行ant demo.start后,以用户fozzie(他是一个会计师)身份登录到Activiti Explorer,选择PROCESSES页签,在列表的Action列中点击流程“Monthly financial report'”的“Start Process"链接来启动一个流程实例。如下图所示:正如前面解解释的,流程将运行到第一个任务处。由于我们是以用户fozzie登录,故在我们启动了
15、这个流程实例后,可以看到一个新的候选任务。我们这是切换到TASKS页签页去看看这个新任务(如下图),可以发现就算其他人启动的流程实例,所有属于用户组accountancy的用户都可以看到这个新的候选任务。领取任务现在其中一个会计人员需要领取这个任务(claim the task)。通过领取任务操作,特定的用户就会成为这个任务的代理人(assignee),这是这个任务就会从用户组accountancy的其他所有用户的列表视图中消失。领取任务的调用代码如下:taskService.claim(task.getId(), "fozzie");现在这个任务成为了任务领取者的个人任务
16、了。List<Task> tasks = taskService.createTaskQuery().taskAssignee("fozzie");通过Activiti Explorer界面点击claim按钮将执行相同的领取任务操作。现在这个任务将显示在任务领取者的个人任务列表中,如下图所示:完成任务现在会计员可以开始撰写财务报表了,一但报表撰写完毕,就可以执行完成任务的操作将任务完成掉:taskSplete(task.getId();对Activiti引擎来说,这是通知流程实例必须继续跑下去的额外信号。该任务的外出流向将被解析执行,引导到第二个任务(批准财务报
17、告)。同样的原理,就像上面第一个任务所发生的事情一样将在第二个任务出发生,唯一不同的是这次任务将被分派到用户组management。在上面的demo中,使它能够过点击complete按钮来完成任务的。因Frozzie不是管理者,所以我们需要注销并以kermit(他是管理者)用户登录。第二个任务现在就显示在待指定任务列表中了。如下图所示:结束流程这个批准任务就像第一个任务的处理一样可以接受和领取。完成这个任务将导致流程执行到end event节点,在这个节点将终止该流程实例。该流程实例以及所有与其相关的运行时期的执行数据将会从数据库中删除。可以通过 Activiti Probe来证实这些数据已被清除。因为表中已经没有任何流程的执行数据。很容易看出来上面谈及的业务流程因太
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小小书虫的读后感(15篇)
- 支付宝电子合同模板(3篇)
- 五级电工实操考试题库及答案
- 现货原油买卖合同模板(3篇)
- 老电工考试题库及答案
- 一个难忘的老师写人作文7篇
- 2025年网络直播行业网络直播与短视频应用研究报告及未来发展趋势预测
- 2025年社交媒体行业社交平台发展与用户行为分析报告
- 供应商评估表模板全面版
- 土建安全b证题库及答案解析
- 2025甘肃金川集团股份有限公司财务和审计一般管理岗位成熟人才社会招聘27人考试参考试题及答案解析
- 河北省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(典优)
- 古树就地保护及移栽服务方案投标文件(技术方案)
- 流感应急预案卫生院
- 2025年智能无人机集群协同控制技术发展与市场前景分析报告
- 全国大学生职业规划大赛《新能源汽车技术》专业生涯发展展示【高职(专科)】
- 酒店英语情景对话口语完整教程
- 康复科常规护理课件
- 绵阳水务集团考试试题及答案
- 国开电大2025秋《形势与政策》大作业参考答案 一
- 2025-2030钙钛矿光伏组件回收技术路线
评论
0/150
提交评论