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
- CustomLineCap.cs
- AlignmentYValidation.cs
- CryptoApi.cs
- XmlWrappingWriter.cs
- storepermission.cs
- GatewayDefinition.cs
- X509CertificateCollection.cs
- ExternalCalls.cs
- ExpressionQuoter.cs
- LinqDataSourceDeleteEventArgs.cs
- FrameworkElementFactory.cs
- SynchronizedDisposablePool.cs
- PreviewKeyDownEventArgs.cs
- UnsafeMethods.cs
- ToolStripDropTargetManager.cs
- WindowsTreeView.cs
- StructuredTypeInfo.cs
- HtmlButton.cs
- QuaternionRotation3D.cs
- OleDbEnumerator.cs
- XmlText.cs
- HttpClientCertificate.cs
- SplineKeyFrames.cs
- UIElement.cs
- DeploymentExceptionMapper.cs
- RequestStatusBarUpdateEventArgs.cs
- IncrementalReadDecoders.cs
- Operand.cs
- BooleanExpr.cs
- XmlReflectionMember.cs
- EnumConverter.cs
- LowerCaseStringConverter.cs
- OAVariantLib.cs
- TextAutomationPeer.cs
- EntitySetDataBindingList.cs
- PermissionListSet.cs
- RootDesignerSerializerAttribute.cs
- GlyphInfoList.cs
- SystemInformation.cs
- ThrowHelper.cs
- QilNode.cs
- TemplatedWizardStep.cs
- GridSplitter.cs
- IMembershipProvider.cs
- XmlSchemaObjectTable.cs
- XslCompiledTransform.cs
- GACIdentityPermission.cs
- AvtEvent.cs
- PropertyStore.cs
- TableLayoutPanel.cs
- SyntaxCheck.cs
- RegisterResponseInfo.cs
- StrongNameIdentityPermission.cs
- SiteMapNodeItem.cs
- StreamWithDictionary.cs
- TagPrefixAttribute.cs
- SAPIEngineTypes.cs
- CodeSnippetTypeMember.cs
- URL.cs
- Bits.cs
- ApplicationSettingsBase.cs
- HandlerFactoryCache.cs
- TextMetrics.cs
- SoapFormatter.cs
- StackBuilderSink.cs
- ProgramPublisher.cs
- VectorValueSerializer.cs
- PreparingEnlistment.cs
- AppDomainUnloadedException.cs
- SectionInput.cs
- XmlIterators.cs
- WindowsContainer.cs
- ResourceManager.cs
- TypeGenericEnumerableViewSchema.cs
- VScrollProperties.cs
- EventSinkActivity.cs
- CompositeCollection.cs
- SmtpSection.cs
- CalendarTable.cs
- Point3DCollection.cs
- EvidenceBase.cs
- BitmapEffectInputData.cs
- InitializationEventAttribute.cs
- FilterQueryOptionExpression.cs
- LeafCellTreeNode.cs
- ProvideValueServiceProvider.cs
- BitmapScalingModeValidation.cs
- Renderer.cs
- PeerTransportSecuritySettings.cs
- WorkflowDefinitionDispenser.cs
- ObjectItemConventionAssemblyLoader.cs
- XmlDataProvider.cs
- EntityDataSourceView.cs
- CounterCreationDataCollection.cs
- CachedFontFamily.cs
- AdornerLayer.cs
- LightweightEntityWrapper.cs
- EvidenceBase.cs
- CodeNamespaceImport.cs
- ViewStateModeByIdAttribute.cs