疯狂的狮子Li
2025-01-20 3c8d864b5f68af5167199e0d5c9ff6c0c5852638
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package org.dromara.workflow.handler;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.springframework.stereotype.Component;
/**
 * æµç¨‹ç›‘听服务
 *
 * @author may
 * @date 2024-06-02
 */
@ConditionalOnEnable
@Slf4j
@Component
public class FlowProcessEventHandler {
    /**
     * æ€»ä½“流程监听(例如: è‰ç¨¿ï¼Œæ’¤é”€ï¼Œé€€å›žï¼Œä½œåºŸï¼Œç»ˆæ­¢ï¼Œå·²å®Œæˆç­‰)
     *
     * @param flowCode   æµç¨‹å®šä¹‰ç¼–码
     * @param businessId ä¸šåŠ¡id
     * @param status     çŠ¶æ€
     * @param submit     å½“为true时为申请人节点办理
     */
    public void processHandler(String flowCode, String businessId, String status, boolean submit) {
        String tenantId = TenantHelper.getTenantId();
        log.info("发布流程事件,租户ID: {}, æµç¨‹çŠ¶æ€: {}, æµç¨‹ç¼–码: {}, ä¸šåŠ¡ID: {}, æ˜¯å¦ç”³è¯·äººèŠ‚ç‚¹åŠžç†: {}", tenantId, status, flowCode, businessId, submit);
        ProcessEvent processEvent = new ProcessEvent();
        processEvent.setTenantId(tenantId);
        processEvent.setFlowCode(flowCode);
        processEvent.setBusinessId(businessId);
        processEvent.setStatus(status);
        processEvent.setSubmit(submit);
        SpringUtils.context().publishEvent(processEvent);
    }
    /**
     * æ‰§è¡ŒåŠžç†ä»»åŠ¡ç›‘å¬
     *
     * @param flowCode   æµç¨‹å®šä¹‰ç¼–码
     * @param nodeCode   å®¡æ‰¹èŠ‚ç‚¹ç¼–ç 
     * @param taskId     ä»»åŠ¡id
     * @param businessId ä¸šåŠ¡id
     */
    public void processTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) {
        String tenantId = TenantHelper.getTenantId();
        log.info("发布流程任务事件, ç§Ÿæˆ·ID: {}, æµç¨‹ç¼–码: {}, èŠ‚ç‚¹ç¼–ç : {}, ä»»åŠ¡ID: {}, ä¸šåŠ¡ID: {}", tenantId, flowCode, nodeCode, taskId, businessId);
        ProcessTaskEvent processTaskEvent = new ProcessTaskEvent();
        processTaskEvent.setTenantId(tenantId);
        processTaskEvent.setFlowCode(flowCode);
        processTaskEvent.setNodeCode(nodeCode);
        processTaskEvent.setTaskId(taskId);
        processTaskEvent.setBusinessId(businessId);
        SpringUtils.context().publishEvent(processTaskEvent);
    }
    /**
     * åˆ é™¤æµç¨‹ç›‘听
     *
     * @param flowCode    æµç¨‹å®šä¹‰ç¼–码
     * @param businessId  ä¸šåŠ¡ID
     */
    public void processDeleteHandler(String flowCode, String businessId) {
        String tenantId = TenantHelper.getTenantId();
        log.info("发布删除流程事件, ç§Ÿæˆ·ID: {}, æµç¨‹ç¼–码: {}, ä¸šåŠ¡ID: {}", tenantId, flowCode, businessId);
        ProcessDeleteEvent processDeleteEvent = new ProcessDeleteEvent();
        processDeleteEvent.setTenantId(tenantId);
        processDeleteEvent.setFlowCode(flowCode);
        processDeleteEvent.setBusinessId(businessId);
        SpringUtils.context().publishEvent(processDeleteEvent);
    }
}