비즈니스 규칙 구성 및 실행
비즈니스 규칙 엔진은 비즈니스 규칙 세트의 등록된 규칙을 실행하고 유효성 검사 결과를 반환합니다. 비즈니스 규칙 엔진은 지정된 비즈니스 규칙 세트 고유 키 및 시드 객체의 컨테이너 참조가 주어지면 비즈니스 규칙 세트를 읽어들입니다. 엔진에서 비즈니스 규칙 세트를 시드 객체에 대해 실행합니다.
다음 단계에서는 비즈니스 규칙 엔진의 비즈니스 규칙 세트 실행에 대해 설명합니다.
1. 유효성을 검사할 지정된 시드 객체를 읽어들입니다.
2. 비즈니스 규칙 세트를 읽어들입니다.
3. 비즈니스 규칙 세트에 대한 실행 계획을 생성하고 실행합니다.
4. 실행된 계획의 결과를 보고합니다.
비즈니스 규칙 실행 흐름
비즈니스 규칙 엔진 호출
기본 변경 공지 및 수준 올리기 요청 워크플로에는 워크플로에서 비즈니스 규칙 엔진을 호출하는 방법을 보여 주는 예제가 있습니다. 기본 변경 공지 워크플로에는 비즈니스 규칙 엔진을 호출하는 두 가지 다른 조건 라우터가 함께 제공됩니다. 실패가 발생하면 Audit Change Notice 임무에 "충돌 보기"라는 링크가 표시됩니다. Audit Change Notice 임무를 사용하면 실패를 해결하지 않고 계속 진행할 수 있습니다. 마찬가지로 충돌이 있는 경우 Resolve Release Conflicts 임무에 충돌이 표시됩니다. 이 임무를 계속 진행하기 전에 문제를 해결해야 합니다.
다음은 수준 올리기 요청 승인 프로세스에서 재작업 루프를 설정하려는 방법의 또 다른 예입니다. 비즈니스 규칙은 OR 조건 라우터에서 실행됩니다. 이 규칙이 실패하면 이메일이 전송되고 Rework Promotion Request 임무가 나타납니다.
비즈니스 규칙 세트를 실행하는 데 지원되는 두 가지 API가 있습니다.
• BusinessRulesHelper.engine.execute(primaryBusinessObject, BusinessRuleSetBean[]) : RuleValidationResultSet
두 번째 옵션을 사용하면 시드 객체가 있는 컨테이너에 관계없이 모든 객체의 컨테이너를 재정의할 수 있습니다. 이 API는 시드 객체를 미리 지정해야 하며 비즈니스 규칙 세트 실행을 한 번에 하나만 지원합니다.
• BusinessRulesHelper.engine.execute(“Business rule set”, RuleValidationCriteria) : RuleValidationResultSet
자세한 내용은 Javadoc을 참조하십시오.
시드 객체 읽어들이기
관계 위임은 특정 비즈니스 규칙 세트에 대해 평가될 주요 비즈니스 객체의 시드 객체를 가져오는 데 사용됩니다. 모든 관계 위임은 RuleValidation 인터페이스를 구현합니다.
관계 위임은 service.properties에 등록됩니다. 다음은 주요 객체에 대한 결과 객체를 가져오기 위한 위임의 예입니다.
<Service context="default" name="com.ptc.core.businessRules.relationship.
BusinessRuleSetRelationshipDelegate">
<Option serviceClass="com.ptc.core.businessRules.relationship.
ResultingObjectsRelationshipDelegate"
selector="wt.change2.ChangeRecord2"
cardinality="singleton"
requestor="null"/>
선택자는 관계 위임 인스턴스를 조회할 때 사용되는 관계 키입니다. 관계 키 이름 규약은 링크 클래스 이름을 사용하는 것이지만 필수 사항은 아닙니다. 관계 위임이 관계에 대한 링크를 반환할 경우 링크의 역할 B 객체가 시드 객체로 사용됩니다. 대상 링크 역할은 BusinessRuleSetBean 또는 RuleValidationCriteria에서 선택적으로 지정할 수 있습니다. 비즈니스 규칙 세트 및 현재 지원되는 관계 위임에 대한 관계를 지정하는 방법에 대한 자세한 내용은 BusinessRuleSetBean에 대한 Javadoc를 참조하십시오.
다음 표에는 표준 Windchill 설치에서 제공되는 기본 위임이 나와 있습니다.
관계 | 관계 위임 | 설명 |
|---|
wt.change2.AffectedActivityData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 주요 비즈니스 객체가 변경 공지 또는 변경 임무인 경우 해당 객체의 영향 받는 객체 링크를 가져옵니다. |
wt.change2.ReportedAgainst | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 주요 비즈니스 객체가 문제 보고서 또는 분산인 경우 해당 객체의 영향 받는 객체 링크를 가져옵니다. |
wt.change2.RelevantRequestData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | 주요 비즈니스 객체가 변경 요청인 경우 해당 객체의 영향 받는 객체 링크를 가져옵니다. |
wt.change2.ChangeRecord2 | com.ptc.core.businessRules.relationship.ResultingObjectsRelationshipDelegate | 주요 비즈니스 객체가 변경 공지 또는 변경 임무인 경우 해당 객체의 결과 객체 링크를 가져옵니다. |
wt.change2.IncludedIn2 | com.ptc.core.businessRules.relationship.IncludedInRelationshipDelegate | 주요 비즈니스 객체가 변경 공지인 경우에는 해당 객체의 변경 임무를 가져오고 변경 임무인 경우에는 변경 공지를 가져옵니다. |
wt.maturity.MaturityBaseline | com.ptc.core.businessRules.relationship.MaturityBaselineObjectsRelationshipDelegate | 주요 비즈니스 객체가 수준 올리기 공지인 경우 해당 객체의 베이스라인 항목을 가져옵니다. |
wt.maturity.PromotionSeed | com.ptc.core.businessRules.relationship.PromotionSeedObjectsRelationshipDelegate | 주요 비즈니스 객체가 수준 올리기 공지인 경우 해당 객체의 수준 올리기 시드를 가져옵니다. |
wt.maturity.PromotionTarget | com.ptc.core.businessRules.relationship.PromotionTargetObjectsRelationshipDelegate | 주요 비즈니스 객체가 수준 올리기 공지인 경우 해당 객체의 수준 올리기 대상을 가져옵니다. |
컨테이너를 기반으로 비즈니스 규칙 세트 읽어들이기
시스템에서 비즈니스 규칙 세트를 가져오려면 다음 정보가 필요합니다.
1. 비즈니스 규칙 세트에 대한 고유 키
2. 규칙을 평가해야 할 컨테이너 참조
비즈니스 규칙 엔진은 Windchill 서비스에서 적절한 비즈니스 규칙 세트를 가져오는 역할을 담당합니다. 비즈니스 규칙 세트는 계층적 컨테이너 조회를 사용하여 검색됩니다. 사용할 수 없는 비즈니스 규칙 세트는 무시됩니다.
다음 순서도는 컨테이너에서 규칙 세트 키 및 컨테이너를 조회하는 흐름을 보여줍니다.