mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	update 优化流程办理监听,优化示例说明
This commit is contained in:
		@@ -18,9 +18,14 @@ public class ProcessTaskEvent implements Serializable {
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点)
 | 
			
		||||
     * 流程定义key
 | 
			
		||||
     */
 | 
			
		||||
    private String keyNode;
 | 
			
		||||
    private String key;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 审批节点key
 | 
			
		||||
     */
 | 
			
		||||
    private String taskDefinitionKey;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 任务id
 | 
			
		||||
 
 | 
			
		||||
@@ -34,13 +34,15 @@ public class FlowProcessEventHandler {
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行办理任务监听
 | 
			
		||||
     *
 | 
			
		||||
     * @param keyNode     流程定义key与流程节点标识(拼接方式:流程定义key_流程节点)
 | 
			
		||||
     * @param taskId      任务id
 | 
			
		||||
     * @param businessKey 业务id
 | 
			
		||||
     * @param key               流程key
 | 
			
		||||
     * @param taskDefinitionKey 审批节点key
 | 
			
		||||
     * @param taskId            任务id
 | 
			
		||||
     * @param businessKey       业务id
 | 
			
		||||
     */
 | 
			
		||||
    public void processTaskHandler(String keyNode, String taskId, String businessKey) {
 | 
			
		||||
    public void processTaskHandler(String key, String taskDefinitionKey, String taskId, String businessKey) {
 | 
			
		||||
        ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
 | 
			
		||||
        processTaskEvent.setKeyNode(keyNode);
 | 
			
		||||
        processTaskEvent.setKey(key);
 | 
			
		||||
        processTaskEvent.setTaskDefinitionKey(taskDefinitionKey);
 | 
			
		||||
        processTaskEvent.setTaskId(taskId);
 | 
			
		||||
        processTaskEvent.setBusinessKey(businessKey);
 | 
			
		||||
        SpringUtils.context().publishEvent(processTaskEvent);
 | 
			
		||||
 
 | 
			
		||||
@@ -184,8 +184,8 @@ public class ActTaskServiceImpl implements IActTaskService {
 | 
			
		||||
            }
 | 
			
		||||
            runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus());
 | 
			
		||||
            //办理监听
 | 
			
		||||
            String keyNode = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey();
 | 
			
		||||
            flowProcessEventHandler.processTaskHandler(keyNode, task.getId(), processInstance.getBusinessKey());
 | 
			
		||||
            flowProcessEventHandler.processTaskHandler(processInstance.getProcessDefinitionKey(), task.getTaskDefinitionKey(),
 | 
			
		||||
                task.getId(), processInstance.getBusinessKey());
 | 
			
		||||
            //办理意见
 | 
			
		||||
            taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage());
 | 
			
		||||
            //办理任务
 | 
			
		||||
 
 | 
			
		||||
@@ -134,10 +134,15 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 执行办理任务监听
 | 
			
		||||
     * 示例:也可通过  @EventListener(condition = "#processTaskEvent.key=='leave1'")进行判断
 | 
			
		||||
     * 在方法中判断流程节点key
 | 
			
		||||
     * if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) {
 | 
			
		||||
     * //执行业务逻辑
 | 
			
		||||
     * }
 | 
			
		||||
     *
 | 
			
		||||
     * @param processTaskEvent 参数
 | 
			
		||||
     */
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'")
 | 
			
		||||
    @EventListener(condition = "#processTaskEvent.key=='leave1' && #processTaskEvent.taskDefinitionKey=='Activity_14633hx'")
 | 
			
		||||
    public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
 | 
			
		||||
        log.info("当前任务执行了{}", processTaskEvent.toString());
 | 
			
		||||
        TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey()));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user