feat(REQ-2616) - Starter 过滤实现增加调整
This commit is contained in:
parent
d5dbec75b0
commit
8ad27e017e
@ -104,6 +104,7 @@ public class StarterBroadcastMQConfiguration {
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt message) {
|
||||
// 处理 properties 配置进行事件过滤
|
||||
for (InnerMessageQueueHandleBeforeFilter filter : filters) {
|
||||
if (filter.doFilter(message)) {
|
||||
log.info("【{}】message has been filtered, messageId: {}", this.getClass().getSimpleName(), message.getMsgId());
|
||||
|
||||
@ -13,6 +13,16 @@ import org.springframework.core.Ordered;
|
||||
*/
|
||||
public interface MessageNotificationEventHandler extends Ordered {
|
||||
|
||||
/**
|
||||
* 针对当前实现进行过滤
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
default boolean filter(MessagePushDTO dto) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 站内信推送
|
||||
*
|
||||
|
||||
@ -18,6 +18,16 @@ import org.springframework.core.Ordered;
|
||||
*/
|
||||
public interface ProcessActivityEventHandler extends Ordered {
|
||||
|
||||
/**
|
||||
* 针对当前实现进行过滤
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
default boolean filter(ProcessActivityDTO dto) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 节点已启动
|
||||
*
|
||||
|
||||
@ -15,6 +15,16 @@ import org.springframework.core.Ordered;
|
||||
*/
|
||||
public interface ProcessInstanceEventHandler extends Ordered {
|
||||
|
||||
/**
|
||||
* 针对当前实现进行过滤
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
default boolean filter(ProcessInstanceDTO dto) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程实例创建成功后回调
|
||||
*
|
||||
|
||||
@ -15,6 +15,16 @@ import org.springframework.core.Ordered;
|
||||
*/
|
||||
public interface ProcessTaskEventHandler extends Ordered {
|
||||
|
||||
/**
|
||||
* 针对当前实现进行过滤
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
default boolean filter(ProcessTaskDTO dto) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户任务已指派审核人
|
||||
*/
|
||||
|
||||
@ -1,11 +1,14 @@
|
||||
package cn.axzo.workflow.starter.handler.filter;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.MessagePushDTO;
|
||||
import cn.axzo.workflow.starter.handler.MessageNotificationEventHandler;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.filter.BasicMessageQueueFilter;
|
||||
|
||||
/**
|
||||
* MessageNotificationEvent 的自定义过滤接口
|
||||
* <p>
|
||||
* 该接口的实现,是会全局过滤,比如当应用需要监听多个流程模型时,全局过滤会不精确,所以我们还提供了针对 {@link MessageNotificationEventHandler#filter(MessagePushDTO)} 实例的专属过滤
|
||||
* <p>
|
||||
* 注意:Order 的顺序,遵循值越小越优先。(取值范围:Integer. MIN_VALUE - Integer. MAX_VALUE)
|
||||
*
|
||||
* @author wangli
|
||||
|
||||
@ -1,11 +1,14 @@
|
||||
package cn.axzo.workflow.starter.handler.filter;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.ProcessActivityDTO;
|
||||
import cn.axzo.workflow.starter.handler.ProcessActivityEventHandler;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.filter.BasicMessageQueueFilter;
|
||||
|
||||
/**
|
||||
* ProcessActivityEvent 自定义的过滤接口
|
||||
* <p>
|
||||
* 该接口的实现,是会全局过滤,比如当应用需要监听多个流程模型时,全局过滤会不精确,所以我们还提供了针对 {@link ProcessActivityEventHandler#filter(ProcessActivityDTO)} 实例的专属过滤
|
||||
* <p>
|
||||
* 注意:Order 的顺序,遵循值越小越优先。(取值范围:Integer. MIN_VALUE - Integer. MAX_VALUE)
|
||||
*
|
||||
* @author wangli
|
||||
|
||||
@ -1,11 +1,14 @@
|
||||
package cn.axzo.workflow.starter.handler.filter;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO;
|
||||
import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.filter.BasicMessageQueueFilter;
|
||||
|
||||
/**
|
||||
* ProcessInstanceEvent 自定义的过滤接口
|
||||
* <p>
|
||||
* 该接口的实现,是会全局过滤,比如当应用需要监听多个流程模型时,全局过滤会不精确,所以我们还提供了针对 {@link ProcessInstanceEventHandler#filter(ProcessInstanceDTO)} 实例的专属过滤
|
||||
* <p>
|
||||
* 注意:Order 的顺序,遵循值越小越优先。(取值范围:Integer. MIN_VALUE - Integer. MAX_VALUE)
|
||||
*
|
||||
* @author wangli
|
||||
|
||||
@ -1,11 +1,14 @@
|
||||
package cn.axzo.workflow.starter.handler.filter;
|
||||
|
||||
import cn.axzo.workflow.common.model.response.mq.ProcessTaskDTO;
|
||||
import cn.axzo.workflow.starter.handler.ProcessTaskEventHandler;
|
||||
import cn.axzo.workflow.starter.mq.broadcast.filter.BasicMessageQueueFilter;
|
||||
|
||||
/**
|
||||
* ProcessTaskEvent 自定义的过滤接口
|
||||
* <p>
|
||||
* 该接口的实现,是会全局过滤,比如当应用需要监听多个流程模型时,全局过滤会不精确,所以我们还提供了针对 {@link ProcessTaskEventHandler#filter(ProcessTaskDTO)} 实例的专属过滤
|
||||
* <p>
|
||||
* 注意:Order 的顺序,遵循值越小越优先。(取值范围:Integer. MIN_VALUE - Integer. MAX_VALUE)
|
||||
*
|
||||
* @author wangli
|
||||
|
||||
@ -54,16 +54,14 @@ public abstract class AbstractInnerWorkflowListener<H extends Ordered, F extends
|
||||
|
||||
@Override
|
||||
public void handleEvent(Event event, EventConsumer.Context context) {
|
||||
if (CollectionUtils.isEmpty(businessListeners)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Target convert = convert(event);
|
||||
|
||||
for (F filter : businessFilters) {
|
||||
if (filter.doFilter(event, context, convert)) {
|
||||
log.info("【{}】filtered message, messageId: {}", filter.getClass().getSimpleName(), context.getMsgId());
|
||||
return;
|
||||
if (!CollectionUtils.isEmpty(businessListeners)) {
|
||||
for (F filter : businessFilters) {
|
||||
if (filter.doFilter(event, context, convert)) {
|
||||
log.info("【{}】filtered message, messageId: {}", filter.getClass().getSimpleName(), context.getMsgId());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -65,7 +65,9 @@ public class InnerActivityEventListener extends AbstractInnerWorkflowListener<Pr
|
||||
default:
|
||||
log.warn("unknown process activity event type: {}", type);
|
||||
}
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
if (!activityListener.filter(dto)) {
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -68,7 +68,9 @@ public class InnerInstanceEventListener extends AbstractInnerWorkflowListener<Pr
|
||||
default:
|
||||
log.warn("unknown process activity event type: {}", type);
|
||||
}
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
if (!instanceListener.filter(dto)) {
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -69,7 +69,9 @@ public class InnerNotificationEventListener extends AbstractInnerWorkflowListene
|
||||
default:
|
||||
log.warn("unknown message event type: {}", type);
|
||||
}
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
if (!noticeListener.filter(dto)) {
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -60,7 +60,9 @@ public class InnerTaskEventListener extends AbstractInnerWorkflowListener<Proces
|
||||
default:
|
||||
log.warn("unknown task event type: {}", type);
|
||||
}
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
if (!taskListener.filter(dto)) {
|
||||
listenerExecutor.execute(consumer, context, dto);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user