protected internal virtual void UpdateAsyncBeforeTargetConfiguration() { var targetConfiguration = new AsyncContinuationJobHandler.AsyncContinuationConfiguration(); //var currentConfiguration = // (AsyncContinuationJobHandler.AsyncContinuationConfiguration) jobEntity.JobHandlerConfiguration; //if (PvmAtomicOperation_Fields.PROCESS_START.CanonicalName.Equals(currentConfiguration.AtomicOperation)) //{ // // process start always stays process start // targetConfiguration.AtomicOperation = PvmAtomicOperation_Fields.PROCESS_START.CanonicalName; //} //else //{ // if (((ActivityImpl) targetScope).IncomingTransitions.Count == 0) // { // targetConfiguration.AtomicOperation = // PvmAtomicOperation_Fields.ACTIVITY_START_CREATE_SCOPE.CanonicalName; // } // else // { // targetConfiguration.AtomicOperation = // PvmAtomicOperation_Fields.TRANSITION_CREATE_SCOPE.CanonicalName; // } //} //jobEntity.JobHandlerConfiguration = targetConfiguration; }
protected internal virtual void UpdateAsyncAfterTargetConfiguration( AsyncContinuationJobHandler.AsyncContinuationConfiguration currentConfiguration) { var targetActivity = (ActivityImpl)targetScope; var outgoingTransitions = (IList <IPvmTransition>)targetActivity.OutgoingTransitions; var targetConfiguration = new AsyncContinuationJobHandler.AsyncContinuationConfiguration(); if (outgoingTransitions.Count == 0) { targetConfiguration.AtomicOperation = PvmAtomicOperationFields.ActivityEnd.CanonicalName; } else { targetConfiguration.AtomicOperation = PvmAtomicOperationFields.TransitionNotifyListenerTake.CanonicalName; if (outgoingTransitions.Count == 1) { targetConfiguration.TransitionId = outgoingTransitions[0].Id; } else { TransitionImpl matchingTargetTransition = null; var currentTransitionId = currentConfiguration.TransitionId; if (!ReferenceEquals(currentTransitionId, null)) { matchingTargetTransition = (TransitionImpl)targetActivity.FindOutgoingTransition(currentTransitionId); } if (matchingTargetTransition != null) { targetConfiguration.TransitionId = matchingTargetTransition.Id; } else { throw new ProcessEngineException("Cannot determine matching outgoing sequence flow"); } } } //jobEntity.JobHandlerConfiguration = targetConfiguration; }