Interface FutureJavaDelegate<Output>
-
- Type Parameters:
Output
- the output of the execution
- All Known Subinterfaces:
FlowableFutureJavaDelegate<Input,Output>
,MapBasedFlowableFutureJavaDelegate
public interface FutureJavaDelegate<Output>
Convenience class that should be used when a Java delegation in a BPMN 2.0 process is required (for example, to call custom business logic). When this interface is implemented then the execution of the logic can happen on a different thread then the process execution.This class can be used only for service tasks.
This class does not allow to influence the control flow. It follows the default BPMN 2.0 behavior of taking every outgoing sequence flow (which has a condition that evaluates to true if there is a condition defined) If you are in need of influencing the flow in your process, use the class 'org.flowable.engine.impl.pvm.delegate.ActivityBehavior' instead.
This interface allows fine grained control on how the future should be created. It gives access to the
AsyncTaskInvoker
which can delegate execution to a shared task executor. However, it doesn't have to be used. In case you don't need custom task executor theFlowableFutureJavaDelegate
can be used.- Author:
- Filip Hrisafov
- See Also:
FlowableFutureJavaDelegate
,MapBasedFlowableFutureJavaDelegate
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
afterExecution(DelegateExecution execution, Output executionData)
Method invoked with the result fromexecute(DelegateExecution, AsyncTaskInvoker)
.CompletableFuture<Output>
execute(DelegateExecution execution, org.flowable.common.engine.api.async.AsyncTaskInvoker taskInvoker)
Perform the execution of the delegate, potentially on another thread.
-
-
-
Method Detail
-
execute
CompletableFuture<Output> execute(DelegateExecution execution, org.flowable.common.engine.api.async.AsyncTaskInvoker taskInvoker)
Perform the execution of the delegate, potentially on another thread. The result of the future is passed in theafterExecution(DelegateExecution, Object)
in order to store the data on the execution on the same thread as the caller of this method. IMPORTANT: the execution should only be used to read data before creating the future. The execution should not be used in the task that will be executed on a new thread.The
AsyncTaskInvoker
is in order to schedule an execution on a different thread. However, it is also possible to use a different scheduler, or return a future not created by the giventaskInvoker
.- Parameters:
execution
- the execution that can be used to extract datataskInvoker
- the task invoker that can be used to execute expensive operation on another thread- Returns:
- the output data of the execution
-
afterExecution
void afterExecution(DelegateExecution execution, Output executionData)
Method invoked with the result fromexecute(DelegateExecution, AsyncTaskInvoker)
. This should be used to set data on theDelegateExecution
. This is on the same thread asexecute(DelegateExecution, AsyncTaskInvoker)
and participates in the process transaction.- Parameters:
execution
- the execution to which data can be setexecutionData
- the execution data
-
-