3.3 任务查询
当前用户查询当前 待办任务:
使用TaskService查询当前 任务。
3.3.1 关联查询业务信息
需求:
查询用户当前待办任务,查询当前待处理采购单信息:
任务id、任务办理人、任务名称、采购单号、采购单名称、采购金额。。
红色:业务信息,从业务系统数据库查,根据businesskey查询
3.3.2 小结
查询待办任务时必须要指定任务办理人assignee。
查询信息中如果包括业务信息,通过businesskey(通过流程实例获取)查询业务系统。
3.4 任务办理
任务办理:当前该任务的办理人去完成任务。
任务办理时指定: 任务id
任务办理人
3.4.1 任务办理人权限问题
调用taskService.complete方法完成任务,activiti不要求传入任务办理人,问题:不管当前用户是哪位,只要指定任
务id都能完成任务。
解决:
在调用taskService.complete方法完成任务之前校验任务办理是否有该任务的完成权限。 校验思路:
根据任务id和assignee查询该任务,如果查询到说明assignee就是该任务id的办理人。
4 案例分析
4.1 案例学习目标
1、 学习activiti在业务系统中开发方法 2、 学习springmvc+mybatis的开发方法
4.2 功能需求
业务需求不受activiti的影响 ,需求如下:
员工创建采购单部门经理审核采购单总经理审核采购单财务审核采购单
需求阶段,由需求分析人员进行用户需求分析,编写“用户需求文档”给开发人员和用户看的,最后编写“系统需求规格说明书”,此文档给开发人员看的。
上边业务流程要在需求文档和需求规格说明书中描述。
先分析出用户角色,再分析不同的角色之间完成的业务流程。
用户角色: 员工 部门经理 总经理 财务
注意:在需求阶段不用考虑工作流。
4.3 设计阶段
在设计阶段由设计人员依据“系统需求规格说明书”进行系统设计,编写“系统概要设计说明书”和“系统详细设计说明书”。
讨论确定哪些业务流程使用工作流,哪些业务流程由activiti去管理。
针对业务流程简单且需求变更不大的业务流程,建议不使用工作流,因为使用工作流增加开发成本 。 针对业务流程复杂且需求变更较大的业务流程,建议使用工作流去管理。
准备使用activiti去管理如下业务流程:
员工创建采购单部门经理审核采购单总经理审核采购单财务审核采购单
4.3.1 流程定义
对于activiti管理的业务流程,需要按照bpmn2.0标准进行流程定义,依据的原型就是需求分析阶段的业务流程图。
流程定义:
第一步:需要考虑哪个功能和流程启动操作对应的,即哪个功能执行后流程即将 启动 员工创建了一个新的采购单表示一个新采购流程开始了。 系统功能:创建采购单 --------> activiti:启动流程 确定创建采购单哪一步(用户保存采购单)表示启动流程。
第二步:考虑哪些功能将业务流程向后推进一步。
如下图: