public void continueIfExecutionDoesNotAffectNextOperation ( Callback < PvmExecutionImpl , Void > dispatching , Callback < PvmExecutionImpl , Void > continuation , PvmExecutionImpl execution ) { String lastActivityId = execution . getActivityId ( ) ; String lastActivityInstanceId = getActivityInstanceId ( execution ) ; dispatching . callback ( execution ) ; execution = execution . getReplacedBy ( ) != null ? execution . getReplacedBy ( ) : execution ; String currentActivityInstanceId = getActivityInstanceId ( execution ) ; String currentActivityId = execution . getActivityId ( ) ; //if execution was canceled or was changed during the dispatch we should not execute the next operation //since another atomic operation was executed during the dispatching if ( ! execution . isCanceled ( ) && isOnSameActivity ( lastActivityInstanceId , lastActivityId , currentActivityInstanceId , currentActivityId ) ) { continuation . callback ( execution ) ; } }
Executes the given depending operations with the given execution . The execution state will be checked with the help of the activity instance id and activity id of the execution before and after the dispatching callback call . If the id s are not changed the continuation callback is called .