camunda-流程实例
当流程定义部署之后,申请人就可以发起流程实例了
- 流程发起
- 完成节点任务
- 任务转发
ProcessInstanceController
@RestController
public class ProcessInstanceController {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
/**
* 流程发起
* @param dto
* @return: 返回 Definition ID
*/
@PostMapping("/process/instance/start")
public String startProcess(@RequestBody StartProcessRequestDto dto){
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(dto.getProcessDefinitionKey(), dto.getBusinessKey(), dto.getParams());
return processInstance.getProcessInstanceId();
}
/**
* 完成节点任务
* @param dto
* @return
*/
@PostMapping("/process/task/complete")
public String completeTask(@RequestBody CompleteTaskRequestDto dto){
taskService.complete(dto.getTaskId());
return "success";
}
/**
* 任务转发
* @param dto
* @return
*/
@PostMapping("/process/task/transfer")
public String transferTask(@RequestBody TransferTaskRequestDto dto){
taskService.setAssignee(dto.getTaskId(), dto.getUserId());
return "success";
}
}
StartProcessRequestDto
@Data
public class StartProcessRequestDto {
/**
* 流程定义key
*/
private String processDefinitionKey;
/**
* 业务 key
*/
private String businessKey;
/**
* 流程变量,比如审批人等等
*/
private Map<String,Object> params;
}
CompleteTaskRequestDto
@Data
public class CompleteTaskRequestDto {
/**
* 流程实例Id
*/
private String processInstanceId;
/**
* 任务节点
*/
private String taskId;
}
TransferTaskRequestDto
@Data
public class TransferTaskRequestDto {
/**
* 任务Id
*/
private String taskId;
/**
* 用户
*/
private String userId;
}