Camunda大杂烩(二:开启与流转)
开启流程

在获取到当前部署的拓扑版本后,可以拿到对应的key值,当然,画图的时候可以自己定义对应的值,此处开启流程就要用到对应的key:Process_0ow880b,执行以下方法后,可以获取到当前启动流程的id,这个id后续可能会用到:
/** * 开始一个流程 * * @param processDefinitionKey 流程key * @return 流程内容 */ @PostMapping(value = "/start") @ApiOperation("开始一个流程") public String start(String processDefinitionKey) { return camundaService.startProcess(processDefinitionKey).getId(); }
我们登录Camunda的后台可以发现,一个流程已经进行到了“用户提交节点”(这是由于“开启流程”节点并非人工节点,我也并没在后面设置跳转条件与参数,因此startProcess后,流程跑到了第一个需要处理的节点上):
流程视角(Cockpit),此处可以看到最新的流程Id=57bccb26-d197-11ec-b3a1-a4b1c191e7b9:

任务视角(Task),此处可以发现该task Id = 57bcf23a-d197-11ec-b3a1-a4b1c191e7b9:

任务处理
上面我们可以通过后台直接看到启动的流程和任务id,但是实际项目中,可以通过一些查询手段获取当前用户或某些条件下的任务,此处flowId就是上面的流程Id=57bccb26-d197-11ec-b3a1-a4b1c191e7b9:
/** * 根据流程号获取任务列表 * * @param flowId 流程号 * @return 任务列表 */ public List<Task> getTaskListByFlowId(String flowId) { return taskService.createTaskQuery().processInstanceId(flowId).list(); }
结果如图:

获取到taskId后,通过以下方法,传入taskId及跳转需要的参数,将流程流转下去:
/** * 下一步操作 * * @param taskCompleteRequestDTO 请求 * @return 是否成功 */ @PostMapping(value = "/next") @ApiOperation("下一步") public Boolean next(@RequestBody TaskCompleteRequestDTO taskCompleteRequestDTO) { return camundaService.taskComplete(taskCompleteRequestDTO.getTaskId(), taskCompleteRequestDTO.getMap()); }
通过一开始画的图可以发现,走到“三级领导审批”节点需要branch==3,且三级领导处需要待审批人字段approver,因此map中传入对应参数及值即可:

传参类似,放进map就行了:

提交后可以看到,一个流程流转到了“三级领导审批节点”,后续的流程也类似:


浙公网安备 33010602011771号