Décider d'un mode d'exécution

Vous pouvez choisir un mode d'exécution autre que le mode par défaut et fournir des critères de sélection.

Vous pouvez choisir un mode d'exécution pour chaque tâche de règle d'un flux d'exécution de règles. Par défaut, une tâche de règle se voit affecter le mode d'exécution Fastpath lorsque vous la créez. Pour obtenir des performances optimales, vous pouvez choisir un autre mode d'exécution mieux adapté aux règles contenues dans la tâche considérée.

Voici un tableau résumant dans quelles circonstances choisir tel ou tel mode d'exécution.

Tableau 1. Aperçu rapide des critères de sélection du mode d'exécution
Choisissez ce mode : Dans ce cas :
RetePlus
  • Tout est inclus sémantiquement.
  • Application avec conservation d'états (stateful).
  • Chaînage des règles.
  • Utile dans le cas de nombreux objets et de changements limités.
Séquentiel
  • Couvre la plupart des cas.
  • Nombreuses règles, peu d'objets. Présente des limitations. A utiliser avec des règles homogènes.
  • Hautement efficace dans les environnements multitâches (multithread).

Fastpath

  • Mode par défaut pour les tâches de flux d'exécution de règles.
  • Règles implémentant une structure de décision, nombreux objets.
  • Hautement efficace dans les environnements multitâches (multithread).

Pour déterminer quel mode d'exécution utiliser pour une tâche de règle, vous devez analyser la structure des règles qui composent cette tâche et quel type de traitement elles effectuent.

Remarque :

Vous ne pouvez pas utiliser l'algorithme séquentiel ou Fastpath lorsque les règles ont des actions qui créent, modifient ou suppriment des objets qui sont associés dans les conditions des règles.

Pour être sûr de faire le bon choix, répondez aux questions suivantes :

Quel type d'application vos règles implémentent-elles ?

Le choix du mode d'exécution dépend en partie de la finalité de la logique métier définie dans la tâche de règle.

Conformité et validation

Règles faiblement interdépendantes qui vérifient un ensemble de conditions pour produire une décision oui/non ou un résultat à contraintes similaires. Les applications de conformité à base de règles métier sont souvent utilisées pour les décisions de souscription, la détection des fraudes, la validation de données et la validation de formulaires. Dans ces applications, les règles métier ont un résultat du type "oui ou non" et fournissent quelques explications sur la décision prise.

Pour les applications de conformité, utilisez de préférence le mode d'exécution séquentiel ou Fastpath.

Calcul

Règles fortement interdépendantes qui calculent des métriques pour un modèle d'objet complexe. Les applications de calcul à base de règles métier sont souvent employées pour l'évaluation par score (scoring) et le classement, les contrats et les imputations ou répartitions. Dans ces applications, les règles métier effectuent différents calculs sur un objet chargé de fournir une valeur finale (un score ou un classement).

Pour ces applications, préférez le mode d'exécution RetePlus si le support d'inférence est nécessaire ou le mode Fastpath autrement.

Corrélation

Règles fortement interdépendantes qui corrèlent les informations d'un ensemble d'objets pour calculer des métriques complexes. Les applications de corrélation à base de règles métier sont souvent employées pour la facturation. Dans ces applications, les règles métier insèrent des informations.

Pour les applications de corrélation, préférez le mode d'exécution RetePlus si le support d'inférence est nécessaire ou le mode Fastpath autrement.

Session avec conservation d'états

Règles fortement interdépendantes qui corrèlent des événements dans une session de moteur avec conservation d'états (stateful). Les applications avec conservation d'états sont souvent utilisées dans le filtrage et la corrélation d'alarmes, la personnalisation des interfaces graphiques et la navigation de pages web.

Pour ces applications, préférez le mode d'exécution RetePlus sans flux d'exécution de règles.

Quels types d'objets vos règles utilisent-elles ?

Le choix du mode d'exécution dépend en partie des types d'objets sur lesquels vos règles agissent.

Règles homogènes ou hétérogènes ?

Les liaisons (bindings) sont hétérogènes lorsque les règles n'opèrent pas sur les mêmes classes. Lorsque les liaisons sont hétérogènes, les règles peuvent avoir des parties condition de différentes hauteurs. Par exemple :

Règle Condition
Rule1 ... when{A();B()} ...
Rule2 ... when{A()} ...
Rule3 ... when{B()} ...

Si vos règles définissent des liaisons hétérogènes, utilisez le mode d'exécution RetePlus ou Fastpath.

Les liaisons sont homogènes lorsque toutes les règles opèrent sur la même classe (la même sorte et le même nombre d'objets), mais introduisent différents tests. Par exemple :

Règle Condition
Rule1 ... when{Person(age == 12);} ...
Rule2 ... when{Person(age > 20);} ...

Si vos règles définissent des liaisons homogènes, utilisez le mode d'exécution séquentiel.

Quel est l'effet des actions entreprises par les règles ?

Le choix du mode d'exécution dépend en partie des types d'effets produits par vos règles à l'exécution.

Modifications dans la mémoire de travail

Si les actions des règles manipulent des objets dans la mémoire de travail et utilisent les mots clés IRL insert, retract ou update, utilisez le mode d'exécution RetePlus. Comme ces mots clés induisent des modifications dans la mémoire de travail, le moteur de règles réévalue les règles subséquentes. Si vous utilisez un autre mode d'exécution, le moteur de règles ne réévaluera pas les règles subséquentes après les modifications.

Chaînage des règles

Lorsque les actions de règles entraînent des modifications dans la mémoire de travail ou dans les paramètres et lorsque ces règles effectuent des recherches de motifs (pattern matching) sur des objets sans rapport entre eux (par exemple, des personnes et des loisirs), un chaînage est créé entre ces règles. Ce processus est également appelé inférence.

Par exemple :

SILVER LEVEL CUSTOMER, GREATER THAN $5000 purchase
promote to GOLD LEVEL
GOLD LEVEL CUSTOMER, GREATER THAN $5000 purchase
apply 25% discount

Vous pouvez constater qu'il existe un chaînage entre ces deux règles car elles effectuent une recherche de motifs sur deux objets différents, customer et purchase (client et achats), et la seconde change l'attribut level (niveau) de l'objet customer.

Fondamentalement, si vous savez que les actions de certaines règles provoquent l'exécution d'autres règles, utilisez le mode d'exécution RetePlus.

Quelle sorte de tests figurent dans les conditions des règles ?

Le choix du mode d'exécution dépend en partie du type de conditions testées dans vos règles.

Tests nécessitant une mémoire de travail

Si les conditions des règles testent l'existence d'objets ou recueillent des éléments d'une collection directement dans la mémoire de travail, et ce avec les mots clés IRL exists ou collect et sans constructions in ou from, utilisez le mode d'exécution RetePlus ou Fastpath.

Tests à schéma uniforme

Si les tests dans les conditions des règles obéissent au même schéma, avec le même ordre (comme les tests générés à partir de tables de décision), utilisez le mode d'exécution Fastpath.

Si l'ordre des tests dans les conditions des règles n'est pas uniforme, utilisez le mode d'exécution RetePlus ou séquentiel.

Quelles sont les priorités appliquées à vos règles ?

Le choix du mode d'exécution dépend en partie des priorités que vous avez fixées pour vos règles.

  • Si vous avez fixé des priorités statiques, vous pouvez utiliser n'importe quel algorithme.

  • Si vous avez fixé des priorités dynamiques, c'est-à-dire définies par une expression, vous devez utiliser le mode d'exécution RetePlus.

Récapitulatif

Utilisez le tableau suivant comme référence pour vous aider à choisir un mode d'exécution pour une tâche de règle. Le nombre d'étoiles indique le degré de performance.

Tableau 2. Choisir un mode d'exécution
Dans votre tâche de règle : RetePlus Séquentiel Fastpath
Application de conformité et validation Oui OuiOuiOui OuiOuiOui
Application de calcul avec inférence OuiOuiOui Non Non
Application de calcul sans inférence Oui Oui OuiOuiOui
Application de corrélation avec inférence OuiOuiOui Non Non
Application de corrélation sans inférence Oui Oui OuiOuiOui
Objets dans la mémoire de travail OuiOuiOui OuiOuiOui OuiOuiOui
Chaînage des règles OuiOuiOui Non Non
Tests sur l'existence d'objets ou d'éléments de collection directement dans la mémoire de travail OuiOuiOui Non OuiOuiOui
Tests obéissant à un même schéma OuiOui Oui OuiOuiOui
Liaisons hétérogènes OuiOuiOui Non OuiOuiOui
Priorités dynamiques OuiOuiOui Non Non
Sélection de règles à l'exécution qui sélectionne quelques règles parmi de nombreuses OuiOuiOui OuiOuiOui

Moteur de décision: OuiOui

Règles très nombreuses Oui OuiOuiOui OuiOuiOui