Sesiones de CER

Los principales elementos de datos utilizados con CER son:

Toda la interacción con los objetos de regla CER y los valores de atributo se produce en una sesión CER. Estas interacciones incluyen la creación, recuperación y/o eliminación de objetos de regla CER y cualquier cálculo o recálculo de atributos en los objetos de regla.

Cada sesión CER se crea utilizando la clase curam.creole.execution.session.Session_Factory.

Cuando se crea una sesión CER, se debe especificar lo siguiente:

A su vez, las implementaciones de almacenamiento de datos debe especificar una fábrica de objetos de regla a utilizar. Esta fábrica controla si los objetos de regla se crean de forma de tipo fuerte o de manera sólo interpretada.

La aplicación incluye estas implementaciones:

PRECAUCIÓN:
En general, no se debe utilizar más de una sesión CER dentro de una transacción de base de datos. Las copias en memoria de objetos de regla en una sesión CER son independientes de las copias en memoria de los objetos de regla en todas las demás sesiones de CER.

No se garantiza el comportamiento si más de una sesión CER (en la misma transacción) intenta recuperar o consultar el mismo objeto de regla de la base de datos.

1 La posibilidad de CER de realizar recálculos directamente se reemplaza ahora por el Gestor de dependencias (consulte Gestor de dependencias).

La interfaz de estrategia de recálculo de CER y las implementaciones se proporcionan sólo por compatibilidad con versiones anteriores.

2 Desde Cúram V6, CER ofrece una selección de implementaciones de almacenamiento de datos. Estas implementaciones de almacenamiento de datos afecta si los objetos de regla, creados o cambiados en una transacción, se pueden recuperar y/o cambiar en otras transacciones.

Lo que es más importante, la opción de almacenamiento de datos no afecta la semántica de las expresiones de regla. Esto significa que puede utilizar un almacenamiento de datos ligero (en memoria) para las pruebas de JUnit (para que los objetos de regla permanezcan entre transacciones), sin ninguna diferencia en los cálculos subyacentes.

3 Como optimización, sólo los objetos de regla externos y los valores de atributo se recuperan de los datos de la base de datos de Cúram. Los objetos de regla internos y sus atributos, por su naturaleza, se pueden volver a calcular de forma fiable más adelante, mientras que los objetos de regla externos normalmente contienen datos de orígenes externos y, por lo tanto no se pueden volver a calcular.
4 Tenga en cuenta que cada convertidor de objeto de regla está autorizado a imponer límites en su soporte para expresiones readall y readall.

Por ejemplo, algunos conversores de objeto de regla no pueden soportar la ejecución de un readall (sin una coincidencia anidada) y/o poner restricciones en qué atributos de regla se pueden mencionar en el valor retrievedattribute de la coincidencia.

Cualquier violación de las limitaciones del conversor de objeto de regla hará que se genere una excepción en el tiempo de ejecución. Debe asegurarse de que las pruebas de conjunto de reglas incluyan lógica que invoque los conversores de objeto de regla (es decir, que se ejecute en el almacenamiento de datos de base de datos); a diferencia de la mayoría de las pruebas de lógica de reglas que utilizarán almacenamiento de datos en memoria (y que por lo tanto no invocan los conversores de objeto de regla).

Consulte la documentación de cada implementación de conversor de objeto de regla para conocer los límites que impone en el soporte para readall.