¿Cómo puedo añadir un custom extension?
En extensiones, se discutieron los diferentes tipos de extensiones disponibles. Esta guía explica cómo proporcionar su propia custom extension.
La clase importante de la que debe estar al tanto aquí es 'ExtensionsProvider', que le permite especificar cualquiera de los extension puntos que necesita utilizar en sus flujos. No es necesario proporcionar todas las extensiones aquí, ya que cualquier extensión que no se proporcione simplemente volverá a utilizar las implementaciones predeterminadas.
Todas las extensiones se registran a través de la clase de dominio del modelo. Después de que su modelo de dominio esté construido, verá:
new XXXDomain. Builder(actorSystem)
.withXXXExtensions(ExtensionProvider.<XXXAggregate>builder().build())
.withFallbackExtensions(ExtensionProvider.<Aggregate>builder().build())
.build();
En esta definición de Builder, podemos ver que hay dos métodos clave disponibles:
-
'conXXXExtensiones'- esto nos permite definir un extension proveedor que es específico para un flujo dado (definido a través de la definición de agregado).
-
'conExtensionesDeRespaldo'- esto nos permite definir un valor predeterminado extension proveedor que se aplicará a todos los flujos. Nota: cualquier extension lo proporcionado a nivel de flujo tendrá prioridad sobre estas extensiones de respaldo.
Por ejemplo, aquí podemos ver un dominio estándar que se está construyendo y que ha sido provisto con un manejo de errores específico.extension:
new ErrorHandlingDomain. Builder(actorSystem)
.withErrorHandlingMappingAdapter(errorHandlingMappingPort)
.withErrorHandlingExternalDomainActionAdapter(errorHandlingExternalDomainActionPort)
.withErrorHandlingExtensions(ExtensionProvider.<ErrorHandlingAggregate>builder().flowErrorExtensions(flowErrorExtensions).build())
.withEventBus(systemEventBus)
.withDispatcher(new SimpleFloDispatcher())
.build();