protected internal override void EventNotificationsCompleted(PvmExecutionImpl execution) { execution.ContinueIfExecutionDoesNotAffectNextOperation((e) => e.DispatchEvent(null), (e) => { var processInstanceStartContext = e.ProcessInstanceStartContext; var instantiationStack = processInstanceStartContext.InstantiationStack; if (instantiationStack.Activities.Count == 0) { e.Activity = instantiationStack.TargetActivity; e.PerformOperation(PvmAtomicOperationFields.ActivityStartCreateScope); } else { // initialize the activity instance id e.ActivityInstanceId = e.Id; e.PerformOperation(PvmAtomicOperationFields.ActivityInitStack); } }, execution); }
public virtual void Execute(PvmExecutionImpl execution) { execution.ActivityInstanceStarted(); execution.ContinueIfExecutionDoesNotAffectNextOperation((e) => { if (execution.Activity.IsScope) { execution.DispatchEvent(null); } }, (e) => { var activityBehavior = ActivityBehaviorUtil.GetActivityBehavior(e); var activity = (ActivityImpl)e.Activity; Log.DebugExecutesActivity(e, activity, activityBehavior.GetType().FullName); //try //{ Log.LogDebug("activityBehavior类型:", activityBehavior.GetType().Name); if (activity.IsTransaction) { Log.LogDebug("进入SubProcess,并新建事务", activity.ActivityId); context.Impl.Context.CommandContext.AddTransaction(); } if (activity.IsInTransaction) { Log.LogDebug("进入SubProcess子Activity:", activity.ActivityId); } activityBehavior.Execute(e); //} //catch (Exception e) //{ // throw new PvmException( // "couldn't execute activity <" + activity.GetProperty("type") + " id=\"" + activity.Id + // "\" ...>: " + e.Message, e); //} }, execution); }