Évaluation de condition et exécution d'action
L'infrastructure des règles d'entreprise fournit un moteur d'inférence très performant, capable de lier des règles à des documents XML, des tables de base de données ou des objets .NET.
Le moteur des règles d'entreprise utilise un algorithme en trois étapes pour l'exécution des stratégies. Ces trois étapes sont les suivantes :
Correspondance. À cette étape, les faits sont mis en correspondance avec les prédicats qui utilisent le type de fait (références d'objet conservées dans la mémoire de travail du moteur des règles) en se servant des prédicats définis dans les conditions de règle. Pour des raisons d'efficacité, la mise correspondance avec un modèle est appliquée à toutes les règles de la stratégie et les conditions partagées par ces règles ne sont mises en correspondance qu'une seule fois. Des correspondances de condition partielles peuvent être stockées dans la mémoire de travail pour accélérer les opérations ultérieures de mise en correspondance avec un modèle. Le résultat de la phase de mise en correspondance avec un modèle consiste en des mises à jour de l'agenda du moteur des règles.
Résolution des conflits. Dans la phase de résolution des conflits, les règles candidates à l’exécution sont examinées pour déterminer le prochain ensemble 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 l'étape de mise en correspondance sont ajoutées à l'agenda du moteur des règles.
Le schéma de résolution des conflits par défaut est basé sur des priorités de règle dans une stratégie. La priorité est une propriété configurable d'une règle dans l'Éditeur des règles d'entreprise. Plus le nombre est grand, plus la priorité est élevée. Par conséquent, si plusieurs règles sont déclenchées, les actions ayant la priorité la plus élevée sont exécutées en premier.
Action. À l’étape d’action, les actions de la règle résolue sont exécutées. Notez que des actions de règle peuvent déclarer de nouveaux faits dans le moteur des règles, ce qui engendre la poursuite du cycle. Ceci est également connu sous le nom de chaînage avant. Il est important de noter que l'algorithme ne prévaut jamais sur la règle en cours d'exécution. Toutes les actions de la règle actuellement en cours seront exécutées avant que la phase de correspondance soit répétée. Toutefois, les autres règles de l'agenda ne seront pas déclenchées tant que la phase de correspondance n'aura pas recommencé. La phase de correspondance peut provoquer la suppression des règles de l'agenda avant même leur déclenchement.
L'exemple suivant illustre l'algorithme en trois étapes (correspondance, résolution des conflits, action).
Règle 1 : Évaluer le revenu
Représentation déclarative :
Un client ne peut prétendre à des conditions de crédit que si son taux de solvabilité est inférieur à 0,2.
Représentation IF—THEN à l'aide d'objets métier :
IF Application.Income / Property.Price < 0.2 THEN Assert new CreditRating( Application)
Règle 2 : Évaluer la notation de crédit
Représentation déclarative :
Un candidat ne peut être approuvé que si ses conditions de crédit sont supérieures à 725.
IF : représentation à l’aide d’objets métier :
IF Application.SSN = CreditRating.SSN AND CreditRating.Value > 725 THEN SendApprovalLetter(Application)
Les faits sont synthétisés dans le tableau suivant.
Fact | Champs |
---|---|
Application – Document XML représentant une demande de prêt immobilier | - Revenu = 65 000 $ - SSN = XXX-XX-XXXX |
Property – Document XML représentant le bien acheté | - Prix = 225 000 $ |
CreditRating –Document XML contenant les conditions de crédit du candidat | - Valeur = 0 – 800 - SSN = XXX-XX-XXXX |
L'agenda et la mémoire de travail du moteur de règles sont initialement vides. Une fois que l'application a ajouté les faits Application et Property, l'agenda et la mémoire de travail du moteur de règles sont mis à jour comme suit.
Mémoire de travail | Agenda |
---|---|
-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 à true pendant la phase de correspondance. Aucun fait CreditRating n'est dans la mémoire de travail. La condition de Règle 2 n'a donc pas été évaluée. Dans la mesure où la seule règle présente dans l'agenda est Règle 1, la règle est exécutée, puis disparaît de l'agenda. La seule action définie pour Règle 1 entraîne l'ajout d'un nouveau fait (document CreditRating pour le candidat) dans la mémoire de travail. Lorsque l'exécution de Règle 1 est terminée, le contrôle revient à la phase de correspondance. Dans la mesure où le seul nouvel objet correspondant est le fait CreditRating, le résultat de la phase de correspondance est le suivant.
Mémoire de travail | Agenda |
---|---|
-Application -Propriété - Creditrating |
Règle 2 |
À ce stade, Règle 2 est exécutée, ce qui entraîne l'appel d'une fonction qui envoie une lettre d'approbation au candidat. Une fois Règle 2 terminée, l'exécution de l'algorithme à chaînage avant revient à la phase de correspondance. Comme il n'existe plus aucun nouveau fait à mettre en correspondance et que l'agenda est vide, le chaînage avant s'arrête et l'exécution de la stratégie se termine.