Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si la ejecución de una acción afecta al estado de un objeto o un término utilizado en condiciones, esa acción se considera que tiene un efecto secundario en el objeto.
Supongamos que tenemos las siguientes reglas.
Regla 1
IF OrderForm.ItemCount > 100
THEN OrderForm.Status = "important"
Regla 2
IF OrderList.IsFromMember = true
THEN OrderForm.UpdateStatus("important")
En este caso, se dice que OrderForm.UpdateStatus tiene un efecto secundario en OrderForm.Status. Esto no significa que OrderForm.UpdateStatus tenga efectos secundarios; en su lugar, OrderForm.Status se ve potencialmente afectado por una o varias acciones.
De forma predeterminada, la propiedad SideEffects para los miembros de clase .NET es true, lo que impide que el motor de reglas almacena en caché el miembro con efectos secundarios. En nuestro ejemplo, el motor de reglas no almacena en caché OrderForm.Status en la memoria de trabajo; en su lugar, obtiene el valor más up-to-date de OrderForm.Status cada vez que se evalúa la regla 1. Si la propiedad SideEffects se establece en false, el motor de reglas almacena en caché el valor la primera vez que evalúa OrderForm.Status, pero para evaluaciones posteriores (en escenarios de encadenamiento de reenvío), usa el valor almacenado en caché.
Actualmente, Business Rule Composer no proporciona una manera para que los usuarios modifiquen SideEffects; sin embargo, solo puede establecer la propiedad SideEffects mediante programación a través del marco de reglas de negocios. Puede hacer esto al momento del enlace, utilizando la clase ClassMemberBinding para especificar métodos de objeto, propiedades y campos usados en condiciones y acciones de reglas. ClassMemberBinding tiene una propiedad SideEffects, que contiene un valor booleano que indica si el acceso al miembro cambia su valor.