预警插件——数据源插件使用说明
为针对不同的业务场景提供定制化的预警功能,平台提供了预警插件机制,使用者可以通过编写插件对预警监控过程进行干预,从而实现使用定制化预警功能。下图为预警平台插件设置入口在新增/编辑业务预警对象页面。
![0109d30c339b5e62424096e1901ae4cb9d03.webp](https://vip.kingdee.com/download/0109d30c339b5e62424096e1901ae4cb9d03.webp)
预警平台提供了默认单据、基础资料条件配置页面,该配置受限于选择的数据源。比如当我们需要处理多个数据源时,这种情况通过上述默认的配置方式比较难以处理,因此就需要平台提供的自定义数据源插件机制来处理多数据源协同预警的场景。自定义数据源拥有完整的功能,可以控制到整个预警数据取数过程。
## 业务场景
某企业需要对商品库存进行低库存的预警,若存在一段时间仍未处理的低库存商品时,触发预警。
## 实现方案
编写数据源插件,可以继承至系统提供的默认单据数据源DefaultEarlyWarnBillDataSource或实现自定义数据源接口IEarlyWarnDataSource,重写getData()方法,合并自定义过滤条件与页面配置的通用过滤条件。
## 代码示例
```
/**
*在这里,我们要先找出未处理(status=0)的商品,商品处理状态信息存储在stock_status_demo单据中。我们还需要通过工号关联用户信息表stock_user,根据用户id
*把处理通知发送给对应的库管。
*在这个场景中,我们需要处理多个数据源,此时就要用到自定义数据源插件来处理多数据源协同预警的场景。自定义数据源拥有完整的功能,可以控制到整个预警数据取数过
*程。
*
*/
public class DataSourceDemo implements IEarlyWarnDataSource {
/**
* 构建过滤数据
* @param dataSource 数据源
* @param filterCondition 过滤条件
* @param context 引擎执行上下文
* @return 过滤条件
*/
@Override
public List<QFilter> buildFilter(String dataSource, FilterCondition filterCondition, EarlyWarnContext context) {
List<QFilter> statusFilters = new ArrayList<>();
statusFilters.add(new QFilter("status1","=","0"))
return statusFilters;
}
/**
* 获取数据
* @param dataSource 数据源
* @param filters 过滤条件
* @param context 引擎执行上下文
* @return 过滤得到的数据
*/
@Override
public DynamicObjectCollection getData(String dataSource, List<QFilter> filters, EarlyWarnContext context) {
DynamicObject[] goods = BusinessDataServiceHelper.load("stock_status_demo","operatorid", new QFilter[]{filters.get(0)});
if (goods == null || goods.length == 0){
return new DynamicObjectCollection();
}
List<Long> idList = new ArrayList<>();
for (DynamicObject good : goods) {
idList.add(good.getLong("operatorid"));
}
if (idList.isEmpty()){
return new DynamicObjectCollection();
}
QFilter[] operatorFilters = new QFilter[]{new QFilter("number","in",idList)};
return QueryServiceHelper.query("stock_user","name,number,id",operatorFilters);
}
/**
* 监控方案通用过滤获取通用过滤条件展示数据
* @param dataSource 数据源
* @return 通用过滤条件,条件格式参照 EntityTypeUtil.getFilterColumns的返回数据
*/
@Override
public List<Map<String, Object>> getCommonFilterColumns(String dataSource) {
return null;
}
/**
* 预警单条消息配置页面可选字段树
* @param dataSource 数据源
* @return 根节点
*/
@Override
public TreeNode getSingleMessageFieldTree(String dataSource) {
return new TreeNode();
}
/**
* 预警合并消息配置页面可选字段树
* @param dataSource 数据源
* @return 根节点
*/
@Override
public TreeNode getMergeMessageFieldTree(String dataSource) {
return new TreeNode();
}
}
```
由于后续的预警监控方案中的默认监控条件和消息模板设置页面与数据源有关,因此接下来需要配合自定义消息解析插件使用。所以效果图展示在《预警插件——消息解析插件》中。
## 插件注册
![数据源.webp](/download/0100b4c9575f37b84277a823dbaf39b6d782.webp)
预警插件——数据源插件使用说明
为针对不同的业务场景提供定制化的预警功能,平台提供了预警插件机制,使用者可以通过编写插件对预警监控过程进行干预,从而实现使用定制化...
点击下载文档
上一篇:一文掌握预警插件的五种写法
下一篇:预警插件——数据写出插件使用说明
本文2024-09-23 00:38:40发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140796.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章