Bulk Agregue
El propósito de la Bulker El agregado consiste en crear volúmenes únicos o recurrentes, validando y agregando componentes que serán utilizados por el Productor a granel para crear el archivo masivo.
Único Bulk Agregue
El Único Bulk el agregado es un componente cuyo propósito es crear un nuevo conjunto, agregar componentes de conjunto y asegurarse de que esos componentes sean válidos. Después de que todos los componentes de conjunto sean recopilados por el agregado,bulking puede ser iniciado.
Interfaz
La interfaz Bulk Aggregate se define de la siguiente manera.
public interface BulkAggregate {
CompletionStage<BulkIdResponse> createBulk(CreateBulkCommand command); (1)
CompletionStage<BulkComponentIdResponse> addComponent(AddComponentCommand command); (2)
CompletionStage<BulkComponentIdResponse> addComponent(AddComponentWithAutoCreateCommand command); (3)
CompletionStage<Response> updateComponent(UpdateComponentCommand command); (4)
CompletionStage<Response> removeComponent(RemoveComponentCommand command); (5)
CompletionStage<Response> closeBulk(CloseBulkCommand command); (6)
CompletionStage<Response> openBulk(OpenBulkCommand command); (7)
CompletionStage<Response> finaliseBulk(FinaliseBulkCommand command); (8)
CompletionStage<BulkReportResponse> getBulkReport(GetBulkReportCommand command); (9)
CompletionStage<Response> terminateBulk(TerminateBulkCommand command); (10)
CompletionStage<Response> rejectBulk(RejectBulkCommand command); (11)
CompletionStage<Response> archiveBulk(ArchiveBulkCommand command); (12)
CompletionStage<Response> completeBulk(CompleteBulkCommand command); (13)
}
| 1 | create Bulk Crea un nuevo lote.
|
| 2 | add Component Agrega un nuevo componente al agregado masivo. El primer componente debe ser un componente raíz.
|
| 3 | add Component Agrega un nuevo componente al agregado masivo con funcionalidad de auto-creación masiva. Esto significa que si el agregado masivo con el bulkId proporcionado no existe, se creará y se generará un componente raíz mediante ComponentGenerator antes de que se añada el nuevo componente.
|
| 4 | update Component Actualiza el componente que se encuentra en el agregado con el nuevo contenido.
|
| 5 | remove Component Elimina el componente que está presente en el agregado.
|
| 6 | close Bulk Cierra el agregado, impidiendo que el cliente elimine y añada nuevos componentes al agregado, pero permite actualizar los componentes que ya están en el agregado.
|
| 7 | open Bulk Reabre el agregado que está cerrado.
|
| 8 | finalise Bulk El punto de no retorno, esta es la señal para comenzar a procesar datos en conjunto y realizar bulking.
|
| 9 | get Bulk Report Devuelve un BulkReportResponse que contienen información sobre la carga actual. |
| 10 | terminate Bulk Elimina un conjunto completo que está presente en el agregado.
|
| 11 | reject Bulk Elimina el archivo en bloque producido después de que se haya realizado la finalización. El comando solo se procesará con éxito si el Bulk está en el estado finalizado, y si el archivo producido está presente. Se recomienda que este proceso sea triggered después del BulkFinalisedNotification el evento ha sido recibido.
|
| 12 | archive Bulk Archiva el archivo masivo producido después de que se haya realizado la finalización. El comando solo se procesará con éxito si el Bulk está en el estado finalizado, y si el archivo producido está presente. Se recomienda que este proceso sea triggered después del BulkFinalisedNotification El evento ha sido recibido.
|
| 13 | complete Bulk Completa el lote finalizado; después de que el lote esté completo, solo se puede llamar al método getBulkReport. |
Recurrente Bulk Agregue
Recurrente Bulk Aggregate es un componente para crear un lote recurrente. Es responsable de añadir componentes a un Bulk Agregue, y cuando eso Bulk Si el agregado se finaliza por cualquier motivo, se creará un nuevo Bulk Agregue un componente raíz y reenvíe los componentes a él.
Interfaz
La interfaz Recurring Bulk Aggregate se define de la siguiente manera.
public interface RecurringBulkAggregate {
CompletionStage<Response> configureBulk(ConfigureBulkCommand command); (1)
CompletionStage<RecurringBulkComponentIdResponse> addComponent(AddComponentCommand command); (2)
CompletionStage<CurrentOpenBulkResponse> getCurrentOpenBulk(GetCurrentOpenBulkCommand command); (3)
}
| 1 | create Bulk se utiliza para crear un nuevo lote recurrente.
|
| 2 | add Component se utiliza para agregar un nuevo componente al lote actual abierto.
|
| 3 | get Current Open Bulk se utiliza para recuperar el volumen recurrente actual.
|
Lo que necesita implementar
Dado que el agregado de volumen recurrente es responsable de crear un nuevo volumen único, también es responsable de generar el componente raíz para el volumen único creado, y el cliente puede enviar únicamente componentes que se añadirán como componentes hijos de ese componente raíz. Los clientes deberán crear una implementación de Component Generator que será responsable de la generación de un componente raíz de volumen único creado por el agregado de volumen recurrente.
public interface ComponentGenerator {
String generateComponent(String specificationName); (1)
}
| 1 | generate Component se utiliza para crear un componente raíz para el único lote creado por el lote recurrente.
|
Códigos de Error
Cuando un cliente envía comandos inválidos, se devolverá una respuesta con un resultado de FALLA junto con el Error.
Lista de códigos de error:
| Error | Mensaje | Descripción | Para el Comando | Tipo de agregado |
|---|---|---|---|---|
AC01 |
El identificador del padre está presente para el componente raíz. |
El componente raíz no puede tener un padre. |
AddComponentCommand |
Único |
AC02 |
El padre no existe |
Devuelto si el padre no está presente en el agregado masivo (no se aplica al componente raíz) |
AddComponentCommand |
Único |
AC03 |
Ruta no válida o no presente en el BulkSpecification |
Devuelto si la ruta del componente no está definida en el BulkSpecification |
AddComponentCommand |
Único |
AC04 |
— |
Devuelto si el contenido es nulo o vacío |
AddComponentCommand |
Único |
AC05 |
Bulk auto cerrado |
Devuelto si el volumen se cierra automáticamente. |
AddComponentCommand |
Único |
AC06 |
Bulk el componente con el mismo id ya existe |
Devuelto si el componente con el mismo id ya ha sido añadido al agregado masivo. |
AddComponentCommand |
Único |
UC01 |
El componente no existe |
Componente con BulkComponentId no presente en el Bulk Agregue |
ActualizarComandoDeComponente |
Único |
UC02 |
— |
Devuelto si el contenido es nulo o vacío |
UpdateComponentCommand |
Único |
RC01 |
El componente no existe |
Componente con BulkComponentId no presente en el Bulk Agregue |
RemoveComponentCommand |
Único |
RC02 |
El componente raíz no puede ser eliminado. |
Devuelto si el componente no puede ser eliminado porque es un componente raíz. |
RemoveComponentCommand |
Único |
RC03 |
El componente tiene componentes secundarios. |
Devuelto cuando el componente no puede ser eliminado porque tiene componentes secundarios. |
RemoveComponentCommand |
Único |
CS01 |
Error al guardar en el almacén de componentes |
Si una guardado/actualización falla en el almacén de componentes |
En cualquier comando que añada o actualice componentes |
Único |
CS02 |
No se pudo eliminar del almacén de componentes. |
Si una eliminación falla desde el almacén de componentes |
RemoveComponentCommand |
Único |
SS01 |
No se pudo recuperar el estado en bloque. |
Si no logra recuperar el estado masivo persistido |
Durante la creación masiva de actores |
Único |
RB01 |
El identificador de lote recurrente no es válido. |
Devuelto si el id de lote recurrente no es válido |
CreateBulkCommand |
Recurrente |
RB02 |
La especificación de volumen recurrente no es válida. |
Devuelto si BulkSpecification no es válido. |
CreateBulkCommand |
Recurrente |
RB03 |
Bulk marcado como cerrado |
El comando no es compatible en el estado actual. |
En cualquier comando que no sea finalizar |
Recurrente |
RB04 |
No se ha configurado la carga masiva recurrente. |
El comando no es compatible en el estado actual. |
ObtenerCargaAbiertaActual |
Recurrente |
RB05 |
No hay ninguna apertura actual. Bulk |
El comando no es compatible en el estado actual. |
ObtenerCargaAbiertaActual |
Recurrente |
RB06 |
Nueva creación masiva en progreso |
El comando no es compatible en el estado actual. |
AddComponentWithAutoCreate, RegisterChildBulkWithAutoCreate |
Recurrente |
NSC01 |
El comando no es compatible. |
El comando no es compatible en el estado actual. |
En cualquier comando |
Idempotencia
Para hacer cumplir la idempotencia y evitar agregar dos componentes iguales al agregado masivo, el cliente debe establecer el id del componente al enviar comandos AddComponent al bulker.
Dado que el agregado por lotes no se preocupa por el contenido del componente, si el cliente envía dos componentes con el mismo contenido pero con diferentes identificadores de componente, ambos componentes serían aceptados.
Implementaciones
Como con otras bibliotecas de IPF, las implementaciones predeterminadas para los casos de uso más comunes ya están proporcionado.