Toda regla de negocio se arma con la misma estructura. La academia la describe en tres partes: la condición SI, que tiene que cumplirse antes de actuar; la acción ENTONCES, que dice cómo responde el sistema; y el disparador, el evento que inicia el procesamiento. A esas tres se suma una cuarta, opcional: la parte SINO, con la acción que se ejecuta cuando la condición no se cumple.
La condición SI se arma con comparaciones. Se puede preguntar si un campo tiene un valor de una lista, si un número es mayor o menor que otro, si un campo está vacío o si cambió respecto de su valor anterior. Las comparaciones se unen con y u o, y se pueden agrupar para armar condiciones más complejas. Cuando la regla tiene que actuar siempre, sin condición, se usa Siempre verdadero (Always True). Y cuando hay varios casos posibles, se encadenan ramas con SINO SI (Else If): la regla evalúa la primera condición, si no se cumple pasa a la segunda, y así hasta la última.
La acción ENTONCES puede ser de varios tipos. La más común es Establecer (Set), que le da un valor a un campo. Otras son Mostrar mensaje (Raise Message), que muestra un error, una advertencia o una información; Crear (Create), que genera un objeto hijo, como un componente de pago; Eliminar (Delete); Ejecutar (Execute); y Agregar a (Add to) una colección. Una misma rama puede tener varias acciones, y el orden en que se ejecutan importa, como advierte la academia en su ejemplo del documento de identidad.
La parte SINO es la que más se olvida en el diseño, y a veces conviene que no exista. En AR_ID de usuario, de la L4, la regla no tiene SINO a propósito: si la entidad legal no es AR01, el sistema genera el ID de la forma habitual. En cambio, en una regla que vuelve obligatorio un campo solo para AR01, la parte SINO es necesaria para que el campo deje de ser obligatorio en las demás entidades legales.
Con las ramas SINO SI aparece una decisión de negocio que no siempre se ve a simple vista: el orden. Si dos condiciones se cumplen a la vez, gana la primera. En AR_Derivar motivo de evento, un cambio de grado y de ubicación a la vez queda como promoción, porque la rama del grado va antes que la del traslado. No hay un orden correcto en abstracto: lo decide el cliente, y conviene dejarlo escrito en la descripción de la regla.
En el caso del curso, la primera regla de la unidad muestra la estructura más simple. AR_CC por departamento tiene una condición, que la entidad legal sea AR01 y el departamento sea AR_VTA, y una acción, establecer el centro de costos en AR_CC_VTA. Si mañana cada departamento de la filial tuviera su centro de costos, la misma regla crecería con una rama SINO SI por departamento, sin necesidad de crear reglas nuevas ni de cambiar su asignación.
Un consejo para el diseño: antes de abrir el editor, escribí la regla en una tabla con cuatro filas, SI, ENTONCES, SINO y asignación. Si no podés completar la tabla, todavía no está claro qué tiene que hacer la regla.
