Documentation for a newer release is available. View Latest

How Do I Modify HTM Request from HTM Error Handler for Flo-Lang?

The custom HTM Error handler, based on default implementation can be created for sending additional data (supporting data and parameters) to HTM. For example:

public class CustomHtmErrorHandlerExtensions<T extends Aggregate> extends HtmErrorHandlerExtensions<T> {

    public CustomHtmErrorHandlerExtensions(SendingConnector<RegisterTaskRequest, Response<RegisterTaskResponse>> taskConnector, HtmProcessorRegistry htmProcessorRegistry) {
        super(taskConnector, htmProcessorRegistry);
    }

    @Override
    protected ValueWrapper getSupportingData(T aggregate, Throwable t) {
        return ValueWrapper.builder().build(); // custom implementation
    }

    @Override
    protected ValueWrapper getParameters(T aggregate, Throwable t) {
        return ValueWrapper.builder().build(); // custom implementation
    }
}

Spring configuration example:

@Bean
public HtmErrorHandlerExtensions<Aggregate> defaultHtmErrorExtensions(SendingConnector<RegisterTaskRequest, Response<RegisterTaskResponse>> taskConnector, HtmProcessorRegistry htmProcessorRegistry) {
    return new CustomHtmErrorHandlerExtensions<>(taskConnector, htmProcessorRegistry);
}

@Bean
public HtmexampleDomain htmexampleDomain(ActorSystem actorSystem, Dispatcher floDispatcher,
                                         HtmErrorHandlerExtensions<Aggregate> htmErrorHandlerExtension) {
    // All adapters should be added to the domain model
    return new HtmexampleDomain.Builder(actorSystem)
            .withDispatcher(floDispatcher)
            .withFallbackExtensionProvider(ExtensionProvider.builder().flowErrorExtensions(htmErrorHandlerExtension).build()) (1)
            .build();
}