ビジネス規則の設定と実行
ビジネス規則エンジンは、ビジネス規則セットの登録済み規則を実行し、検証結果を返します。ビジネス規則エンジンは、指定されたビジネス規則セットの一意キーおよびシードオブジェクトのコンテナ参照から、ビジネス規則のセットを取得します。エンジンはシードオブジェクトに対してビジネス規則のセットを実行します。
ビジネス規則エンジンによるビジネス規則セットの実行は次のフェーズからなります。
1. 検証対象となる指定したシードオブジェクトの取得
2. ビジネス規則セットの取得
3. ビジネス規則セットの実行計画の生成と実行
4. 計画の実行結果のレポート
ビジネス規則の実行の流れ
ビジネス規則エンジンの呼び出し
デフォルトの変更通知ワークフローとプロモーションリクエストワークフローには、ワークフローからのビジネス規則エンジンの呼び出し方法を示すいくつかの例があります。デフォルトの変更通知ワークフローには、ビジネス規則エンジンを呼び出す 2 つの異なる条件があります。失敗がある場合、「Audit Change Notice Task」に "コンフリクトを表示" リンクが表示されます。「Audit Change Notice Task」では失敗を修正しないで次に進むことができます。同様に、「Resolve Release Conflicts」タスクではコンフリクトが示されます (存在する場合)。このタスクを進めるには問題を修正する必要があります。
プロモーションリクエスト承認プロセスでやり直しループを設定するもう 1 つの例を示します。ビジネス規則は OR 条件で実行されています。失敗した場合、電子メールが送信され、「Rework Promotion Request」タスクが表示されます。
ビジネス規則セットを実行するために 2 つの API がサポートされています。
• BusinessRulesHelper.engine.execute(primaryBusinessObject, BusinessRuleSetBean[]) : RuleValidationResultSet
2 つ目のオプションでは、シードオブジェクトが格納されているコンテナに関係なく、すべてのオブジェクトのコンテナをオーバーライドできます。この API では、シードオブジェクトがあらかじめ指定されている必要があり、一度に 1 つのビジネス規則セットだけを実行できます。
• 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 サービスから適切なビジネス規則セットが取得されます。ビジネス規則セットは階層コンテナ検索によって検索されます。有効でないビジネス規則セットは無視されます。
次のフローチャートに、規則セットキーとコンテナのコンテナ検索の流れを示します。