Groups
Los endpoints contienen directivas, que se ejecutan en un flujo que puede ser alterado usando groups.
- ERROR_FLOW: solo se ejecuta si otra directiva lanza previamente una excepción.
- AFTER_FLOW: las directivas en este grupo son ignoradas mientras se resuelve la petición. Una vez enviada la respuesta al cliente, se ejecutan una detrás de otra. Es el lugar ideal para
Log. - QUEUE_FLOW: cuando se usa ForTheWorker, las directivas no ejecutadas aún se encolan para un worker. QUEUE_FLOW permite ejecutar directivas justo después de haber encolado la tarea.
- NORMAL_FLOW: todas las directivas sin grupo explícito tienen este grupo por defecto.
Grupos personalizados
Puedes crear grupos específicos y activarlos/desactivarlos desde el estado:
$state->groups()->enable('CUSTOM_NAME');
$state->groups()->disable('ANOTHER_NAME');
$state->groups()->disableAll();
Ejemplo real con el grupo DIGESTION_REQUEST_FLOW. La directiva SetGridFlow determina en tiempo de ejecución si se debe activar la digestión:
post /grid:
SetGridFlow:
directive: SetGridFlow
CalculateGrid:
directive: CalculateGrid
groups:
- NORMAL_FLOW
- DIGESTION_REQUEST_FLOW
Connect:
directive: DatabaseConnect
groups:
- DIGESTION_REQUEST_FLOW
SaveGrid:
directive: SaveGrid
groups:
- DIGESTION_REQUEST_FLOW
PrepareResponse:
directive: ModifyMessage
body: $.memory.response
groups:
- NORMAL_FLOW
En este caso, CalculateGrid se ejecuta siempre (está en NORMAL_FLOW y DIGESTION_REQUEST_FLOW). Connect y SaveGrid solo se ejecutan si SetGridFlow ha activado el grupo DIGESTION_REQUEST_FLOW.