预警插件——消息处理插件使用说明

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

预警插件——消息处理插件使用说明

为针对不同的业务场景提供定制化的预警功能,平台提供了预警插件机制,使用者可以通过编写插件对预警监控过程进行干预,从而实现使用定制化预警功能。下图为预警平台插件设置入口在新增/编辑业务预警对象页面。 ![0109d30c339b5e62424096e1901ae4cb9d03.webp](https://vip.kingdee.com/download/0109d30c339b5e62424096e1901ae4cb9d03.webp) 预警平台将预警消息发送至消息中心后,默认情况下只在消息中心的消息预警中显示了一条预警消息数据。我们想对这条消息进行一些处理但受限于目前消息中心的处理机制,目前只提供了基于URL的跳转实现方式,通过URL将所需参数携带至相关的页面,这时候可以自定义消息处理插件来生成快速跳转链接。 ## 业务场景 某企业需要对商品库存进行低库存的预警,发送的预警消息根据实际情况生成,同时在消息中为库管提供快速处理链接。 ## 实现方案 编写预警消息处理插件实现IEarlyWarnMessageHandler接口,实现接口方法,在接口中可以通过上下文获取到相关的数据,构建自己想要的URL即可。 ## 代码示例 ``` /** * 下面是以发送预警消息的单据生成的快速处理链接的完整实现方式 */ public class EarlyWarnMessageHandlerDemo implements IEarlyWarnMessageHandler { private final Log logger = LogFactory.getLog(DefaultWarnMessageHandler.class); private String clientPath = "";//客户端地址 private String formId = "";//pc端表单标识 private String mobFormId = "";//移动端表单标识 public EarlyWarnMessageHandlerDemo(EarlyWarnContext context) { RequestContext ctx = RequestContext.get(); this.clientPath = UrlService.getDomainContextUrlByTenantCode(ctx.getTenantCode());//拿到完整的客户端网址 this.formId = context.getEarlyWarn().getDataSourceId(); //获取移动端标识 if(StringUtils.isNotEmpty(formId)){ try{ ControlAp<?> controlAp = ((FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(formId, MetaCategory.Form), MetaCategory.Form)).getItems().get(0); if (controlAp instanceof BillFormAp){ BillFormAp billFormAp = (BillFormAp)controlAp; FormMetadata mobMeta = billFormAp.getMobMeta(); String tempMobFormId = mobMeta.getKey(); //如果拿到的移动端标识和基模板的移动端标识一致,认为用户未配置移动表单 if(!StringUtils.equals(tempMobFormId,"bos_billtpl_mob")){ mobFormId = tempMobFormId; } } }catch (Exception e){ logger.error("GETMOB_ERROR : " + e); } } } /** * 自定义选择预警内容时发送单条消息的快速处理链接 * @param data 数据 * @param context 预警引擎执行上下文 * @return */ @Override public EarlyWarnMessageInfo singleMessageBuilder(DynamicObject data, EarlyWarnContext context) { if (StringUtils.isNotEmpty(clientPath) && StringUtils.isNotEmpty(formId) && data != null) { EarlyWarnMessageInfo messageInfo = new EarlyWarnMessageInfo(); String pkId = data.get("id").toString();//对应单据的内码 StringBuilder contentUrl = new StringBuilder(clientPath); contentUrl = contentUrl.append("?formId=").append(formId).append("&pkId=").append(pkId);//pc端跳转单据路径 // String contentUrl = clientPath+"?formId="+formId+"&pkId="+pkId;//pc端跳转单据路径 //如果用户未配置移动表单,则不生成移动端url if (StringUtils.isNotEmpty(mobFormId)) { StringBuilder mobContentUrl = new StringBuilder(clientPath); if (!clientPath.endsWith("/")) { mobContentUrl = mobContentUrl.append("/"); } mobContentUrl = mobContentUrl.append("mobile.html?form=").append(mobFormId).append("&pkId=").append(pkId);//移动端跳转单据路径 // String mobContentUrl = clientPath + "mobile.html?form=" + mobFormId + "&pkId=" + pkId;//移动端跳转单据路径 messageInfo.setMobContentUrl(mobContentUrl.toString()); } messageInfo.setContentUrl(contentUrl.toString()); return messageInfo; } return null; } /** * 自定义选择合并消息时发生的快速处理的链接 * @param context 预警引擎执行上下文 * @return */ @Override public EarlyWarnMessageInfo mergeMessageBuilder(EarlyWarnContext context) { return null; } } ``` ## 插件注册 ![消息处理.webp](/download/0100f651de8ed4b64fd0b70306acd88d31bb.webp) ## 效果展示 ![img](https://vip.kingdee.com/download/0109d4ed663b401b4cecb323b7a728a509b1.webp)

预警插件——消息处理插件使用说明

为针对不同的业务场景提供定制化的预警功能,平台提供了预警插件机制,使用者可以通过编写插件对预警监控过程进行干预,从而实现使用定制化...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息