activiti6.0的常用方法
2019-12-31 本文已影响0人
清远_03d9
1.获取CommandContext
//import org.activiti.engine.impl.context.Context;
CommandContext commandContext = Context.getCommandContext();
2. 获取HistoryManager
HistoryManager historyManager = commandContext.getHistoryManager();
3. 修改任务审核人
taskEntity.setAssignee(assignee);
historyManager.recordTaskAssigneeChange(delegateTask.getId(), assignee);
4.获取任务实例管理类
TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();
5. 获取当前任务实例
TaskEntity currentTask = taskEntityManager.findById(taskId);
6.获取当前节点执行示例
ExecutionEntity execution = currentTask.getExecution();
String executionId = execution.getId();
7.根据processDefinitionId获取流程
Process process = ProcessDefinitionUtil.getProcess(processDefinitionId);
8. 根据节点id获取FlowElement节点
FlowElement flowElement = process.getFlowElement(targetNodeId);
9. 通知当前活动结束(更新act_hi_actinst)
historyManager.recordActivityEnd(execution,"jump to userTask1");
10.通知任务节点结束(更新act_hi_taskinst)
historyManager.recordTaskEnd(taskId,"jump to userTask1");
11. 删除正在执行的当前任务
taskEntityManager.delete(taskId);
12. 此时设置执行实例的当前活动节点为目标节点
execution.setCurrentFlowElement(flowElement);
13. 向operations中压入继续流程的操作类
commandContext.getAgenda().planContinueProcessOperation(execution);
14. 部署流程文档
/**
* 部署流程文档
*/
public void deploy() {
//String resource = "com/shareniu/activiti6/study_network1/taskservice/leave.bpmn";
//String resource = "com/shareniu/activiti6/study_network1/taskservice/leave_var.bpmn";
String resource = "com/shareniu/activiti6/study_network1/taskservice/leave_listener.bpmn";
String category = "leave";
Deployment deploy = repositoryService.createDeployment().addClasspathResource(resource).category(category)
.deploy();
System.out.println(deploy);
}
15. 启动流程实例
String processDefinitionKey = "leave";
Map<String, Object> vars=new HashMap<String, Object>();
//vars.put("userId", "张无忌");
ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefinitionKey,vars);
16.任务完成
String taskId="shareniu6a7bbb68-8a2d-41f8-997f-52bb1bdb9c97";
taskService.complete(taskId);
17.变量作用域
// 查询task
Task task1 = taskService.createTaskQuery().singleResult();
// 设置全局变量
taskService.setVariable(task1.getId(),"key1","value1");
// 设置局部变量
taskService.setVariableLocal(task1.getId(),"key2","value2");
// 获取全局变量
Map<String,Object> a = taskService.getVariables(task1.getId());
// 获取局部变量
Map<String,Object> b = taskService.getVariablesLocal(task1.getId());
// 获取全局变量
Map<String,Object> c = runtimeService.getVariables(processInstance.getId());
18. 任务认领
setAssignee和claim两个的区别是在认领任务时,claim会检查该任务是否已经被认领,如果被认领则会抛出ActivitiTaskAlreadyClaimedException
而setAssignee不会进行这样的检查,其他方面两个方法效果一致
taskService.setAssignee(String taskId, String userId);
taskService.claim(String taskId, String userId);
19. 删除流程实例
commandContext.getExecutionEntityManager()
.deleteProcessInstance(processInstanceId, deleteReason, true);