2011-08-02 3 views
5

우리는 차량 추적 시스템을 개발하고 있습니다. 모든 VTS와 마찬가지로 우리는 차량에 GPS 장치를 장착하여 서버에 위치 정보를 계속 전송합니다. 서버에서 TCP 통신 프로세스는 해당 데이터를 계속 읽고 데이터베이스에 저장합니다. 이제 차량에 대한 경고를 트리거하는 몇 가지 규칙을 확인해야합니다. 예를 들어 차량이 특정 위치에 도달하면 경보가 필요합니다 특정 속도 제한을 교차합니다. 구현 방법을 제안 할 수 있습니까? 우리는 그것을 구현하기위한 몇 가지 방법을 생각했습니다. 1. 우리의 TCP 통신기는 위치를 수신하면 경고를 확인해야합니다. 2. 15 분마다 계속해서 실행하고 15 분 내에 위치 정보를 확인하여 경고를 확인하는 프로세스가 있습니다.GPS 장치와 통신하는 동안 규칙 검사를 구현하는 가장 좋은 방법

나는 논리 - 현명한뿐만 아니라 기술 현명한 그것을 구현하는 제안을 찾고있다. 예 : Drools의 사용 여부와 상관없이

+0

이 사람 아닌가? 완벽한 제안이 아닌 몇 가지 제안이 필요합니다. – Saurabh

답변

6

FedEx에서 온 누군가가 실제로 몇 년 전에 참석 한 JavaOne 회의에서 이와 비슷한 내용을 발표했습니다.

기본적으로 Drools Expert + Fusion을 사용하여 차량 위치 데이터에서 CEP (복잡한 이벤트 처리)를 수행하는 것이 좋습니다.

내가 기억할 수있는 한, 차량은 주기적으로 (매 2 초마다) 규칙 엔진에 의해 소화 될 엔진 (이벤트)에 GPS 좌표를 보내고 규칙에 따라 트리거 할 수 있습니다 ("차량이 실속"또는 "당연히") 또는 통지를 보내는 것과 같은 특정 행동 ("차량은 15 분 안에 목적지에 도착할 것입니다").

("drools fusion cep vehicle tracking"에 대한 구글은 당신에게 더 많은 몇 가지 세부 사항을 제공해야합니다 this 프리젠 테이션을 폭로하거나 적어도 몇 가지 통찰력을 제공합니다.)

+0

AlistairIsrael에게 감사드립니다. 같은 도메인을 다루면서 공유 한 정보가 분명 도움이 될 것 같습니다. – Saurabh

2

Drools의 작동 방식은 Drools의 "작업 메모리"에 많은 개체를 채우는 것입니다. 오브젝트를 채우는 동안, Drools는 오브젝트에서 어떤 규칙이 "실행"되는지를 발견하고 오브젝트를 Rete-Tree에 저장합니다. 메모리에 오브젝트를 넣고 모든 규칙을 종료하면 Drools는 규칙에 따라 작성한 코드를 처리합니다.

나는 당신이 당신의 규칙에 필요한 차량으로부터받은 모든 데이터를 가지고있는 객체를 만들어 작업 메모리에 두는 것이 좋습니다.

Drools에서는 많은 작은 규칙을 만들어야하며, 각각 하나만 확인하고 결과에 따라 행동해야합니다.

Drools에 평가에 필요한 데이터를 제공하는 것은 좋지 않지만 Drools가 일부 이벤트를 트리거하고 차량이나 다른 시스템에 메시지를 보내도록하는 데는 아무런 문제가 없습니다. (나는 비동기가 발생하여 Drools의 속도를 늦추지 않아야합니다.) 실제로 Drools는 eventlistener를 연결하도록 제안합니다.

0

15 분마다 실행할 이유가 없습니다. 그러면 트리거가 지연되고 15 분마다로드가 폭발하여로드가 끊어지지 않게됩니다.

데이터베이스에 새 경고 규칙 및 새 위치 데이터에 대한 플래그를 설정할 수 있습니다. 이벤트를 스캔 할 때 2 패스 접근 방식을 사용할 수 있습니다. 모든 위치 데이터에 대해 새로운 규칙을 모두 확인하고 더 이상 새로운 위치를 표시하지 않습니다. 그런 다음 기존 규칙과 비교하여 모든 새 위치 데이터를 확인하고 더 이상 새로운 위치 데이터를 표시하지 않습니다.

원하는만큼 자주 실행할 수 있습니다. 이상적으로는 오래 기다릴수록 기다리는 시간이 길어질수록 더 많은 일이 축적됩니다.

TCP 커뮤니케이터가 검사를 통해 관련 경고를 확인하는 데있어 데이터베이스가 주기적으로 접근하면 주 경보는 즉각적인 경고가됩니다. 단점은 경고 처리가 TCP 통신기 경로를 느리게하고 "한 번의 업데이트로 경고에 대한 하나의 확인"모델에 고정된다는 것입니다.

"데이터베이스 스캔"접근 방식에서로드가 너무 높아지면 고주파 업데이트 소스의 많은 업데이트마다 경고를 확인해 볼 수 있습니다. 이는 자연스럽게 필요한 작업량을 줄임으로써 부하를 처리하지만 알림이 누락 될 수 있습니다.

여러분이 고려중인 모든 접근 방식이 잘 작동한다고 생각합니다.

관련 문제