// 3個人審批,第二個人不同意,則直接返回修改
1 @Override
2 public void comTask(String taskId, String desc, Map<String, Object> variables, String isGo) throws Exception {
3 //完成節點
4 Task task = taskService// 與正在執行的任務管理相關的service
5 .createTaskQuery()// 創建任務查詢對象
6 .taskId(taskId)
7 .singleResult() //返回唯一的結果集
8 ;
9 task.setDescription(desc);
10 taskService.saveTask(task);
11 claimTask(task,variables);
12 createAttachment(task,variables);
13 if(isGo!=null&&isGo.equals("no")){
14 List<Task> listA = taskService.createTaskQuery()
15 .processInstanceId(task.getProcessInstanceId())
16 .list();
17 if(listA!=null&&listA.size()>0){
18 for(Task a:listA){
19 if(!a.getId().equals(task.getId())){
20 taskService.complete(a.getId());
21 String sql = "delete from ActHiTaskinst t where t.id = '"+a.getId()+"'";
22 dao.executeHql(sql);
23 }
24 }
25 }
26 }
27 taskService.complete(task.getId(),variables);
28 }
@Override
public void completeTask(String taskId, String instanceId, String passflag, Map<String, Object> vars) {
// TODO: 一旦有人不通過,則delete剩下的所有在執行中的task
ActRuTask actRuTask = (ActRuTask) basicService.getObjectById(ActRuTask.class, taskId);
if(actRuTask == null) {
return;
}
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
List<Task> tasks = processEngine.getTaskService().createTaskQuery().taskName(actRuTask.getName())
.processInstanceId(instanceId).list();
int count = 0;
int totalCount = 0;
for (Task task : tasks) {
if (task.getId().equals(taskId)) {
// 獲取通過記錄數,這里不能使用nrOfCompletedInstances,因為與我們業務無關
String tmpCount = processEngine.getTaskService().getVariable(task.getId(), "passCount") + "";
// 獲取記錄總數
String tmpTotal = processEngine.getTaskService().getVariable(task.getId(), "totalCount") + "";
if (!tmpCount.equals("null") && !tmpCount.trim().equals("")) {
count = Integer.parseInt(tmpCount);
}
if (!tmpTotal.equals("null") && !tmpTotal.trim().equals("")) {
totalCount = Integer.parseInt(tmpTotal);
}
System.out.println(task.getId() + "var = " + passflag);
if (passflag.equals("yes")) {// 選擇通過則+1
count++;
}
totalCount++;
}
}
// 變量回寫記錄
vars.put("passCount", count);
vars.put("totalCount", totalCount);
processEngine.getTaskService().complete(taskId, vars);
}