Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WorkflowServiceHostFactory.cs
- ArrangedElement.cs
- ProcessModuleCollection.cs
- XmlSchemaValidationException.cs
- DocumentPageTextView.cs
- AdornerDecorator.cs
- RootBuilder.cs
- Inline.cs
- ValueSerializerAttribute.cs
- SystemIcmpV6Statistics.cs
- ErrorStyle.cs
- CapabilitiesPattern.cs
- WebFaultClientMessageInspector.cs
- SQLSingleStorage.cs
- OdbcDataAdapter.cs
- StrongNameUtility.cs
- RootProfilePropertySettingsCollection.cs
- KoreanLunisolarCalendar.cs
- GPRECT.cs
- OleTxTransaction.cs
- PeerObject.cs
- Animatable.cs
- Padding.cs
- EasingQuaternionKeyFrame.cs
- AddIn.cs
- WebPartConnectionsConnectVerb.cs
- UniqueCodeIdentifierScope.cs
- RequestSecurityToken.cs
- AtlasWeb.Designer.cs
- DataGridViewImageColumn.cs
- DrawingCollection.cs
- TextSpan.cs
- MDIWindowDialog.cs
- Accessible.cs
- DeflateStream.cs
- OrderingInfo.cs
- Utilities.cs
- UniformGrid.cs
- Compilation.cs
- HandlerMappingMemo.cs
- NetTcpBindingCollectionElement.cs
- DefaultSerializationProviderAttribute.cs
- RegexStringValidatorAttribute.cs
- ResourceReferenceExpression.cs
- CompensationExtension.cs
- SingleKeyFrameCollection.cs
- SqlDataSourceCommandEventArgs.cs
- MultiBindingExpression.cs
- Pkcs7Signer.cs
- RewritingValidator.cs
- DataListItemEventArgs.cs
- Pens.cs
- SafeFileMapViewHandle.cs
- Win32NamedPipes.cs
- Rect3DConverter.cs
- CodeFieldReferenceExpression.cs
- DurableEnlistmentState.cs
- Trace.cs
- TypeAccessException.cs
- WindowsNonControl.cs
- CultureInfoConverter.cs
- IPHostEntry.cs
- MouseActionValueSerializer.cs
- InputLangChangeRequestEvent.cs
- AccessedThroughPropertyAttribute.cs
- BamlResourceContent.cs
- CompilerGeneratedAttribute.cs
- RelationshipConstraintValidator.cs
- ObjectDataSourceEventArgs.cs
- Slider.cs
- SQLRoleProvider.cs
- RoleManagerEventArgs.cs
- EdmConstants.cs
- IPipelineRuntime.cs
- IgnorePropertiesAttribute.cs
- WindowsIdentity.cs
- ResourceDefaultValueAttribute.cs
- filewebresponse.cs
- BaseResourcesBuildProvider.cs
- InternalConfigEventArgs.cs
- ScriptingJsonSerializationSection.cs
- ColorContextHelper.cs
- WebPartConnectionsConfigureVerb.cs
- StoreItemCollection.Loader.cs
- GuidTagList.cs
- OdbcErrorCollection.cs
- ChannelCacheSettings.cs
- XPathScanner.cs
- AllMembershipCondition.cs
- XmlValidatingReaderImpl.cs
- QilCloneVisitor.cs
- DrawItemEvent.cs
- PropertyTab.cs
- baseaxisquery.cs
- DBPropSet.cs
- ActivityDesignerResources.cs
- DisplayInformation.cs
- XmlSchemaValidator.cs
- DelegateHelpers.cs
- AnnotationAdorner.cs