Documentation for a newer release is available. View Latest

Operaciones de dominio

Esta página lista las diversas operaciones que están disponibles a nivel de dominio global como llamadas a métodos estáticos.

passivate: Descargar un flujo de la memoria

Esto detendrá una instancia de flujo (incluso si no ha alcanzado un estado terminal) para ahorrar memoria, por ejemplo si se sabe que ha llegado a un paso de larga duración.

Ten en cuenta que los mensajes dirigidos a esta instancia seguirán entregándose, pero IPF volverá a cargar los eventos de ese flujo desde el journal en lugar de tenerlos ya en memoria.

La llamada es:

XxxDomain.passivate("MyBehaviour|some-id-23149082");

Donde Xxx es el nombre de la solución IPF que contiene el flujo relevante, y MyBehaviour es el nombre del propio flujo.

getAggregate: Obtener el aggregate (estado) de un flujo

Para recuperar el estado actual de una instancia de flujo, puedes llamar a:

XxxDomain.getAggregate("MyBehaviour|some-id-23149082");

Esto devolverá un CompletionStage<Aggregate> que se completa cuando se devuelve el aggregate.

El Aggregate será del tipo MyBehaviourAggregate, que contendrá:

  • El estado actual

  • Los últimos reason code(s)/descripción(es) de fallos

  • Todos los business data

  • Todos los events

No uses getAggregate como parte del procesamiento de un flujo (p. ej., como parte de la implementación de un adapter). Esto ralentizará considerablemente el procesamiento, especialmente bajo carga.

Las llamadas a getAggregate son atendidas por el mismo actor EventSourcedBehaviour que es responsable de persistir events. Como se trata de un actor tradicional, solo puede atender una solicitud a la vez.

Si la carga es lo suficientemente significativa, el actor se verá cargado atendiendo solicitudes de getAggregate en lugar de recibir commands y persistir los events resultantes.

Si ves que necesitas usar getAggregate para obtener un dato como parte de un adapter, define ese dato como Business Data Element en el External Domain en su lugar. Esto lo hará disponible para tu adapter sin necesidad de usar getAggregate.

getStatus: Obtener el status de un flujo

Esta operación es similar a la anterior, pero solo devolverá el estado actual. También devuelve un CompletionStage<AggregateStatus>.

Para recuperar el status:

XxxDomain.getStatus("MyBehaviour|some-id-23149082");

abort: Detener la ejecución de un flujo

Este comando toma un argumento reason y:

  • Establece el estado del flujo a ABORTED

  • Establece el resulting status a Aborted

  • Publica un AbortedEvent con la razón especificada en la llamada

  • Cancela todas las tareas programadas relacionadas con este flujo

Para abortar un flujo:

XxxDomain.abort("MyBehaviour|some-id-23149082", "some special reason");
Una vez que un flujo ha sido abortado, no puede reanudarse, ni siquiera con la función resume a continuación.

resume: Continuar la ejecución de un flujo

Esta operación invocará el proceso de action revival para un flujo con el fin de intentar mover a la siguiente etapa una transacción que parece estar atascada.

Ten en cuenta que esta operación no puede reanudar transacciones abortadas.

Para reanudar un flujo:

XxxDomain.resume("MyBehaviour|some-id-23149082");