비즈니스 규칙 세트 실행 계획 실행
비즈니스 규칙 세트의 실행 계획을 생성하려면 다음과 같은 과정이 진행됩니다.
1. 비즈니스 규칙에 정의된 선택자를 바탕으로 특정 RuleValidation 인스턴스를 작성합니다.
2. RuleValidation 인스턴스는 isConfigurationValid 메소드를 사용하여 비즈니스 규칙의 구성이 유효한지 여부를 결정하는 데 사용됩니다. 구성이 유효하지 않으면 비즈니스 규칙 세트 실행 계획에 대해 RuleValidation을 건너뛰고 오류가 기록됩니다.
3. 각 비즈니스 규칙에 대해 다음 항목과 함께 RuleValidation 인스턴스가 호출됩니다.
a. 규칙이 평가할 객체 컬렉션
b. RuleValidation의 실행을 구성하기 위해 이 인스턴스에서 사용할 수 있는 컨텍스트 특정 조건(예: 컨테이너 참조)
4. RuleValidation 인스턴스가 실행 계획에 추가됩니다.
모든 비즈니스 규칙 유효성 검사기가 RuleValidation 인터페이스를 구현합니다. 일반적인 비즈니스 규칙은 다음과 같은 두 가지 주요 범주로 분류됩니다.
단순 유효성 검사: 비즈니스 객체 자체에 대해 또는 관계로 구성된 시드 객체에 대해 규칙 확인이 수행됩니다. 속성 유효성 검사 확인이나 릴리즈 전에 객체의 라이프 사이클 상태 확인을 예로 들 수 있습니다.
구조화된 유효성 검사: 비즈니스 객체에 대해 규칙을 수행할 수도 있고 수행하지 않을 수도 있지만, 부품 또는 문서의 하위 항목과 같이 연관된 객체에 대한 몇 가지 검증 체크를 포함합니다. 이 유형의 유효성 검사에는 비즈니스 유효성 검사 규칙을 계산하고 적절한 플래그로 유효성 검사 결과를 채우기 위해 일반적으로 더 복잡한 알고리즘 세트가 필요할 수 있습니다. 구조화된 유효성 검사 규칙의 예로는 모든 결과 객체와 모든 첫 번째 레벨 종속 객체가 올바른 상태인지 확인하는 검증 체크를 들 수 있습니다.
다음은 제공되어 지원되는 RuleValidation 구현입니다.
비즈니스 규칙 선택자
RuleValidation
설명
CHECKOUT_RULE
com.ptc.core.businessRules.validation.CheckoutRuleValidator
객체가 체크 아웃되지 않았거나 프로젝트로 체크 아웃되었는지 검증합니다.
RELEASE_TARGET
com.ptc.core.businessRules.validation.ReleaseTargetValidator
모든 “결과 객체”가 릴리즈에 적합한 상태이고 할당된 라이프 사이클 변환 규칙과 일치하는 적합한 변경 관리 변환이 지정되어 있는지 확인합니다.
ATTRIBUTE_RULE
com.ptc.core.businessRules.validation.AttributeRuleValidator
객체 유형에 대해 지정된 속성 규칙 구성이 유효한지 확인합니다.
BOM_RELEASE_RULE
com.ptc.core.businessRules.validation.BOMReleaseRuleValidator
모든 결과 객체가 적합한 상태이고 첫 번째 수준 하위 객체가 모두 적합한 상태인지 확인합니다.
* 
수준 올리기 요청은 속성 규칙과 체크 아웃 규칙을 지원합니다. 변경 공지는 모든 규칙을 지원합니다.
RuleValidation의 인스턴스화는 비즈니스 규칙에 정의된 선택자를 기반으로 합니다. 정의된 선택자에 대한 구현 클래스를 조회하기 위해 응용 프로그램 서비스가 사용됩니다. 정의된 구현 클래스가 없거나 클래스를 인스턴스화하지 못하면 오류가 기록됩니다.
검증을 실행하기 전에 엔진이 RuleValidation.isConfigurationValid를 호출하고 이 메소드는 비즈니스 규칙 구성이 유효한지 확인합니다. 이러한 비즈니스 규칙 구성의 유효성 검사는 비즈니스 규칙을 로드할 때도 호출되지만 등록된 RuleValidation을 변경할 수 있기 때문에 비즈니스 규칙 유효성 검사를 실행하기 전에 구성 유효성 검사도 호출됩니다.
TheRuleValidation 초기화 메소드인 prepare는 비즈니스 규칙 세트를 기준으로 유효성이 검사되는 전체 시드 객체 세트의 초기 처리를 수행하는 데 사용됩니다. 이는 Windchill 서버 내에서 사전 유효성 검사가 수행되도록 허용하기 위함입니다. 예로는 많은 항목에 공통적으로 사용되는 라이프 사이클 템플릿 읽어들이기를 들 수 있습니다. RuleValidation.prepare 메소드에서 다중 객체 API를 호출하는 것이 가장 좋습니다. RuleValidation.peformValidation 메소드를 사용하여 다중 객체 호출을 수행하는 것은 권장되지 않습니다.
RuleValidation.isConfigurationValid 메소드가 true를 반환하면 각 시드 객체에 대해 RuleValidation performValidation이 호출됩니다. 시드 객체는 RuleValidationObject 내에서 전달됩니다. RuleValidationObject는 대상 객체(링크가 아닌 경우 시드 객체이고, 시드 객체가 링크인 경우 역할 A 또는 역할 B임)와 링크(시드 객체가 링크인 경우) 정보를 보유하고 있습니다. 비즈니스 규칙이 구조 유형 RuleValidation인 경우 RuleValidationObject에는 수집된 하위와 해당 하위가 수집된 링크에 대한 수집된 하위 맵도 포함됩니다. performValidation은 항상 링크가 아니라 대상 객체에 대한 참조를 포함하는 새 RuleValidationResult를 항상 반환해야 합니다.
비즈니스 규칙 엔진과 시퀀스 다이어그램
비즈니스 규칙 엔진과 유효성 검사 상호 작용 다이어그램
RuleValidation 구현은 service.properties에 등록됩니다. RuleValidation 구현을 작성하거나 재정의하려면 사용자 정의 service.properties xconf 파일에 다음을 추가합니다.
<Service context="default" name="com.ptc.core.businessRules.validation.
RuleValidation">
<Option serviceClass="com.ptc.core.businessRules.validation.
CheckoutRuleValidator"
selector="CHECKOUT_RULE"
cardinality="singleton"
requestor="null"/>
</Service>
가능한 경우 특정 RuleValidation 구현의 인스턴스 수를 줄이려면 RuleValidation의 카디널리티를 "singleton"으로 설정해야 합니다. 카디널리티가 "singleton"으로 설정된 경우 RuleValidation 구현의 스레드 안전 처리를 지원하기 위해 사전 유효성 검사 데이터를 저장하는 데 RuleValidationKeyaddToProcessingMap()을 사용할 수 있습니다.
도움이 되셨나요?