다음을 통해 공유


비즈니스 규칙에서 동일한 유형의 여러 개체를 분석하는 방법

많은 시나리오에서는 유형에 대해 비즈니스 규칙을 작성하면 엔진에 어설션되는 유형의 각 인스턴스가 이러한 규칙에 따라 개별적으로 분석 및 실행됩니다. 그러나 특정 유형의 여러 인스턴스를 하나의 규칙으로 동시에 분석해야 하는 시나리오도 있습니다.

예를 들어 FamilyMember 클래스의 인스턴스를 사용하는 규칙을 사용합니다.

IF FamilyMember.Role == Father  
AND FamilyMember.Role == Son  
AND FamilyMember.Surname == FamilyMember.Surname  
THEN FamilyMember.AddChild(FamilyMember)  

이 규칙은 아버지FamilyMember instance 아들인 또 다른 instance 식별합니다. 인스턴스가 성과 관련된 경우 아들 instance 아버지 instance 있는 자식 컬렉션에 추가됩니다. 각 FamilyMember instance 규칙에서 별도로 분석한 경우 이 시나리오에서 FamilyMember에는 아버지 또는 아들의 역할이 하나만 있기 때문에 규칙이 실행되지 않습니다.

따라서 엔진이 규칙에서 여러 인스턴스를 함께 분석하도록 지정해야 하며 규칙에서 각 인스턴스의 ID를 구분할 수 있는 방법이 필요합니다. 인스턴스 ID 속성은 이 기능을 제공하는 데 사용됩니다. 이 필드는 팩트 탐색기에서 팩트를 선택한 다음 속성 창에서 사용할 수 있습니다. 팩트나 멤버를 규칙으로 끌기 전에 필드 값을 변경해야 합니다.

인스턴스 ID 속성을 사용하면 규칙이 다시 작성됩니다. FamilyMemberSon instance 사용하는 규칙 인수의 경우 인스턴스 ID 필드가 기본값인 0에서 1로 변경됩니다. 인스턴스 ID가 0에서 변경되고 팩트 또는 멤버를 규칙 편집기로 끌면 인스턴스 ID 값이 클래스 뒤의 규칙에 표시됩니다.

IF FamilyMember.Role == Father  
AND FamilyMember(1).Role== Son  
AND FamilyMember.Surname == FamilyMember(1).Surname  
THEN FamilyMember.AddChild(FamilyMember(1))  

이제 아버지 instance아들 instance 엔진에 어설션된다고 가정합니다. 엔진은 다양한 인스턴스 조합에 대해 규칙을 평가합니다. 아버지와아들이 같은 성을 가질 instance 가정하면 아들 instance 의도한 대로 아버지 instance 추가됩니다.

참고

인스턴스 ID는 지정된 규칙 평가의 컨텍스트 내에서만 사용됩니다. 정책 실행 중에는 개체 인스턴스에 추가되지 않고 개체가 어설션되는 순서와 관련이 없습니다. 각 개체 인스턴스는 해당 유형의 모든 규칙 인수에서 평가됩니다.