activiti6.0 mysql_activiti6.0的常用方法

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 vars=new HashMap();

//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 a = taskService.getVariables(task1.getId());

// 获取局部变量

Map b = taskService.getVariablesLocal(task1.getId());

// 获取全局变量

Map 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);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值