Décider d'un mode d'exécution
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.
| Choisissez ce mode : | Dans ce cas : |
|---|---|
| RetePlus |
|
| Séquentiel |
|
Fastpath |
|
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.
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,retractouupdate, 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
existsoucollectet sans constructionsinoufrom, 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.
| Dans votre tâche de règle : | RetePlus | Séquentiel | Fastpath |
|---|---|---|---|
| Application de conformité et validation | |||
| Application de calcul avec inférence | |||
| Application de calcul sans inférence | |||
| Application de corrélation avec inférence | |||
| Application de corrélation sans inférence | |||
| Objets dans la mémoire de travail | |||
| Chaînage des règles | |||
| Tests sur l'existence d'objets ou d'éléments de collection directement dans la mémoire de travail | |||
| Tests obéissant à un même schéma | |||
| Liaisons hétérogènes | |||
| Priorités dynamiques | |||
| Sélection de règles à l'exécution qui sélectionne quelques règles parmi de nombreuses | Moteur de décision: |
||
| Règles très nombreuses |