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;
|
|
import java.util.Map;
|
|
/**
|
* 流程监听服务
|
*
|
* @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, Map<String, Object> params, 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.setParams(params);
|
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);
|
}
|
|
}
|