使用TaskService查询当前用户待办任务(待提交的采购单)
注意:
Service创建一个自定义的对象,使用对象将activiti和业务系统控制层进行隔离,防止将来修改工作流引擎,系统控制层是不需要修改代码。
即使service只返回activiti的task对象就可以满足,也要在中间加一个自定义的对象将activiti和业务系统控制层进行隔离。
@Override
public List
// 流程定义key(流程定义的标识 )
String processDefinitionKey = ResourcesUtil.getValue(
\, \); // 任务 负责人
String assignee = userId; // 创建查询对象
TaskQuery taskQuery = taskService.createTaskQuery();
// 设置查询条件
taskQuery.taskAssignee(assignee);
// 指定 流程定义key,只查询某个流程的任务
taskQuery.processDefinitionKey(processDefinitionKey);
//设置排序 字段,根据任务创建时间降序
taskQuery.orderByTaskCreateTime().desc();
// 获取查询列表
List
//需要返回的内容:任务id、任务标识 、任务名称、任务负责人、采购单名称、采购金额
List
for (Task task : list) {
OrderCustom orderCustom =new OrderCustom();
// 流程实例id
String processInstanceId = task.getProcessInstanceId(); // 根据流程实例id找到流程实例对象
ProcessInstance processInstance = runtimeService .createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult(); // 从流程实例对象中获取businessKey
String businessKey = processInstance.getBusinessKey(); // 根据businessKey查询业务系统 //采购单id
String orderId = businessKey; PurBusOrder purBusOrder =
purBusOrderMapper.selectByPrimaryKey(orderId); //获取采购单名称、采购金额等采购单信息 //将purBusOrder内容拷贝到orderCustom
BeanUtils.copyProperties(purBusOrder, orderCustom);
//下边向orderCustom开始设置任务信息
//任务id、任务标识 、任务名称、任务负责人 //任务id
orderCustom.setTaskId(task.getId()); //任务标识
orderCustom.setTaskDefinitionKey(task.getTaskDefinitionKey()); //任务名称
orderCustom.setTaskName(task.getName()); //任务负责人
orderCustom.setAssignee(task.getAssignee());
orderList.add(orderCustom); }
return orderList; }
6.2.3 action
采购单处理列表:
查询当前用户采购单待处理任务列表。
6.2.4 页面
根据任务标识 ,显示不同的链接名称 。
7 提交采购单
7.1 需求
员工创建采购单完成,在确定采购单不再修改,执行提交采购单,提交后由经理审核。
7.2 实现
提交采购单目标将流程向后推进一步。
7.2.1 dao
不用实现.
7.2.2 service
接口功能:提交采购单
接口参数:任务id、任务负责人 接口内容: 调用acti
service执行任务完成。
7.2.3 action
提交采购单:
7.2.4 页面
修改orderTaskList.jsp页面,添加提交采购单链接,将任务id传给action方法。
7.2.5 测试
测试步骤:
以zhangsan登陆,提交采购单,查询采购单处理列表,任务没有了 以lisi登陆,查询采购单处理列表,有一个部门经理审核的任务。
8 采购单审核
正式开发时为了系统扩展方便,需要将部门经理审核、总经理审核、财务审核定义不同的action、service。采用共