Configuration et exécution des règles métier
Le moteur des règles métier exécute les règles enregistrées au sein d'un jeu de règles métier et renvoie les résultats de validation. Le moteur des règles métier récupère le jeu de règles métier en fonction des clés uniques du jeu de règles métier spécifié et des références de conteneur des objets initiaux. Le moteur exécute les règles du jeu de règles métier vis-à-vis des objets initiaux.
Les phases suivantes décrivent l'exécution des jeux de règles métier par le moteur des règles métier :
1. Récupération des objets initiaux spécifiés à valider.
2. Récupération des jeux de règles métier.
3. Génération et exécution d'un plan d'exécution pour les jeux de règles métier.
4. Renvoi des résultats du plan exécuté.
Flux d'exécution des règles métier
Appel du moteur des règles métier
Les processus d'avis de modification et de demande de promotion par défaut comprennent des exemples d'appel du moteur des règles métier à partir d'un processus. Le processus d'avis de modification par défaut est fourni avec deux routeurs conditionnels différents qui appellent le moteur des règles métier. En cas d'échec, la tâche Audit Change Notice présentera un lien appelé "Afficher les conflits". La tâche Audit Change Notice vous permet de poursuivre l'exécution sans corriger les échecs. De même, la tâche Resolve Release Conflicts affiche les conflits éventuels. Vous devez résoudre les problèmes avant de poursuivre cette tâche.
Voici un autre exemple de la manière dont vous pouvez configurer une boucle de reprise dans le processus d'approbation de demande de promotion. La règle métier est exécutée dans le routeur conditionnel OU. En cas d'échec, un e-mail est envoyé, et la tâche Rework Promotion Request s'affiche.
Deux API sont prises en charge pour l'exécution des jeux de règles métier.
• BusinessRulesHelper.engine.execute(primaryBusinessObject, BusinessRuleSetBean[]) : RuleValidationResultSet
La seconde option permet de remplacer le conteneur pour tous les objets, quel que soit le conteneur dans lequel se trouvent les objets initiaux. Cette API nécessite que les objets initiaux soient spécifiés à l'avance et prend uniquement en charge l'exécution d'un seul jeu de règles métier à la fois.
• BusinessRulesHelper.engine.execute(“Business rule set”, RuleValidationCriteria) : RuleValidationResultSet
Pour plus d'informations, consultez la documentation Java.
Récupération des objets initiaux
Le délégué de relation permet d'obtenir les objets initiaux d'un objet métier principal qui doit être évalué pour un jeu de règles métier spécifique. Tous les délégués de relation implémentent l'interface RuleValidation.
Les délégués de relation sont enregistrés dans service.properties. Voici un exemple de délégué permettant d'obtenir les objets résultants d'un objet principal :
<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"/>
Le sélecteur est la clé de relation utilisée pour rechercher l'instance de délégué de relation. La convention de désignation des clés de relation prévoit l'utilisation du nom de classe de lien, mais cela n'est pas une obligation. Notez que si le délégué de relation renvoie les liens de la relation, les objets de rôle B des liens seront utilisés en tant qu'objets initiaux. Le rôle du lien cible peut être spécifié en option dans BusinessRuleSetBean ou RuleValidationCriteria. Pour plus d'informations sur la spécification de la relation d'un jeu de règles métier et sur les délégués de relation actuellement pris en charge, consultez la documentation Java concernant BusinessRuleSetBean.
Le tableau suivant présente les délégués par défaut qui sont fournis dans une installation Windchill standard :
Relation | Délégué de relation | Description |
|---|
wt.change2.AffectedActivityData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Obtient les liens d'objets affectés de l'objet métier principal s'il s'agit d'un avis de modification ou d'une tâche de modification. |
wt.change2.ReportedAgainst | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Obtient les liens d'objets affectés de l'objet métier principal s'il s'agit d'un rapport de problème ou d'une variation. |
wt.change2.RelevantRequestData | com.ptc.core.businessRules.relationship.AffectedObjectsRelationshipDelegate | Obtient les liens d'objets affectés de l'objet métier principal s'il s'agit d'une demande de modification. |
wt.change2.ChangeRecord2 | com.ptc.core.businessRules.relationship.ResultingObjectsRelationshipDelegate | Renvoie les liens d'objets résultants de l'objet métier principal s'il s'agit d'un avis de modification ou d'une tâche de modification. |
wt.change2.IncludedIn2 | com.ptc.core.businessRules.relationship.IncludedInRelationshipDelegate | Obtient les tâches de modification de l'objet métier principal s'il s'agit d'un avis de modification, ou l'avis de modification si l'objet métier principal est une tâche de modification. |
wt.maturity.MaturityBaseline | com.ptc.core.businessRules.relationship.MaturityBaselineObjectsRelationshipDelegate | Obtient les éléments de configuration de référence de l'objet métier principal s'il s'agit d'un avis de promotion. |
wt.maturity.PromotionSeed | com.ptc.core.businessRules.relationship.PromotionSeedObjectsRelationshipDelegate | Obtient les objets initiaux de promotion de l'objet métier principal s'il s'agit d'un avis de promotion. |
wt.maturity.PromotionTarget | com.ptc.core.businessRules.relationship.PromotionTargetObjectsRelationshipDelegate | Obtient les cibles de promotion de l'objet métier principal s'il s'agit d'un avis de promotion. |
Récupération du jeu de règles métier reposant sur le conteneur
L'obtention d'un jeu de règles métier à partir du système requiert les informations suivantes :
1. Clé unique d'un jeu de règles métier.
2. Référence de conteneur dont les règles doivent être évaluées.
Le moteur des règles métier sera chargé d'acquérir le jeu de règles métier approprié à partir des services Windchill. Les jeux de règles métier seront découverts à l'aide d'une recherche de conteneur hiérarchique. Les jeux de règles métier qui ne sont pas activés seront ignorés.
Le diagramme suivant décrit le flux de recherche de conteneur pour une clé de jeu de règles et un conteneur.