CER과 사용하는 기본 데이터 항목은 다음과 같습니다.
규칙 오브젝트는 CER 규칙 세트의 규칙 클래스 인스턴스입니다(예: "John Smith"라는 개인의 규칙 오브젝트).
속성 값은 특정 규칙 오브젝트의 CER 규칙 속성 값입니다(예: John Smith의 생년월일).
CER 규칙 오브젝트 및 속성 값과 연관된 모든 상호작용은 CER 세션에서 발생합니다. 이 상호작용에는 CER 규칙 오브젝트의 작성, 검색 및/또는 제거와 규칙 오브젝트의 속성 계산 또는 다시 계산이 포함됩니다.
각 CER 세션은 curam.creole.execution.session.Session_Factory 클래스를 사용하여 작성합니다.
CER 세션을 작성할 때 다음을 지정해야 합니다.
CER 세션에서 CER 속성 값을 다시 계산하기 위한 요청을 처리하는 전략1.
CER 속성 값을 다시 계산하기 위한 요청을 처리하는 전략입니다(예: 즉시 다시 계산할지, 다른 트랜잭션으로 다시 계산을 연기할지 아니면 다시 계산을 모두 허용하지 않을지 여부).
지속적 규칙 오브젝트에 사용하는 스토리지 메커니즘.2 예를 들어, 인메모리 전용(세션이 범위를 벗어나면 유실됨), 데이터베이스 스토리지 또는 스냅샷 스토리지입니다.
결과적으로 데이터 스토리지 구현에서 사용할 규칙 오브젝트 팩토리를 지정해야 합니다. 이 팩토리는 규칙 오브젝트가 작성되는 방식(명백하게 입력되거나 해석 전용 방식으로 작성)을 제어합니다.
애플리케이션에는 다음과 같은 구현이 포함되어 있습니다.
CER 세션에서 다시 계산이 시도되면 오류가 발생합니다.
즉시 다시 계산을 수행합니다(동일한 데이터베이스 트랜잭션에서 동기적으로).
다른 데이터베이스 트랜잭션으로 다시 계산(저장된 속성 값)을 연기합니다.
다른 데이터베이스 트랜잭션으로 다시 계산(저장된 속성 값)을 연기합니다.
규칙 오브젝트를 메모리에만 보관합니다. 이 데이터 스토리지의 규칙 오브젝트는 데이터 스토리지가 범위에 포함된 동안에만 사용 가능합니다(일반적으로 단일 데이터베이스 트랜잭션에만 해당).
다음 중 하나에서 외부 3규칙 오브젝트를 검색합니다.
하나 이상의 속성 계산 종속성에 관련된 규칙 오브젝트 세트의 세부사항이 포함된 XML 문서를 작성합니다. 해당 계산에서 궁극적으로 사용되는 데이터의 "감사 추적"을 제공합니다. 후속 데이터베이스 트랜잭션에서 규칙 오브젝트의 스냅샷을 조회(단 변경하지는 않음)할 수 있도록 XML 문서는 일반적으로 데이터베이스 테이블에 저장할 수 있습니다.
후속 데이터베이스 트랜잭션에서 외부 규칙 오브젝트를 검색하고 조작할 수 있습니다.
InMemoryDataStorage 및 DatabaseDataStorage의 동작을 결합합니다. Cúram 내부용으로만 예약되었습니다.
CER 테스트 코드 생성기가 생성한 Java 클래스의 인스턴스로 규칙 오브젝트를 작성하고 검색합니다(CER 테스트 코드 생성기 참조). 프로덕션 코드에서 사용하지 않아야 합니다.
완전히 해석된(따라서 동적인) 방식으로 규칙 오브젝트를 작성하고 검색합니다(규칙 세트 해석기 참조).
두 개 이상의 CER 세션(동일한 트랜잭션의)이 데이터베이스에서 동일한 규칙 오브젝트를 검색하거나 조회하려고 시도하는 경우 작동 방식은 보장되지 않습니다.
StronglyTypedRuleObjectFactory(생성된 Java 클래스를 테스트에서 사용할 수 있도록) 및 RecalculationsProhibited(테스트에서 도중에 우발적으로 데이터를 변경하지 않도록)와 함께 InMemoryDataStorage(실행 속도를 위해)를 사용하십시오.
InterpretedRuleObjectFactory(규칙 세트가 완전히 동적이 되도록) 및 RecalculationsProhibited와 함께 DatabaseDataStorage(전체 트랜잭션에서 규칙 오브젝트를 사용할 수 있도록)를 사용하고 종속성 관리자가 제공한 기능(종속성 관리자 참조)을 사용하여 새로운(및 독립적인) CER 세션에서 CER 값을 다시 계산하는 요청을 수행합니다.
InterpretedRuleObjectFactory(규칙 세트가 완전히 동적이 되도록) 및 RecalculationsProhibited(스냅샷은 변경사항을 지원하지 않음)와 함께 SnapshotDataStorage(변경할 수 없는 XML 문서에서 규칙 오브젝트를 읽도록)를 사용합니다.
데이터 스토리지를 선택해도 규칙 표현식의 시맨틱에는 영향을 미치지 않습니다. 즉, 기본 계산에는 차이가 없이JUnit 테스트에 경량(인메모리) 데이터 스토리지(다수의 JUnit 테스트를 신속하게 실행할 수 있도록)를 사용하고 프로덕션 논리에는 지속적(데이터베이스) 데이터 스토리지(트랜잭션 간에 규칙 오브젝트가 지속적이도록)를 사용할 수 있습니다.
예를 들어, 일부 규칙 오브젝트 변환기는 readall(중첩된 match가 없는 경우)의 실행을 지원하지 않고/않거나 match의 retrievedattribute 값에서 지명될 수 있는 규칙 속성을 제한할 수 있습니다.
규칙 오브젝트 변환기의 제한사항을 위반하면 런타임 시 예외 처리(throw)를 합니다. 인메모리 데이터 스토리지를 사용하는(따라서 규칙 오브젝트 변환기를 호출하지 않음) 대부분의 규칙 논리 테스트와 대조적으로 사용자의 규칙 세트 테스트에 규칙 오브젝트 변환기(즉, 데이터베이스 데이터 스토리지에 대해 실행)를 호출하는 논리가 포함되어 있는지 확인해야 합니다.
readall 지원에 대한 제한사항을 이해하려면 각 규칙 오브젝트 변환기 구현 문서를 참조하십시오.