La reejecución de las reglas al editar un flujo es el comportamiento por el cual las reglas al guardar se vuelven a ejecutar cuando alguien modifica una solicitud de flujo de trabajo pendiente. La nota de SAP 2993166 lo describe como comportamiento esperado: cuando se actualiza un flujo, las reglas al guardar se ejecutan de nuevo sobre los datos editados.
Para entenderlo hay que recordar cómo funciona un flujo. Cuando un cambio dispara un flujo, el sistema no guarda el registro: crea una solicitud con los datos propuestos. Algunos pasos del flujo permiten editar esos datos, como vimos en la U5 L3 con el permiso de editar sin cambio de ruta. Cuando un aprobador edita, el sistema trata la edición como un nuevo guardado de la solicitud, y las reglas al guardar vuelven a correr.
En Best Run Argentina, AR_Aprobación de promoción permite que el paso de RR. HH. edite sin cambio de ruta. Si Lucía Fernández corrige la fecha de una promoción, AR_Derivar motivo de evento y AR_Disparar flujo de promoción se evalúan de nuevo. En ese caso no hay problema: el motivo sigue siendo AR_PROMO, porque el grado sigue siendo distinto del anterior, y la regla del flujo sigue apuntando al mismo flujo.
El problema aparece con las reglas que calculan o crean algo a partir del valor actual. La nota menciona el caso de una regla que recalcula un importe: si se ejecuta dos veces, el cálculo puede aplicarse dos veces. Lo mismo pasa con una regla que crea un registro, como un componente de pago. Es la situación 4 del ejercicio de la L3: en otra filial, una regla al guardar que crea un bono de promoción lo generó dos veces después de que RR. HH. editó la fecha en su paso del flujo.
La nota propone soluciones para no recalcular dos veces. La idea general es que la regla compruebe si ya actuó antes de actuar de nuevo: si el bono ya existe, no lo crea; si el importe ya se ajustó, no lo vuelve a ajustar. Otra opción es diseñar el cálculo para que dé el mismo resultado sin importar cuántas veces se ejecute, por ejemplo calculando el importe a partir de un valor fijo y no del valor actual.
Este comportamiento afecta el diseño y las pruebas. En el diseño, toda regla al guardar que crea o calcula algo tiene que pensarse para correr más de una vez. En las pruebas, el plan de un circuito con flujo tiene que incluir un caso de edición en el paso de aprobación, como hace el plan del ejercicio de la L3: editar la fecha en el paso de RR. HH. y confirmar que el resultado no cambia.
También es una pista para el diagnóstico. Si un cliente reporta que un valor se duplicó o se recalculó mal en las promociones, una de las primeras preguntas es si alguien editó la solicitud. La herramienta de diagnóstico de la L6 guarda las acciones del flujo, y la traza de reglas muestra cada ejecución de las reglas con sus valores.
