Correct usage of AsyncComponent - Hive2Hive/ProcessFramework GitHub Wiki

The execute() and rollback() methods returns a Future<T> object, where T is the type of the result. Possible exceptions can also be retrieved through this Future<T> object.

The following code snippet shows the correct execution and result retrieval of the AsyncComponent. It also shows how to deal with possible exceptions.

The rollback works equivalently, but rollback() throws a ProcessRollbackException instead of a ProcessExecutionException.

AsyncComponent<Integer> asyncComp = new AsyncComponent<>(...);

Future<Integer> futureResult;
int result;

// start the process
try {
    futureResult = asyncComp.execute();
    // immediate return

} catch (InvalidProcessStateException ex) {
    System.err.println("Invalid state for execution.");
} catch (ProcessExecutionException ex) {
    System.err.println("AsyncComponent has encountered an error during execution.");
}

// do other stuff meanwhile...
		
// get the result
try {
    result = futureResult.get();
		
} catch (InterruptedException | CancellationException ex) {
    System.err.println("Something went wrong with the thread.");
} catch (ExecutionException ex) {
    // the thread threw an exception
			
    if (ex.getCause() instanceof ProcessExecutionException) {
        System.err.println("Some async process component threw an exception during execution.");
    }
}
⚠️ **GitHub.com Fallback** ⚠️