2015-02-02 2 views
0

(여기 Drools newbie) 저는 작업 메모리에 객체 (사실)를로드하고 규칙을 통해 수정하는 방법을 모색하고 있습니다. 지금까지 발견 한 바에 따르면 규칙 결과에서 "수정"명령을 사용해야한다고 생각하지만 그다지 찾을 수는 없습니다. 또한 modifyObject를 사용하는 링크를 발견하게되었습니다. modifyObject는 2 개의 인수를 사용하여 새로운 객체 인 이전 객체를 교체합니다 [http://legacy.drools.codehaus.org/Working+Memory].스칼라로 Drools에서 사실 수정하기

내가 Scala 객체 (즉, 변경할 수 없음)를 사용하고 있다는 것을 고려해 볼 때,이 방법을 사용하여 이전 객체를 수납하고 ​​새 객체를 삽입 하시겠습니까? 그렇다면 누구나 그러한 코드의 예를 제공 할 수 있습니까?

when 
    $s: Sale(...) 
then 
    Sale s = new Sale($s,...); 
    update(kcontext.getKieRuntime().getFactHandle($s), s); 
end 

삭제 및 삽입이 업데이트보다 네트워크에 더 많은 작업이 발생할 수 있습니다

+1

이 링크는 2006 년에 만들어진 페이지입니다. 더 이상 사용되지 않습니다. – laune

+0

부여 :) 그들에 대한 더 이상의 문서를 찾을 수 없습니다 (또는 내가 무엇을 필요로 할 것 같았다) 언급 된 수정하거나 수정하는 방법을 그렇게 수표 가치가 있다고 생각. 나는 당신의 대답이 실제로 똑같은 일을한다고 믿는다. – GroomedGorilla

답변

1

난 당신이 사실 핸들을 검색 할 수있다하더라도, 두 개의 인수 업데이트 호출을 사용하는 것이 좋습니다 생각합니다.

수정을 사용할 수없는 경우 다른 Drools 기능을 사용할 수 없습니다. 새로운 활성화를 생성하기위한 사실 수정에 의존하는 프로덕션 규칙 시스템에서 사실 업데이트를 사용하는 것과 함께 기능적 스케일러를 사용하는 것은 다소 모순 된 접근 방식입니다.

+0

이것에 대한 간단한 질문 (시도) ... kcontext를 전역으로 전달해야합니까, 아니면 규칙 내에서 쉽게 접근 할 수 있습니까? IntelliJ와 Drools 플러그인을 사용하고 있습니다. 제안 사항이 너무 좋지 않습니다. – GroomedGorilla

+0

kcontext를 바로 사용할 수 있습니다. - 문서 "섹션"을 참조하십시오. – laune

+0

괜찮을 것이라고 생각하십시오. 지금 막 붙어있는 것은 새 객체를 만드는 것입니다. RHS에서 객체 생성을 처리하는 방법을 알지만 필요하지 않은 새 객체를 다시 전달할 수있는 스칼라 메서드가 있습니다. 여전히 IDE 문제 (IntelliJ 플러그인은 그다지 좋지 않습니다.) 때문에 내 (Scala-Drools) 구문이 괜찮은지 확실하지 않습니다. 다음에 SampleObject b = objectCreationFunction (param1, param2) 업데이트 (kcontext.getKieRuntime(). getFactHandle ($ b), b) – GroomedGorilla