package XXXXX; import XXXXX.Util; import XXXXX.Sender; import XXXXX.Database; import org.camunda.bpm.client.exception.NotAcquiredException; import org.camunda.bpm.client.exception.NotFoundException; import org.camunda.bpm.client.task.ExternalTask; import org.camunda.bpm.client.task.ExternalTaskHandler; import org.camunda.bpm.client.task.ExternalTaskService; import org.jboss.logging.Logger; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.inject.Named; import javax.transaction.Transactional; @ApplicationScoped @Named("XXTaskHandler") public class XXTaskHandler implements ExternalTaskHandler { @Inject Logger LOG; @Inject Sender sender; @Inject Util util; @Inject Database database; @Override @Transactional public void execute(ExternalTask externalTask, ExternalTaskService externalTaskService) { try { util.logTaskBeingHandled(LOG, externalTask); String id = externalTask.getVariable("id"); Data data = database.getById(id); boolean sucessfullySent = sender.sendToService(data) if (sucessfullySent) { externalTaskService.complete(externalTask); util.logSuccess(LOG, externalTask, antragsNr); } else { util.handleFailureWithExponentialBackoff(errorDetails, externalTask, externalTaskService); LOG.warn(errorDetails); } } catch (Exception e) { util.handleFailureWithExponentialBackoff(e, externalTask, externalTaskService); util.logError(LOG, externalTask, e); } } }