篇首语:一家之言,姑且听之~
事情是这样的,原本以为设计了EQIM触发和手动拷贝小G的地震消息进行触发这两种方式已经可以无忧无虑了,事实证明我还是天真了。
突如其来的一次4.9级地震,由于没有达到预设的EQIM自动触发的震级阈值(国内5级),所以EQIM并没有自动触发流程运行,但是谁知道通知要会商,果然随性得很,于是乎决定采取第2种方式:手动拷贝小G的地震消息进行触发。
悲剧发生了,往常活泼的小G居然没有推送报告,自然就无法直接拷贝它的地震消息进行触发了,之前因为感觉小G的地震信息相对完整,年月日时分秒都有,于是流程设计之初就以它的格式进行解析。这下给了我当头一棒。
于是,我只能退而求其次,基于12322收到的地震短信进行修改,改成类似小G地震信息的格式,然后拷贝到微信端触发流程,时间仿佛非常漫长,颤抖的小手在那狭小的手机屏幕上屡屡出错。
痛定思痛,天一亮我就开始了第N次的流程升级。想法很简单,实现12322和小G两种格式地震消息自动识别的功能,即在拷贝地震消息的时候不需要任何多余声明,直接按原来的方式拷贝,让流程自动去识别。
实现起来也很简单,12322与小G地震消息最大的不同在于信息里包含了“东经”或“西经”以及“北纬”或“南纬”这几个词,因此直接通过hassubstringor这个函数就可以判断传递的地震消息是12322格式还是小G格式,将判断结果更新流程变量,比如将流程变量命名为“消息类型”。之后就简单了,利用条件运行器节点,可以接入不同的处理分支,通过消息类型的判断结果来决定执行哪一条处理分支,解析基本的地震参数信息。
当然,如果你想引入更多格式的地震消息,思路是一样的,找到不同格式地震消息的关键不同,按照上述逻辑实现即可。
这里没有采用在地震消息里直接增加关键词的方式来实现,主要是,懒,不想多加字。
对于地震消息里增加关键词,其实可以有很多用处。比如我是通过增加关键词'[测试]',让流程自由地在正式推送和测试运行两种状态切换,将成果产出推送给不同的目标人群(通过判断关键词,设置不同的微信接收用户)。当然,你还可以更细分,弄很多关键词,这样后期就不用反复修改流程,只需要在传递的消息里加不同关键词就可以实现不同功能的切换。