Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与GPS设备通信时执行规则检查的最佳方法_Java_Drools - Fatal编程技术网

Java 与GPS设备通信时执行规则检查的最佳方法

Java 与GPS设备通信时执行规则检查的最佳方法,java,drools,Java,Drools,我们正在开发一个车辆跟踪系统。像每个VTS一样,我们在车辆上安装了GPS设备,这些设备不断向服务器发送位置信息。在服务器上,我们的TCP communicator进程不断读取数据并将其保存到数据库中 现在,我们需要检查一些规则来触发车辆警报,例如,当车辆到达特定位置时,如果车辆超过特定速度限制,我们需要警报,等等。 你能建议最好的实施方法吗? 我们已经想到了一些方法来实施它, 1.我们的TCP通信器在接收到位置时,应该检查警报。 2.将有一个每15分钟运行一次的流程,并在这15分钟内检查位置详细

我们正在开发一个车辆跟踪系统。像每个VTS一样,我们在车辆上安装了GPS设备,这些设备不断向服务器发送位置信息。在服务器上,我们的TCP communicator进程不断读取数据并将其保存到数据库中 现在,我们需要检查一些规则来触发车辆警报,例如,当车辆到达特定位置时,如果车辆超过特定速度限制,我们需要警报,等等。 你能建议最好的实施方法吗? 我们已经想到了一些方法来实施它, 1.我们的TCP通信器在接收到位置时,应该检查警报。 2.将有一个每15分钟运行一次的流程,并在这15分钟内检查位置详细信息以获取警报


我正在寻找实现它的建议,无论是逻辑方面还是技术方面。e、 g.我们是否应该使用Drools?等等。Drools的工作方式是,在Drools的“工作记忆”中填充大量对象。在填充对象时,Drools将发现哪些规则“触发”对象,并将对象存储在Rete树中。当您将对象放入内存并触发所有规则后,Drools将处理您编写的与规则对应的代码

我建议您制作一个对象,包含从车辆接收到的所有规则所需的数据,并将其放入工作记忆中

在Drools中,你应该制定许多小规则,每个规则只检查一件事并根据结果采取行动


让Drools获取评估所需的数据不是一个好的做法,但我看不出让Drools触发一些事件(向车辆或其他系统发送消息)有任何问题。(我想这应该是异步的,这样你就不会减慢Drools的速度)事实上,Drools为你提供了连接eventlistener的功能。

没有理由每15分钟运行一次。这将在触发器中引入延迟,并且还会导致每15分钟出现一次负载突发,随后是空载时段

您可以在数据库中为新警报规则和新位置数据设置标志。当您扫描事件时,可以使用双通道方法。根据所有位置数据检查所有新规则,并将其标记为不再新。然后根据现有规则检查所有新位置数据,并将其标记为不再新

您可以随时运行它。理想情况下,你不会等那么久,因为等待的时间越长,你积累的工作就越多

至于让TCP通信器通过定期扫描数据库的方法检查相关警报,其主要优点是警报可以立即发出。缺点是警报处理会减慢TCP通信器路径,并且您将被锁定在“一次更新意味着一次警报检查”模型中

在“扫描数据库”方法中,如果负载过高,则只能在来自高频更新源的每次更新中检查警报。这自然会通过减少所需的工作量来处理负载,但可能会导致错过警报


我认为你正在考虑的所有方法都会很有效。

联邦快递公司的一位同事在几年前我参加的一次JavaOne会议上介绍了类似的内容

基本上,想法是,是的,使用Drools Expert+Fusion对车辆位置数据执行CEP(复杂事件处理)

据我回忆,车辆会定期(甚至每隔几秒钟)将其GPS坐标发送到发动机(一个事件),然后由规则引擎消化,并根据规则触发某些操作,如发出警报(“车辆失速”或“偏离路线”)或发送通知(“车辆将在约15分钟内到达目的地”)


(谷歌的《揭秘》演示文稿应该会给你更多的细节,或者至少提供一些见解。)

没有人吗?我需要一些建议,但不是完美的答案。谢谢AlistairIsrael。看来你分享的信息肯定会帮到我,因为它涉及同一领域。