时间维度增加了软件开发人员的应用程序开发的复杂性,这些开发人员正在使用需要随时间更改的条件语句(规则)构建逻辑。“时间是一种观察到的现象,人类通过它感知和记录环境和宇宙的变化。时间被称为幻觉、维度、流畅的连续体,以及发生在同一物理位置的事件之间分离的表达。”想象一下,您在半夜被狗吠声吵醒。然后你会听到厨房里的脚步声。正当你准备报警时,你想起你的朋友汤姆周末在你家睡觉,可能只是他从厨房拿了些东西。当你听到熟悉的冰箱门和瓶子叮当作响的声音时,你现在确定是他,立即回去睡觉。
我们可以从这个短篇故事中看到,事件的时间顺序加上它们的联合可能性,是触发我们采取进一步行动的原因。在上一节中,我们介绍了形式逻辑,如果世界是一个静态的地方,它将统治世界。不是。如果我们要在计算机语言中寻找一个安全的避难所,以帮助我们在构建逻辑的同时处理时间维度,就像音符为音乐所做的那样,我们将一无所获。为了处理代码中的时间,我们可以使用的只是“CPU 时钟”。我们经常使用 UML 状态/流程图来帮助我们处理时间,但 UML 是一种用于指定、可视化、构建和记录软件系统工件的“语言”。UML 帮助我们交流我们想要构建的内容,它不是构建软件的框架。随着时间的推移,开发人员不仅需要了解不同的路径和这些路径的结果(如这篇关于形式逻辑和归纳推理的博客文章中所述),而且她还必须掌握这些路径如何随时间变化。换句话说,时间增加了复杂性。正确的规则引擎将抽象出复杂性,以便您可以构建有时限的逻辑,但为了做到这一点,它应该支持以下内容:
1.处理过去(处理过期或即将过期的信息)
您通常必须使用仅在固定时间段内有效的信息或合并不完全同步的数据流。这在互联家庭、互联建筑或工业 4.0 应用中非常重要。以下是物联网的几个具体示例:
如果客厅有运动,然后卧室有运动,那么(……)
如果客厅里有动静,但接下来的 5 分钟内卧室里没有动静,那么(……)
仅当来自两个不同传感器的温度和湿度数据相隔不超过 10 秒时才应用此规则
检查机器的状态是否在两次连续测量之间(以及在一个窗口内)发生了变化
2.处理现在(结合异步和同步信息)
您经常需要在执行规则时将异步数据流(流式 IoT 设备数据)与同步信息(轮询云服务 API 端点)结合起来。
一个简单的用户需求,例如:“当冷冻室温度高于 4 度时发送 SMS 警报”转化为这条规则:“当冷冻室温度高于 4 度时,检查资产数据库(通过 API)以找到冰箱所在的仓库。然后检查该位置的天气(以验证外面是否不太热)。然后在 CRM 数据库中创建一张票,然后将 SMS 发送给操作冷冻机所在大楼的人员”。
3.应对未来(预测和异常检测的预测)
异常检测通常来自时间序列数据,通常以两种不同的方式表述:
查找异常值(高于或低于平均值/滚动平均值的值)或查找标准偏差高于与预期值差异太大的预期值数据点的时间窗口——这些数据点主要是统计得出的。在这种情况下,异常检测和预测依赖于规则引擎为观察到的测量找到一个好的“拟合算法”的能力。
深圳市图扬科技有限公司
专注于蓝牙音箱、蓝牙耳机、车载应用、智能家居、IoT物联等市场领域方案开发
拥有强大的技术团队围绕MCU微控制器、音频解码SoC、蓝牙音频数传BLE及各类微电子传感器的技术做相应的产品方案设计及研发
电话:+0755-21003695/21003965
网址:www.tome-sz.com
邮箱:tome@tome-sz.com/hr@tome-sz.com(简历投寄)