Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Filters / ActivityExecutionFilter.cs / 1305376 / ActivityExecutionFilter.cs
namespace System.Workflow.ComponentModel { using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; internal abstract class ActivityExecutionFilter : ActivityExecutor, ISupportWorkflowChanges { #region ISupportWorkflowChanges Members public virtual void OnActivityAdded(ActivityExecutionContext executionContext, Activity addedActivity) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (addedActivity == null) throw new ArgumentNullException("addedActivity"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnActivityAdded(executionContext, addedActivity); } public virtual void OnActivityRemoved(ActivityExecutionContext executionContext, Activity removedActivity) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (removedActivity == null) throw new ArgumentNullException("removedActivity"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnActivityRemoved(executionContext, removedActivity); } public virtual void OnWorkflowChangesCompleted(ActivityExecutionContext executionContext) { if (executionContext == null) throw new ArgumentNullException("executionContext"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnWorkflowChangesCompleted(executionContext); } #endregion ISupportWorkflowChanges #region Execute, Cancel, Compensate and HandleFault public override ActivityExecutionStatus Execute(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); return NextActivityExecutorInChain(executionContext.Activity).Execute(activity, executionContext); } public override ActivityExecutionStatus Cancel(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); // If primary activity is Closed, then return, these filters might have acquired locks // on to the primary activity, and in that case even if the activity has closed itself // it might get Cancel signal. So we don't want activity to get Cancel signal, when it // already has declared itself Closed. ActivityExecutor nextActivityExecutor = NextActivityExecutorInChain(executionContext.Activity); if (!(nextActivityExecutor is ActivityExecutionFilter) && executionContext.Activity.HasPrimaryClosed) return ActivityExecutionStatus.Closed; return nextActivityExecutor.Cancel(activity, executionContext); } public override ActivityExecutionStatus HandleFault(Activity activity, ActivityExecutionContext executionContext, Exception exception) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (exception == null) throw new ArgumentNullException("exception"); // If primary activity is Closed, then return, these filters might have acquired locks // on to the primary activity, and in that case even if the activity has closed itself // it might get HandleFault signal. So we don't want activity to get HandleFault signal, when it // already has declared itself Closed. ActivityExecutor nextActivityExecutor = NextActivityExecutorInChain(executionContext.Activity); if (!(nextActivityExecutor is ActivityExecutionFilter) && executionContext.Activity.HasPrimaryClosed) return ActivityExecutionStatus.Closed; return nextActivityExecutor.HandleFault(activity, executionContext, exception); } public override ActivityExecutionStatus Compensate(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); return NextActivityExecutorInChain(executionContext.Activity).Compensate(activity, executionContext); } #endregion #region Helper Methods protected ActivityExecutor NextActivityExecutorInChain(Activity activity) { if (activity == null) throw new ArgumentNullException("activity"); ActivityExecutor nextActivityExecutor = null; IList activityExecutors = ActivityExecutors.GetActivityExecutors(activity); int thisIndex = activityExecutors.IndexOf(this); if (thisIndex < activityExecutors.Count - 1) nextActivityExecutor = (ActivityExecutor)activityExecutors[thisIndex + 1]; return nextActivityExecutor; } protected ISupportWorkflowChanges NextDynamicChangeExecutorInChain(Activity activity) { return NextActivityExecutorInChain(activity) as ISupportWorkflowChanges; } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel { using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; internal abstract class ActivityExecutionFilter : ActivityExecutor, ISupportWorkflowChanges { #region ISupportWorkflowChanges Members public virtual void OnActivityAdded(ActivityExecutionContext executionContext, Activity addedActivity) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (addedActivity == null) throw new ArgumentNullException("addedActivity"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnActivityAdded(executionContext, addedActivity); } public virtual void OnActivityRemoved(ActivityExecutionContext executionContext, Activity removedActivity) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (removedActivity == null) throw new ArgumentNullException("removedActivity"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnActivityRemoved(executionContext, removedActivity); } public virtual void OnWorkflowChangesCompleted(ActivityExecutionContext executionContext) { if (executionContext == null) throw new ArgumentNullException("executionContext"); NextDynamicChangeExecutorInChain(executionContext.Activity).OnWorkflowChangesCompleted(executionContext); } #endregion ISupportWorkflowChanges #region Execute, Cancel, Compensate and HandleFault public override ActivityExecutionStatus Execute(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); return NextActivityExecutorInChain(executionContext.Activity).Execute(activity, executionContext); } public override ActivityExecutionStatus Cancel(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); // If primary activity is Closed, then return, these filters might have acquired locks // on to the primary activity, and in that case even if the activity has closed itself // it might get Cancel signal. So we don't want activity to get Cancel signal, when it // already has declared itself Closed. ActivityExecutor nextActivityExecutor = NextActivityExecutorInChain(executionContext.Activity); if (!(nextActivityExecutor is ActivityExecutionFilter) && executionContext.Activity.HasPrimaryClosed) return ActivityExecutionStatus.Closed; return nextActivityExecutor.Cancel(activity, executionContext); } public override ActivityExecutionStatus HandleFault(Activity activity, ActivityExecutionContext executionContext, Exception exception) { if (executionContext == null) throw new ArgumentNullException("executionContext"); if (exception == null) throw new ArgumentNullException("exception"); // If primary activity is Closed, then return, these filters might have acquired locks // on to the primary activity, and in that case even if the activity has closed itself // it might get HandleFault signal. So we don't want activity to get HandleFault signal, when it // already has declared itself Closed. ActivityExecutor nextActivityExecutor = NextActivityExecutorInChain(executionContext.Activity); if (!(nextActivityExecutor is ActivityExecutionFilter) && executionContext.Activity.HasPrimaryClosed) return ActivityExecutionStatus.Closed; return nextActivityExecutor.HandleFault(activity, executionContext, exception); } public override ActivityExecutionStatus Compensate(Activity activity, ActivityExecutionContext executionContext) { if (activity == null) throw new ArgumentNullException("activity"); if (executionContext == null) throw new ArgumentNullException("executionContext"); return NextActivityExecutorInChain(executionContext.Activity).Compensate(activity, executionContext); } #endregion #region Helper Methods protected ActivityExecutor NextActivityExecutorInChain(Activity activity) { if (activity == null) throw new ArgumentNullException("activity"); ActivityExecutor nextActivityExecutor = null; IList activityExecutors = ActivityExecutors.GetActivityExecutors(activity); int thisIndex = activityExecutors.IndexOf(this); if (thisIndex < activityExecutors.Count - 1) nextActivityExecutor = (ActivityExecutor)activityExecutors[thisIndex + 1]; return nextActivityExecutor; } protected ISupportWorkflowChanges NextDynamicChangeExecutorInChain(Activity activity) { return NextActivityExecutorInChain(activity) as ISupportWorkflowChanges; } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Vector3DAnimationUsingKeyFrames.cs
- ConfigurationValues.cs
- LinqExpressionNormalizer.cs
- DynamicDocumentPaginator.cs
- RetrieveVirtualItemEventArgs.cs
- IntPtr.cs
- Dispatcher.cs
- SqlCachedBuffer.cs
- HandlerFactoryCache.cs
- Stylus.cs
- RemotingSurrogateSelector.cs
- ResXBuildProvider.cs
- WindowsImpersonationContext.cs
- MSHTMLHostUtil.cs
- CollectionViewGroupRoot.cs
- TriState.cs
- _SingleItemRequestCache.cs
- ExternalFile.cs
- DataMemberAttribute.cs
- FragmentQueryKB.cs
- PassportAuthentication.cs
- SpeechRecognitionEngine.cs
- OleDbInfoMessageEvent.cs
- OdbcConnectionString.cs
- DataListItemCollection.cs
- IisTraceListener.cs
- ScriptControl.cs
- PropertySegmentSerializationProvider.cs
- LocalServiceSecuritySettingsElement.cs
- DataKey.cs
- MgmtConfigurationRecord.cs
- MailMessageEventArgs.cs
- XPathException.cs
- HandledEventArgs.cs
- SourceFileInfo.cs
- WmlMobileTextWriter.cs
- GeneralTransform3DTo2D.cs
- ControlEvent.cs
- BindingOperations.cs
- SettingsPropertyValue.cs
- OperatorExpressions.cs
- RelationshipDetailsRow.cs
- TypeGeneratedEventArgs.cs
- RolePrincipal.cs
- SmtpNetworkElement.cs
- MetaModel.cs
- Transform.cs
- EntityType.cs
- DefaultValueAttribute.cs
- BindingSourceDesigner.cs
- SemaphoreSecurity.cs
- QueryCreatedEventArgs.cs
- DataSetViewSchema.cs
- SoapRpcMethodAttribute.cs
- BeginCreateSecurityTokenRequest.cs
- RangeValidator.cs
- ContainerParagraph.cs
- SystemIPGlobalProperties.cs
- TextEffect.cs
- ButtonBaseAdapter.cs
- ReadOnlyHierarchicalDataSource.cs
- WinInetCache.cs
- ToolboxItem.cs
- HtmlInputButton.cs
- Mutex.cs
- ValueTypeFixupInfo.cs
- glyphs.cs
- RoleManagerModule.cs
- MemoryFailPoint.cs
- ReadOnlyDictionary.cs
- ApplyTemplatesAction.cs
- EntityDataSourceDesigner.cs
- RouteUrlExpressionBuilder.cs
- Clause.cs
- ListParaClient.cs
- DataService.cs
- SimpleMailWebEventProvider.cs
- FragmentQueryKB.cs
- TextEndOfLine.cs
- SqlRetyper.cs
- _NegoStream.cs
- AsymmetricKeyExchangeDeformatter.cs
- TraceHandlerErrorFormatter.cs
- RelatedImageListAttribute.cs
- HostingEnvironmentException.cs
- RegexReplacement.cs
- MostlySingletonList.cs
- CommunicationException.cs
- RegionData.cs
- TraceSection.cs
- SemanticBasicElement.cs
- MissingManifestResourceException.cs
- Internal.cs
- LinkedList.cs
- Crypto.cs
- DataGrid.cs
- BrowserCapabilitiesCompiler.cs
- SafeRightsManagementQueryHandle.cs
- StatusBar.cs
- TextContainerHelper.cs