手把手教你使用业务事件中心执行插件
当业务事件中心中预制的标准服务,如发送消息、执行操作等不能满足客户的实际业务场景时,我们应该怎么办呢?你想了解的,小编都将一一解答。
1 应用场景
如上所述,当事件中心预制的标准服务不能满足现有的业务场景时,我们可以通过扩展服务或者编写插件的方式来自定义自己的业务逻辑。
其中,编写一个处理相关业务逻辑的插件对于开发人员来讲是比较友好且高效的方式。
本期,小编就带大家一起了解业务事件中心插件的使用方式。
2 解决方案
业务事件中心提供了标准服务:执行插件,可以对自定义的插件进行微服务调用,执行相应的业务逻辑,然后通过事件驱动的方式,执行对应的插件。
3 价值体现
业务事件中心支持自定义插件,为开发人员支持特殊业务场景提供了一种途径,插件中的业务逻辑可自行定义。同时,插件支持微服务调用,使得插件可以部署在任何工程下,避免因反射调用而出现找不到插件的情况。
4 功能详情
下面小编就为你介绍如何编写业务事件中心插件。
首先,插件需要实现IEventServicePlugin接口并重写handleEvent方法。因为目前事件分为苍穹事件和自定义事件,所以接口传递的参数是两种类型事件的父类型KDBizEvent。
当可以明确触发插件的事件类型时,我们可以直接进行类型转换。
如果需要做一个同时支持苍穹事件和自定义事件的插件,只需对事件进行判断即可。具体代码如下所示:
public Object handleEvent(KDBizEvent evt) { if (evt instanceof EntityEvent) {//苍穹事件 EntityEvent entityEvent = (EntityEvent) evt;//类型转换 String businesskey = entityEvent.getBusinesskeys().get(0); String entityNumber = entityEvent.getEntityNumber(); DynamicObject obj = BusinessDataServiceHelper.loadSingle(businesskey, entityNumber); Long evtID = evt.getEventId(); String source = evt.getSource();//传递的事件参数 } else {//自定义事件 JsonEvent jsonEvent = (JsonEvent) evt;//类型转换 String source = jsonEvent.getSource();//传递的事件参数 if (WfUtils.isNotEmpty(source)) { JSONArray arr = (JSONArray) JSON.parse(source); } } return null; }
其中:evt.getSource中的数据,是事件定义→事件参数中打开传递数据开关后在单据中取的数据。
evt.getSource的数据源示例
那么,插件编写完成后如何使用呢?
需要在【流程服务云】→【业务事件中心】→【事件订阅】→【执行服务】中选择执行插件服务。
选择执行插件服务示例
将事件和执行插件服务绑定,形成如下图所示的事件订阅。当事件被触发时,就会执行对应的插件。
事件订阅示例
5 常见问题
Q:一个事件只能配置一个服务吗?
A:同一事件可以配置多个服务,每个服务都会异步执行。
6 相关链接
7 划重点
编写业务事件中心插件需要注意以下两点:
1、业务事件中心执行插件服务的设置方式:【流程服务云】→【业务事件中心】→【事件订阅】→【执行服务】中选择执行插件服务;
2、获取业务事件中心插件接口提供的参数及其使用方式:通过KDBizEvent实体拿到参数进行业务逻辑编写。
#往期推荐#
更多精彩内容,“码”上了解!↓
手把手教你使用业务事件中心执行插件
本文2024-09-23 00:59:25发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-143038.html