activiti工作流activitiactiviti工作流

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);
上一篇 下一篇

猜你喜欢

热点阅读