activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx

上传人:牧羊曲112 文档编号:3060171 上传时间:2023-03-10 格式:DOCX 页数:7 大小:39.87KB
返回 下载 相关 举报
activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx_第1页
第1页 / 共7页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx_第2页
第2页 / 共7页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx_第3页
第3页 / 共7页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx_第4页
第4页 / 共7页
activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx》由会员分享,可在线阅读,更多相关《activiti学习笔记Activiti工作流教程 Activiti5 流程实例.docx(7页珍藏版)》请在三一办公上搜索。

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

2、的examples范例包中找到,请查看包org.activiti.examples.bpmn.usertask的内容。 推荐Activiti工作流教程:基于Activiti5工作流实战企业协同OA办公系统 流程图 如上所述的业务流程可以使用Activiti的可视化流程编辑器 Activiti Modeler查看及编辑。 使用BPMN2.0的标准符号则如下图所示: 这里没有什么特殊的东西,图中看到的是一个 none start event ,其次是两个 user tasks: 撰写财务报告和”批准财务报告,以 none end event 结束。 XML表示 上述业务流程的XML表示形式如下所示

3、 (FinancialReportProcess.bpmn20.xml). 流程中包含一些主要的元素 (通过点击链接可以查看更详细的BPMN 2.0 元素的说明): none start event 让我们认识到要开始一个流程。 user tasks 声明一个基于用户操作的流程任务. 注意第一个任务是分派用户组 accountancy 的, 而第二个任务是分派到用户组management 的. 查看 分派 用户任务章节 可以得到更多怎样分派任务到用户或组的信息。 当到达 none end event 节点后流程就结束。 撰写要发送给公司股东的每月财务报告。 accountancy 核实并批准会

4、计部门提交的每月财务报告,报告将发送给公司的所有股东们。 management 开始一个流程实例 现在我们有了业务流程的流程定义。通过这个流程定义我们就可以创建一个流程实例了。在这个用例中,一个流程实例将和每月财务报告的创建和批准项匹配。 为了能够通过一个流程定义创建一个流程实例,我们必须先将定义的流程发布,发布流程意味着两件事: 流程定义保存到Activiti引擎的持久化数据库中。通过发布业务流程,我们就能确保就算在引擎重启后也能够找到该流程的定义。 BPMN2.0流程定义文件将被解释到内存中,从而可以通过activiti的API执行相应的操作。 更详细的信息可以通过专门的发布流程章节获取。

5、 就像专门的发布流程章节中提及的,可以通过多种方式来发布流程,以下是其中的一种: Deployment deployment = repositoryService.createDeployment .addClasspathResource(org/activiti/examples/bpmn/usertask/FinancialReportProcess.bpmn20.xml) .deploy; 现在我们可以通过在流程id来初始化一个流程实例了。注意这个id在Activiti的术语中称为key。 ProcessInstance processInstance = runtimeServic

6、e.startProcessInstanceByKey(financialReport); 一经上面的初始化将立即通过流程的start event,在start event.之后,紧跟着就是流出流向和到达第一个任务。Activiti引擎将保存一个任务到数据库中。这时候附属于该任务的相关用户或用户组的作业也会被保存到数据库中。activiti5 流程实例 任务创建后,处于等待接收状态,引擎将仅在下次接收到而外的触发调用后才会继续下去。在这个节点,任务是分派到用户组的,意指该用户组中的任何人都可以作为这个任务的候选者来执行这个任务。 任务列表 现在我们可以通过taskService来获取用户的任务

7、列表了。 List tasks = taskService.createTaskQuery.taskCandidateUser(fozzie).list; 因为流程定义中这个任务是定义为分派到用户组accountancy的,因此方法中传入的用户名参数fozzie必须是属于该用户组的用户: accountancy 也可以通过任务的查询API,如下获取用户组的任务: List tasks = taskService.createTaskQuery.taskCandidateGroup(accountancy).list; 上面描述的业务流程已经发布到了演示数据中。在运行ant demo.start

8、后,以用户fozzie身份登录到Activiti Explorer,选择PROCESSES页签,在列表的Action列中点击流程“Monthly financial report”的“Start Process链接来启动一个流程实例。如下图所示: 正如前面解解释的,流程将运行到第一个任务处。由于我们是以用户fozzie登录,故在我们启动了这个流程实例后,可以看到一个新的候选任务。我们这是切换到TASKS页签页去看看这个新任务,可以发现就算其他人启动的流程实例,所有属于用户组accountancy的用户都可以看到这个新的候选任务。 领取任务 现在其中一个会计人员需要领取这个任务。通过领取任务操作

9、,特定的用户就会成为这个任务的代理人,这是这个任务就会从用户组accountancy的其他所有用户的列表视图中消失。领取任务的调用代码如下: taskService.claim(task.getId, fozzie); 现在这个任务成为了任务领取者的个人任务了。 List tasks = taskService.createTaskQuery.taskAssignee(fozzie); 通过Activiti Explorer界面点击claim按钮将执行相同的领取任务操作。现在这个任务将显示在任务领取者的个人任务列表中,如下图所示: 完成任务 现在会计员可以开始撰写财务报表了,一但报表撰写完毕,

10、就可以执行完成任务的操作将任务完成掉: taskSplete(task.getId); 对Activiti引擎来说,这是通知流程实例必须继续跑下去的额外信号。该任务的外出流向将被解析执行,引导到第二个任务。同样的原理,就像上面第一个任务所发生的事情一样将在第二个任务出发生,唯一不同的是这次任务将被分派到用户组management。 在上面的demo中,使它能够过点击complete按钮来完成任务的。因Frozzie不是管理者,所以我们需要注销并以kermit用户登录。第二个任务现在就显示在待指定任务列表中了。如下图所示: 结束流程 这个批准任务就像第一个任务的处理一样可以接受和领取。完成这个任

11、务将导致流程执行到end event节点,在这个节点将终止该流程实例。该流程实例以及所有与其相关的运行时期的执行数据将会从数据库中删除。 可以通过 Activiti Probe来证实这些数据已被清除。因为表中已经没有任何流程的执行数据。 很容易看出来上面谈及的业务流程因太简单而无法在现实中使用到。然而通过上述基于BPMN2.0在Activiti的构建,你将可以通过如下的手段来增强业务流程的功能: 通过定义一个 timer start event 节点每月自动开始启动流程。 定义 gateways 节点执行条件判断。为此,管理者可以拒绝财务报表让会计师重建原来的任务。 通过声明和使用变量,控制报告在表单的编辑权限。 通过在流程结束时定义一个service task任务将报告自动发送给所有股东。.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号