Sessions CER

Les éléments de données principaux utilisés avec CER sont les suivants :

Toutes les interactions avec les objets de règle CER et les valeurs d'attribut apparaissent au sein d'une session CER. Ces interactions incluent la création, l'extraction et/ou la suppression d'objets de règle CER, et tout calcul ou recalcul d'attributs sur les objets de règle.

Chaque session CER peut être créée à l'aide de la classe curam.creole.execution.session.Session_Factory.

Lorsqu'une session CER est créée, vous devez indiquer les informations suivantes :

Les implémentations de stockage de données doivent également spécifier une fabrique d'objets de règle à utiliser. Cette fabrique détermine si les objets de règle sont créés selon une méthode fortement typée ou en interprétation seule.

L'application comprend les implémentations suivantes :

ATTENTION :
En règle générale, vous ne devez pas utiliser plus d'une session CER au sein d'une transaction de base de données. Les copies en mémoire des objets de règle d'une session CER sont indépendantes des copies en mémoire des objets de règle de toutes les autres sessions CER.

Le comportement n'est pas garanti si plus d'une session CER (dans la même transaction) tentent d'extraire ou d'interroger le même objet de règle de la base de données.

1 La fonction de CER permettant d'effectuer des recalculs directement est désormais remplacée par le gestionnaire de dépendance (voir Gestionnaire de dépendance).

L'interface et les implémentations de la stratégie de recalcul de CER sont fournies uniquement à des fins de compatibilité amont.

2 Depuis Cúram V6, CER offre un choix d'implémentations de stockage de données. Celles-ci déterminent si les objets de règle, créés ou changés dans une transaction, peuvent être extraits et/ou changés dans une autre transaction.

Il est important de noter que le choix du stockage de données n'a pas d'incidence sur la sémantique de vos expressions de règle. Cela signifie que vous pouvez utiliser un stockage de données léger (en mémoire) pour vos tests JUnit (de sorte qu'un grand nombre de tests JUnit puisse s'exécuter rapidement), et un stockage de données permanent (base de données) pour votre logique de production (de sorte que les objets de règle soient conservés pour toutes les transactions), sans aucune différence dans vos calculs sous-jacents.

3 Pour une utilisation optimale, seuls les objets de règle externes et leurs valeurs d'attribut sont extraits des données de la base de données Cúram. Les objets de règle internes et leurs attributs, de par leur nature, peuvent être recalculés de manière fiable par la suite, alors que les objets de règle externes contiennent généralement des données provenant de sources externes, et ne peuvent donc pas être recalculées.
4 Notez que chaque convertisseur d'objet de règle est autorisé à imposer des limites à son support pour les expressions readall et readall.

Par exemple, il se peut que certains convertisseurs d'objet de règle ne prennent pas en charge l'exécution d'une expression readall (sans un élément imbriqué match), et/ou placent des restrictions sur les attributs de règle pouvant être nommés dans la valeur retrievedattribute de ce match.

Toute violation des limites du convertisseur d'objet de règle du convertisseur entraîne la génération d'une exception lors de l'exécution. Vous devez vérifier que vos tests de jeu de règles incluent une logique qui appelle les convertisseurs d'objet de règle (c'est-à-dire qui s'exécute sur le stockage de données de base de données), contrairement à la majorité de vos tests de logique de règles qui utilise le stockage de données en mémoire (et donc qui n'appelle pas les convertisseurs d'objet de règle).

Consultez la documentation de chaque implémentation du convertisseur d'objet de règle pour comprendre les limites qu'il impose sur son support pour readall.