Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Business Rules Framework fournit un moteur d’inférence hautement efficace capable de lier des règles à des objets .NET, des documents XML ou des tables de base de données.
Le moteur de règle d’entreprise utilise un algorithme en trois étapes pour l’exécution de la stratégie. Les étapes sont les suivantes :
Match. Dans la phase de correspondance, les faits sont mis en correspondance avec les prédicats qui utilisent le type de fait (références d’objets conservées dans la mémoire de travail du moteur de règle) à l’aide des prédicats définis dans les conditions de règle. Par souci d’efficacité, la correspondance des modèles se produit sur toutes les règles de la stratégie, et les conditions partagées entre les règles ne sont mises en correspondance qu’une seule fois. Les correspondances de condition partielle peuvent être stockées dans la mémoire de travail pour accélérer les opérations de correspondance de modèle suivantes. La sortie de la phase de correspondance de modèle se compose de mises à jour de l’ordre du jour du moteur de règles.
Résolution des conflits. Dans l’étape de résolution des conflits, les règles qui sont candidates à l’exécution sont examinées pour déterminer l’ensemble suivant d’actions de règle à exécuter en fonction d’un schéma de résolution prédéterminé. Toutes les règles candidates trouvées lors de la phase de correspondance sont ajoutées à l’ordre du jour du moteur de règles.
Le schéma de résolution des conflits par défaut est basé sur les priorités de règle au sein d’une stratégie. La priorité est une propriété configurable d’une règle dans le compositeur de règles métiers. Plus le nombre est élevé, plus la priorité est élevée ; par conséquent, si plusieurs règles sont déclenchées, les actions de priorité supérieure sont exécutées en premier.
Action. Dans l'étape d'exécution, les actions de la règle résolue sont exécutées. Notez que les actions de règle peuvent introduire de nouveaux faits dans le moteur de règles, ce qui fait continuer le cycle. Cela est également connu sous le nom de chaînage avant. Il est important de noter que l’algorithme ne préempt jamais la règle en cours d’exécution. Toutes les actions de la règle actuellement déclenchées sont exécutées avant la répétition de la phase de correspondance. Toutefois, d’autres règles à l’ordre du jour ne seront pas appliquées avant que la phase de compétition ne redémarre. La phase de correspondance peut entraîner la suppression de ces règles de l’ordre du jour avant qu’elles ne se déclenchent.
L'exemple suivant montre l'algorithme en trois étapes de correspondance-conflit-résolution-action.
Règle 1 : évaluation des revenus
Représentation déclarative :
La cote de crédit d’un demandeur ne doit être obtenue que si le ratio revenu-prêt de la requérante est inférieur à 0,2.
SI : représentation à l’aide d’objets métier :
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)Règle 2 : évaluation du taux de solvabilité
Représentation déclarative :
Un demandeur ne doit être approuvé que si la cote de crédit de la requérante est supérieure à 725.
Représentation IF—THEN à l'aide d'objets métier :
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)Les faits sont résumés dans le tableau suivant.
| Fait | Domaines |
|---|---|
| Application : document XML représentant une demande de prêt à domicile | - Revenu = 65 000 $ - SSN = XXX-XX-XXXX |
| Propriété : document XML représentant la propriété achetée | - Prix = 225 000 $ |
| CreditRating – Document XML contenant la cote de crédit du demandeur de prêt | - Valeur = 0 – 800 - SSN = XXX-XX-XXXX |
Initialement, la mémoire de travail et l’ordre du jour du moteur de règles sont vides. Une fois que l’application ajoute les faits sur l’application et la propriété, la mémoire de travail du moteur de règles et l’ordre du jour sont mises à jour comme suit.
| Mémoire de travail | Ordre du jour |
|---|---|
| - Application - Propriété |
Règle 1 |
La règle 1 est ajoutée à l’ordre du jour, car sa condition (Application.Income / Property.Price < 0,2) a été évaluée comme vraie pendant la phase d'évaluation. Il n’existe aucun fait de CreditRating dans la mémoire de travail. La condition de la règle 2 n’a donc pas été évaluée. Étant donné que la seule règle dans l’ordre du jour est la règle 1, la règle est exécutée, puis disparaît de l’ordre du jour. L’action unique définie pour la règle 1 entraîne l’ajout d’un fait nouveau (document d'évaluation de crédit pour le demandeur) à la mémoire de travail. Une fois l’exécution de la règle 1 terminée, le contrôle retourne à la phase de mise en correspondance. Étant donné que le seul nouvel objet à mettre en correspondance est le fait CreditRating, les résultats de la phase de correspondance sont les suivants.
| Mémoire de travail | Ordre du jour |
|---|---|
| - Application - Propriété - Cote de crédit |
Règle 2 |
À ce stade, la règle 2 est exécutée, ce qui entraîne l’appel d’une fonction qui envoie une lettre d’approbation au demandeur. Une fois la Règle 2 terminée, l’exécution de l'algorithme de chaînage avant retourne à la phase de correspondance. Étant donné qu’il n’y a plus de nouveaux faits à faire correspondre et que l’agenda est vide, le chaînage avant se termine et l’exécution de la stratégie prend fin.