public virtual void Execute(PvmExecutionImpl execution) { // reset activity instance id before creating the scope execution.ActivityInstanceId = execution.ParentActivityInstanceId; PvmExecutionImpl propagatingExecution = null; IPvmActivity activity = execution.Activity; if (activity != null && activity.IsScope) { propagatingExecution = (PvmExecutionImpl)execution.CreateExecution(); propagatingExecution.Activity = activity; propagatingExecution.Transition = (execution.Transition); execution.Transition = (null); execution.IsActive = false; execution.Activity = (null); Log.CreateScope(execution, propagatingExecution); propagatingExecution.Initialize(); } else { propagatingExecution = execution; } ScopeCreated(propagatingExecution); }