update - REQ-2516-流程接口继承order接口增加排序,调整Listener生成bean方式
This commit is contained in:
parent
d07e580e7b
commit
96e277c85e
@ -7,6 +7,8 @@ import cn.axzo.framework.rocketmq.EventHandlerRepository;
|
||||
import cn.axzo.framework.rocketmq.EventProducer;
|
||||
import cn.axzo.framework.rocketmq.RocketMQEventProducer;
|
||||
import cn.axzo.workflow.starter.api.WorkflowCoreService;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.consumer.WorkflowEngineBroadcastEventListener;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.consumer.WorkflowListener;
|
||||
import cn.axzo.workflow.starter.mq.retry.consumer.WorkflowEngineStarterRetryEventListener;
|
||||
import cn.axzo.workflow.starter.mq.retry.producer.RpcInvokeEventProducer;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
@ -16,6 +18,7 @@ import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@ -25,6 +28,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@ -111,7 +115,7 @@ public class RocketMQConfiguration {
|
||||
consumeMode = ConsumeMode.ORDERLY,
|
||||
nameServer = "${rocketmq.name-server}"
|
||||
)
|
||||
public class WorkflowEngineBroadcastConsumer extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
public static class WorkflowEngineBroadcastConsumer extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
@Resource
|
||||
private EventConsumer eventConsumer;
|
||||
|
||||
@ -127,7 +131,7 @@ public class RocketMQConfiguration {
|
||||
consumeMode = ConsumeMode.CONCURRENTLY,
|
||||
nameServer = "${rocketmq.name-server}"
|
||||
)
|
||||
public class WorkflowEngineClientRetryConsumer extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
public static class WorkflowEngineClientRetryConsumer extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
@Resource
|
||||
private EventConsumer eventConsumer;
|
||||
|
||||
@ -144,4 +148,9 @@ public class RocketMQConfiguration {
|
||||
return new WorkflowEngineStarterRetryEventListener(eventConsumer, environment, workflowCoreService);
|
||||
}
|
||||
|
||||
@Bean(initMethod = "init")
|
||||
public WorkflowEngineBroadcastEventListener WorkflowEngineBroadcastEventListener(EventConsumer eventConsumer, ObjectProvider<List<WorkflowListener>> listeners) {
|
||||
return new WorkflowEngineBroadcastEventListener(eventConsumer, listeners.getIfAvailable());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.workflow.starter.listener;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
@ -8,7 +9,7 @@ import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
|
||||
* @author wangli
|
||||
* @since 2024/5/27 16:25
|
||||
*/
|
||||
public interface MessageNotificationListener {
|
||||
public interface MessageNotificationListener extends Ordered {
|
||||
|
||||
void pushNotice(MessagePushDTO messagePushDTO);
|
||||
|
||||
|
||||
@ -1,42 +1,39 @@
|
||||
package cn.axzo.workflow.starter.listener;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.ProcessActivityDTO;
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* @author wangli
|
||||
* @since 2024/5/27 16:25
|
||||
*/
|
||||
public interface ProcessActivityListener {
|
||||
public interface ProcessActivityListener extends Ordered {
|
||||
|
||||
/**
|
||||
* 节点已启动
|
||||
*
|
||||
* @param activityDTO 入参
|
||||
*/
|
||||
default void onStart(ProcessActivityDTO activityDTO) {
|
||||
}
|
||||
void onStart(ProcessActivityDTO activityDTO);
|
||||
|
||||
/**
|
||||
* 节点等待业务指定审批人
|
||||
*
|
||||
* @param activityDTO 入参
|
||||
*/
|
||||
default void onWaitAssignee(ProcessActivityDTO activityDTO) {
|
||||
}
|
||||
void onWaitAssignee(ProcessActivityDTO activityDTO);
|
||||
|
||||
/**
|
||||
* 节点已完成
|
||||
*
|
||||
* @param activityDTO 入参
|
||||
*/
|
||||
default void onTake(ProcessActivityDTO activityDTO) {
|
||||
}
|
||||
void onTake(ProcessActivityDTO activityDTO);
|
||||
|
||||
/**
|
||||
* 节点已取消
|
||||
*
|
||||
* @param activityDTO 入参
|
||||
*/
|
||||
default void onEnd(ProcessActivityDTO activityDTO) {
|
||||
}
|
||||
void onEnd(ProcessActivityDTO activityDTO);
|
||||
}
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
package cn.axzo.workflow.starter.listener;
|
||||
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/27 16:20
|
||||
*/
|
||||
public interface ProcessInstanceListener extends ProcessListener {
|
||||
public interface ProcessInstanceListener extends Ordered {
|
||||
|
||||
void created();
|
||||
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
package cn.axzo.workflow.starter.listener;
|
||||
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/27 16:26
|
||||
*/
|
||||
public interface ProcessListener {
|
||||
public interface ProcessListener extends Ordered {
|
||||
/**
|
||||
* 入参来源于配置
|
||||
*
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package cn.axzo.workflow.starter.listener;
|
||||
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/27 16:21
|
||||
*/
|
||||
public interface ProcessTaskListener {
|
||||
public interface ProcessTaskListener extends Ordered {
|
||||
}
|
||||
|
||||
@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@ -32,13 +33,14 @@ public class InnerActivityEventListener implements WorkflowListener {
|
||||
);
|
||||
|
||||
@Autowired
|
||||
private List<ProcessActivityListener> activityListeners;
|
||||
private ObjectProvider<List<ProcessActivityListener>> activityListenersProvider;
|
||||
|
||||
@Autowired
|
||||
private ListenerExecutor listenerExecutor;
|
||||
|
||||
@Override
|
||||
public void handEvent(Event event, EventConsumer.Context context) {
|
||||
List<ProcessActivityListener> activityListeners = activityListenersProvider.getIfAvailable();
|
||||
if (!CollectionUtils.isEmpty(activityListeners)) {
|
||||
ProcessActivityDTO activityDTO = JSON.parseObject(event.getData().toString(), ProcessActivityDTO.class);
|
||||
ProcessActivityEventEnum type = activityDTO.getType();
|
||||
|
||||
@ -30,6 +30,11 @@ public class InnerNoticeEventListener {
|
||||
|
||||
public static void main(String[] args) {
|
||||
MessageNotificationListener listener = new MessageNotificationListener() {
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pushNotice(MessagePushDTO messagePushDTO) {
|
||||
}
|
||||
|
||||
@ -7,24 +7,26 @@ import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2024/5/21 15:50
|
||||
*/
|
||||
@Component
|
||||
public class WorkflowEngineBroadcastEventListener implements EventHandler, InitializingBean {
|
||||
public class WorkflowEngineBroadcastEventListener implements EventHandler {
|
||||
private final Logger log = LoggerFactory.getLogger(WorkflowEngineBroadcastEventListener.class);
|
||||
private final EventConsumer eventConsumer;
|
||||
private final List<WorkflowListener> workflowListeners;
|
||||
|
||||
public void init() {
|
||||
eventConsumer.registerHandlers(InnerActivityEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerInstanceEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerNoticeEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerTaskEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
}
|
||||
|
||||
public WorkflowEngineBroadcastEventListener(EventConsumer eventConsumer, List<WorkflowListener> workflowListeners) {
|
||||
this.eventConsumer = eventConsumer;
|
||||
this.workflowListeners = workflowListeners;
|
||||
@ -43,12 +45,4 @@ public class WorkflowEngineBroadcastEventListener implements EventHandler, Initi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
eventConsumer.registerHandlers(InnerActivityEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerInstanceEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerNoticeEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
eventConsumer.registerHandlers(InnerTaskEventListener.SUPPORTED_EVENT_CODES, this);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user