Konfiguration und Ausführung von Geschäftsregeln
Die Geschäftsregel-Engine führt registrierte Regeln in einem Geschäftsregelsatz aus und gibt Validierungsergebnisse zurück. Die Geschäftsregel-Engine ruft den Geschäftsregelsatz anhand der eindeutigen Schlüssel des Geschäftsregelsatzes und der Container-Referenz der Ausgangsobjekte ab. Mit dem Geschäftsregelsatz führt die Engine sie für die Ausgangsobjekte aus.
Die folgenden Phasen beschreiben die Ausführung von Geschäftsregelsätzen durch die Geschäftsregel-Engine:
1. Ruft die angegebenen Ausgangsobjekte ab, die validiert werden sollen
2. Ruft die Geschäftsregelsätze ab
3. Generiert einen Ausführungsplan für die Geschäftsregelsätze und führt ihn aus
4. Meldet die Ergebnisse des ausgeführten Plans.
Ablauf der Geschäftsregelausführung
Geschäftsregel-Engine aufrufen
In den Standard-Workflows für Änderungsnachrichten und Erhöhungsanträge finden sich Beispiele, die zeigen, wie die Geschäftsregel-Engine aus einem Workflow aufgerufen wird. Der Standard-Workflow für Änderungsnachrichten enthält zwei unterschiedliche konditionale Router, die die Geschäftsregel-Engine aufrufen. Wenn Fehler auftreten, zeigt die Aufgabe "Audit Change Notice" einen Link mit dem Namen "Konflikte anzeigen" für die Aufgabe an. Mit der Aufgabe "Audit Change Notice" können Sie fortfahren, ohne die Fehler zu beheben. Entsprechend zeigt die Aufgabe "Resolve Release Conflicts" eventuell vorhandene Konflikte an. Sie müssen die Probleme beheben, bevor Sie mit dieser Aufgabe fortfahren können.
Im Folgenden finden Sie ein weiteres Beispiel dafür, wie Sie eine Überarbeitungsschleife im Genehmigungsprozess für Erhöhungsanträge einrichten können. Die Geschäftsregel wird im konditionalen ODER-Router ausgeführt. Wenn dies fehlschlägt, wird eine E-Mail gesendet und die Aufgabe "Rework Promotion Request" angezeigt.
Für die Ausführung von Geschäftsregelsätzen werden zwei APIs unterstützt.
• BusinessRulesHelper.engine.execute(primaryBusinessObject, BusinessRuleSetBean[]) : RuleValidationResultSet
Mit der zweiten Option kann der Container für alle Objekte überschrieben werden, unabhängig davon, in welchem Container sich die Ausgangsobjekte befinden. Bei dieser API müssen die Ausgangsobjekte im Voraus angegeben werden und es wird jeweils nur die Ausführung eines Geschäftsregelsatzes unterstützt.
• BusinessRulesHelper.engine.execute(“Business rule set”, RuleValidationCriteria) : RuleValidationResultSet
Siehe Javadoc für weitere Details.
Ausgangsobjekte abrufen
Mit dem Beziehungs-Delegate werden die Ausgangsobjekte für ein Hauptgeschäftsobjekt abgerufen, das für einen bestimmten Geschäftsregelsatz ausgewertet werden soll. Alle Beziehungs-Delegates implementieren die Schnittstelle RuleValidation.
Beziehungs-Delegates werden in service.properties registriert. Das folgende Beispiel zeigt einen Delegate für das Abrufen der Ergebnisobjekte für ein Hauptobjekt:
<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"/>
Der Selektor ist der Beziehungsschlüssel, mit dem die Beziehungs-Delegate-Instanz gesucht wird. Die Namenskonvention für Beziehungsschlüssel sieht die Verwendung des Verknüpfungsklassennamens vor, dies ist jedoch keine Voraussetzung. Wenn der Beziehungs-Delegate die Verküpfungen für die Beziehung zurückgibt, werden die Rolle B-Objekte der Verknüpfungen als Ausgangsobjekte verwendet. Die Rolle "Übergabeziel-Link" kann optional in BusinessRuleSetBean oder RuleValidationCriteria angegeben werden. Weitere Informationen zum Angeben der Beziehung für einen Geschäftsregelsatz und zu aktuell unterstützten Beziehungs-Delegates finden Sie in der Javadoc für BusinessRuleSetBean.
Die folgende Tabelle zeigt die Standard-Delegates, die in der Standardinstallation Windchill bereitgestellt werden:
Beziehung | Beziehungs-Delegate | Beschreibung |
|---|
wt.change2.AffectedActivityData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Ruft die Links des betroffenen Objekts des Hauptgeschäftsobjekts ab, wenn es sich um eine Änderungsnachricht oder eine Änderungsaufgabe handelt. |
wt.change2.ReportedAgainst | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Ruft die Links des betroffenen Objekts des Hauptgeschäftsobjekts ab, wenn es sich um einen Problembericht oder eine Varianz handelt. |
wt.change2.RelevantRequestData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Ruft die Links des betroffenen Objekts des Hauptgeschäftsobjekts ab, wenn es sich um einen Änderungsantrag handelt. |
wt.change2.ChangeRecord2 | com.ptc.core.businessRules.relationship.ResultingObjectsRelationshipDelegate | Ruft die Links des Ergebnisobjekts des Hauptgeschäftsobjekts ab, wenn es sich um eine Änderungsnachricht oder Änderungsaufgabe handelt. |
wt.change2.IncludedIn2 | com.ptc.core.businessRules.relationship.IncludedInRelationshipDelegate | Ruft die Änderungsaufgaben des Hauptgeschäftsobjekts ab, wenn es sich um eine Änderungsnachricht handelt, oder die Änderungsnachricht, wenn das Hauptgeschäftsobjekt eine Änderungsaufgabe ist. |
wt.maturity.MaturityBaseline | com.ptc.core.businessRules.relationship.MaturityBaselineObjectsRelationshipDelegate | Ruft die Baseline-Elemente des Hauptgeschäftsobjekts ab, wenn es sich um eine Erhöhungsnachricht handelt. |
wt.maturity.PromotionSeed | com.ptc.core.businessRules.relationship.PromotionSeedObjectsRelationshipDelegate | Ruft die Erhöhungs-Ausgangsobjekte des Hauptgeschäftsobjekts ab, wenn es sich um eine Erhöhungsnachricht handelt. |
wt.maturity.PromotionTarget | com.ptc.core.businessRules.relationship.PromotionTargetObjectsRelationshipDelegate | Ruft die Erhöhungsziele des Hauptgeschäftsobjekts ab, wenn es sich um eine Erhöhungsnachricht handelt. |
Geschäftsregelsatz basierend auf dem Container abrufen
Die folgenden Informationen sind erforderlich, um einen Geschäftsregelsatz aus dem System abzurufen:
1. Der eindeutige Schlüssel für einen Geschäftsregelsatz
2. Die Container-Referenz, deren Regeln ausgewertet werden sollen
Die Geschäftsregel-Engine ist für das Abrufen des entsprechenden Geschäftsregelsatzes aus den Windchill Diensten verantwortlich. Die Geschäftsregelsätze werden mithilfe einer hierarchischen Suche im Container ermittelt. Nicht aktivierte Geschäftsregelsätze werden dabei ignoriert.
Im folgenden Flussdiagramm wird der Ablauf der Suche im Container nach einem Regelsatzschlüssel und einem Container erläutert.