feat(REQ-3647) - 新增 IM 类型推送 MQ 广播事件

This commit is contained in:
wangli 2025-06-11 19:39:20 +08:00
parent ed748f531a
commit ea6789188f
9 changed files with 44 additions and 11 deletions

View File

@ -17,7 +17,7 @@ import java.util.List;
@Data
public class BpmnTaskRemindDTO {
/**
* 终端类型
* 操作催办时的终端类型管理端cm工人端cmp
*/
@NotBlank(message = "终端类型不能为空")
private String terminalType;

View File

@ -75,5 +75,9 @@ public class MessagePushDTO implements Serializable {
* 节点电子签开关
*/
private Boolean activitySignature;
/**
* 催办专用属性催办时的终端类型管理端工人端
*/
private String terminalType;
}

View File

@ -37,4 +37,6 @@ public interface MessagePushEvent extends FlowableEvent {
String getImTemplateCode();
String getTerminalType();
}

View File

@ -29,11 +29,11 @@ public class MessagePushEventBuilder {
public static MessagePushEventImpl createEvent(MessagePushEventType type, List<BpmnTaskDelegateAssigner> assigners,
BpmnNoticeConf noticeConf, String processInstanceId, String processDefinitionKey,
String tenantId, String taskId, Boolean activitySignature) {
return createEvent(type, assigners, noticeConf, processInstanceId, processDefinitionKey, tenantId, taskId, activitySignature, null);
return createEvent(type, assigners, noticeConf, processInstanceId, processDefinitionKey, tenantId, taskId, activitySignature, null, null);
}
public static MessagePushEventImpl createEvent(MessagePushEventType type, List<BpmnTaskDelegateAssigner> assigners,
BpmnNoticeConf noticeConf, String processInstanceId, String processDefinitionKey,
String tenantId, String taskId, Boolean activitySignature, String imTemplateCode) {
String tenantId, String taskId, Boolean activitySignature, String imTemplateCode, String terminalType) {
switch (type) {
case NOTICE:
return createNoticeEvent(assigners, noticeConf, processInstanceId, processDefinitionKey, tenantId, taskId, activitySignature);
@ -48,7 +48,7 @@ public class MessagePushEventBuilder {
case SMS:
return createSmsEvent(assigners, noticeConf, processInstanceId, processDefinitionKey, tenantId, taskId, activitySignature);
case IM:
return createImEvent(assigners, imTemplateCode, processInstanceId);
return createImEvent(assigners, imTemplateCode, processInstanceId, terminalType);
default:
throw new WorkflowEngineException(MES_PUSH_OBJECT_BUILD_ERROR);
}
@ -128,7 +128,8 @@ public class MessagePushEventBuilder {
public static MessagePushEventImpl createImEvent(List<BpmnTaskDelegateAssigner> assigners,
String imTemplateCode,
String processInstanceId) {
return new MessagePushEventImpl(IM, assigners, imTemplateCode, processInstanceId);
String processInstanceId,
String terminalType) {
return new MessagePushEventImpl(IM, assigners, imTemplateCode, processInstanceId, terminalType);
}
}

View File

@ -31,6 +31,7 @@ public class MessagePushEventImpl implements MessagePushEvent {
private String tenantId;
private String taskId;
private String imTemplateCode;
private String terminalType;
public MessagePushEventImpl(FlowableEventType type) {
if (type == null) {
@ -63,9 +64,10 @@ public class MessagePushEventImpl implements MessagePushEvent {
}
public MessagePushEventImpl(FlowableEventType type, List<BpmnTaskDelegateAssigner> assigners, String imTemplateCode,
String processInstanceId) {
String processInstanceId, String terminalType) {
this(type, assigners, null, processInstanceId, null, null, null);
this.imTemplateCode = imTemplateCode;
this.terminalType = terminalType;
}
/**
@ -206,6 +208,15 @@ public class MessagePushEventImpl implements MessagePushEvent {
this.imTemplateCode = imTemplateCode;
}
@Override
public String getTerminalType() {
return terminalType;
}
public void setTerminalType(String terminalType) {
this.terminalType = terminalType;
}
@Override
public String toString() {
return getClass() + " - " + type;

View File

@ -910,7 +910,7 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService {
Lists.newArrayList(assigner), noticeConfig.orElse(null), processInstance.getProcessInstanceId(),
processInstance.getProcessDefinitionKey(), processInstance.getTenantId(), task.getId(),
getActivitySignature(process.getFlowElement(dto.getTaskDefinitionKey())),
refreshProperties.getImTemplateCode());
refreshProperties.getImTemplateCode(), dto.getTerminalType());
eventDispatcher.dispatchEvent(event, processEngineConfiguration.getEngineCfgKey());
});
});

View File

@ -335,13 +335,14 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener<
@Override
public void onIm(MessagePushEvent event) {
if (!StringUtils.hasText(event.getImTemplateCode())) {
if (!StringUtils.hasText(event.getImTemplateCode()) && !StringUtils.hasText(event.getTerminalType())) {
log.warn("RocketMqMessagePushEventListener#onIm...ignore, imTemplateCode or terminalType is empty, event: {}", JSONUtil.toJsonStr(event));
return;
}
log.info("RocketMqMessagePushEventListener#onIm...msgTemplateId: {}, receivePerson: {}, processInstanceId: {}",
event.getImTemplateCode(), JSONUtil.toJsonStr(event.getAssigners()), event.getProcessInstanceId());
MessagePushDTO dto = build(event.getImTemplateCode(),
PROCESS_PUSH_IM, event, collectionVariable(event), event.getActivitySignature());
PROCESS_PUSH_IM, event, collectionVariable(event), event.getActivitySignature(), event.getTerminalType());
sendMessageQueue(dto, PROCESS_PUSH_IM);
log.info("RocketMqMessagePushEventListener#onIm...end, msgTemplateId: {}, receivePerson: {}, processInstanceId: {}",
event.getImTemplateCode(), JSONUtil.toJsonStr(event.getAssigners()), event.getProcessInstanceId());
@ -423,6 +424,11 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener<
public MessagePushDTO build(String templateId, ProcessMessagePushEventEnum type, MessagePushEvent event, Map<String,
Object> variables, Boolean activitySignature) {
return build(templateId, type, event, variables, activitySignature, null);
}
public MessagePushDTO build(String templateId, ProcessMessagePushEventEnum type, MessagePushEvent event, Map<String,
Object> variables, Boolean activitySignature, String terminalType) {
return new MessagePushDTO()
.setProcessInstanceId(event.getProcessInstanceId())
.setAdscriptionTenantId(event.getTenantId())
@ -433,7 +439,8 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener<
.setReceivePersons(event.getAssigners())
.setVariables(variables)
.setProcessApproveConf(event.getProcessApproveConfig())
.setActivitySignature(activitySignature);
.setActivitySignature(activitySignature)
.setTerminalType(terminalType);
}

View File

@ -83,4 +83,10 @@ public interface MessageNotificationEventHandler extends Ordered {
default void pushSms(MessagePushDTO dto) {
}
/**
* IM 推送
* @param dto
*/
default void pushIm(MessagePushDTO dto) {}
}

View File

@ -66,6 +66,8 @@ public class InnerNotificationEventListener extends AbstractInnerWorkflowListene
case PROCESS_PUSH_SMS:
consumer = noticeListener::pushSms;
break;
case PROCESS_PUSH_IM:
consumer = noticeListener::pushIm;
default:
log.warn("unknown message event type: {}", type);
}