내 요구 사항은 태그를 일치시키는 것입니다. 예에서이 특정 HourConstraint
은 Hour(23)
에 할당 된 TeacherHour
을 확인합니다.(태그의) 목록을 다른 태그와 일치시키고 공통 요소의 존재를 감지하십시오.
구체적으로는 값 ["asst_ct","teacher_john_smith"]
위한 TeacherHour.attributes["tags"]
을 검사하고,이 경우 ("asst_ct"
와 "teacher_john_smith"
모두)에 일치이어야 하나, 둘 검출한다.
TeacherHour:
id: 47
assigned_hour: Null
attributes:Map<List<String>>
"tags":["asst_ct","no_strenuous_duties","kinda_boring","teacher_john_smith"]
"another_attribute":[...]
HourConstraint:
hour: Hour(23)
attribute: "tags"
values_list: ["asst_ct","teacher_john_smith"]
질문 : 어떻게 공통 요소의 (true 또는 false) 존재 두 목록 사이를 감지합니까?
Drools Expert는 memberOf
과 을 가지고 있지만 스칼라와 컬렉션을 비교하고 컬렉션과 컬렉션을 비교하지는 않습니다.
- 기능
boolean isIntersecting(list,list)
을 소개하고 일치시킬 수 있습니다 정규 표현식으로 대신 목록의 문자열과HourConstraint.valueslist
로TeacherHour.attributes[]
를 구현 - 을 확인 진리를 그 사용 Drools가 알려주기 :
나는 두 가지 잠재적 인 방법을 참조 그 목록
나는 Collections.disjoint와 함께 갈 것이다. 오히려 설정된 데이터 형식을 사용해야합니까? 또한 나를 "플러그 형 운영자"라고 부를 수 있습니까? – aitchnyu
사용해보기 : http://blog.athico.com/2010/06/creating-pluggable-oprators.html. 또는 필요에 따라이 클래스를 복사하여 붙여 넣으십시오. https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/java/org/drools/base/evaluators/MatchesEvaluatorsDefinition.java –