一、概述
在常规的时间管理中是时间到了触发某个任务,这样一个时间点对应一个任务。在特殊的场景下,任务不断放送到时间队列,时间一到,全部任务执行并释放。如图:
二、时间队列组件
SMB提供了TimeFragment组件来构建时间队列。在General中可以找到:
它的属性很简单,只有interval属性,表示时间队列的释放频率。
三、案例分析
在我们自研的医院危急值系统中,有一个重要的功能就是由系统自动打电话给医护人员。在实际应用中有以下几个硬条件:
1、阿里云接收到电话请求有时间间隔要求,不能在短时间内重复发同一个号码;
2、医院检验科会在同一个时间给同科室推送多个危急值数据,要求临床都必须收到电话;
这两项都无法被我们应用厂商改变,同时必须被满足。那么如何解决?
这个医院需求催生了我们在SMB中建立时间队列。我们的方案是:
1、不限制危急值电话消息的接收;
2、将消息数据存入时间队列;
3、清洗:对时间队列中同科室消息进行合并;
4、以合理的时间间隔提交给阿里云;
业务消息流如:
JavaVoice组件向时间队列提交数据:
public String execute(MessageModel messageModel,String message){
FlowApi.printLog("hcvVoiceFlow_JavaVoice",message);
System.out.println(message);
String res = "";
if (message.isEmpty()) return "";
JSONObject json = null;
FlowApi.execute(this,"TimeFragment1",json,message);
return "ok";
}
此消息流部署后,电话接听率得到极大提高,危急值处置率也提升到90%以上。呈现的效果得到医务、质控科的高度赞赏。
四、总结
经过九节的介绍,从框架层面对SMB做了剖析,这是一款从性能、稳定、易用性都非常出色的产品。因为业务局限性,还有很多不完善的地方,希望后面在与合作伙伴共同努力下,变更更加丰富。