2016-11-10 4 views
0

나는 복수의 외부 시스템으로부터 데이터 수집 데이터 수집을 다루고 (트랜잭션 엔티티 + 수집 된 데이터)를 기반으로 비즈니스 결정을 내리는 트랜잭션 시스템 중 하나입니다. 여러 하위 시스템에서DROOLS Rule Engine : Drools 내에서 네트워크 호출하기

  1. 수집 데이터 :

    현재, 우리는 다음 단계를 수행합니다.

  2. drools에 대한 입력으로 (데이터 수집 + 트랜잭션 실체)를 사용하고 비즈니스 결정을 유도합니다. 위의 방법의

하나의 주요 단점 내가 심지어 데이터의 유용성에 대해 귀찮게하지 않고 사전에 (고가의 네트워크 호출을) 모든 데이터를 수집해야한다는 것입니다.

서비스 호출을 규칙 실행 계층으로 이동하여 지연 시키려합니다. 의도적으로 (트랜잭션 엔터티 자체 내에서) 이미 사용 가능한 일부 데이터를 결정할 수 있으면 서비스 호출을 피하기 위해 drools 의사 결정 트리를 활용하는 것이 목적입니다.

생각 프로세스의 유효성을 검사하기 만하면됩니다 (예 : 규칙 실행의 일부로 서비스 호출을하는 것이 좋습니다).

누구든지 찬성/반대 의견을 공유 할 수 있습니까? 어떤 리드라도 감사 할 것입니다.

+0

주요 문제는 네트워크 호출이라고 판단한 것 같습니다. 특정 통화를 피함으로써 시간이 지남에 따라 그 논리를 창출 할 가치가 있다면, 바로 그 것입니다. 당신이 제공 한 의견에서 또 무엇을 기대합니까? – laune

+0

내 코드 자체에서 논리를 작성하고 싶지 않습니다. (해킹 비트와 비슷합니다). 대신, drools 자체가 (결정 트리를 통해) 같은 논리를 돌볼 올바른 장소인지 궁금해하고있었습니다. 생각 프로세스의 유효성을 검사하고 싶습니다 (예 : 규칙 실행의 일부로 서비스 호출을하는 것이 좋은 습관인지 여부). – Harshit

답변

0

(아직)없는 사실로 추론 할 수는 없습니다. 자신이 원하는 사실을 결정하면 다음과 같은 간단한 예에 따라 규칙을 작성할 수 있습니다.

rule "x and y, not z" 
when 
    Dimension($id: id, coord == "x") 
    Dimension(id == $id, coord == "y") 
    not Dimension(id == $id, coord == "z") 
then 
    fetch and insert missing Dimension 
end 

rule "x, y and z" ... end 

이 페칭 및 삽입 프로세스를 동 기적으로 실행해서는 안됩니다. 요청 큐를 이벤트 큐로 삽입 할 수 있습니다. Java의 모든 것을 사용할 수 있습니다.