Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

StateMachineWorkflowActivity Class

Serves as the root container for state machine workflows. Contains event-driven activities and states.

Namespace:  System.Workflow.Activities
Assembly:  System.Workflow.Activities (in System.Workflow.Activities.dll)
[<ActivityValidatorAttribute(typeof(StateActivityValidator))>]
[<ComVisibleAttribute(false)>]
[<ToolboxBitmapAttribute(typeof(StateMachineWorkflowActivity), "Resources.StateMachineWorkflowActivity.png")>]
type StateMachineWorkflowActivity =  
    class
        inherit StateActivity
    end

The StateMachineWorkflowActivity type exposes the following members.

  NameDescription
Public methodStateMachineWorkflowActivity()Initializes a new instance of the StateMachineWorkflowActivity class.
Public methodStateMachineWorkflowActivity(String)Initializes a new instance of the StateMachineWorkflowActivity class using the name of the activity.
Top
  NameDescription
Public propertyActivitiesGets the object representing the collection, ActivityCollection, of all child activities. (Inherited from CompositeActivity.)
Protected propertyCanModifyActivitiesGets or sets a value which controls whether the individual activities within Activities can be modified. (Inherited from CompositeActivity.)
Public propertyCompletedStateNameGets or sets the end StateActivity of the workflow.
Public propertyCurrentStateNameGets the name of the currently executing StateActivity.
Public propertyDescriptionGets or sets the user-defined description of the Activity. (Inherited from Activity.)
Protected propertyDesignModeGets the value that indicates whether this instance is in design or run-time mode. (Inherited from DependencyObject.)
Public propertyDynamicUpdateConditionGets or sets an ActivityCondition that determines whether dynamic updates can be made in the workflow, when overridden in a derived class.
Public propertyEnabledGets or sets a value that indicates whether this instance is enabled for execution and validation. (Inherited from Activity.)
Public propertyEnabledActivitiesGets the read-only collection that represents the subset of Activities that are enabled. (Inherited from CompositeActivity.)
Public propertyExecutionResultGets the ActivityExecutionResult of the last attempt to run this instance. (Inherited from Activity.)
Public propertyExecutionStatusGets the current ActivityExecutionStatus of this instance. (Inherited from Activity.)
Public propertyInitialStateNameGets or sets the StateActivity in which the StateMachineWorkflowActivity is when an instance of the state machine is created.
Public propertyIsDynamicActivityGets information about whether the activity is executing within the default ActivityExecutionContext of the workflow instance. (Inherited from Activity.)
Public propertyNameGets or sets the name of this instance. This name must conform to the variable naming convention of the programming language that is being used in the Workflow project. (Inherited from Activity.)
Public propertyParentGets the CompositeActivity that contains this Activity. (Inherited from Activity.)
Protected propertyParentDependencyObjectGets the parent DependencyObject in the DependencyObject graph. (Inherited from DependencyObject.)
Public propertyPreviousStateNameGets the name of the previously executed StateActivity.
Public propertyQualifiedNameGets the qualified name of the activity. Qualified activity names are always unique in a workflow instance. (Inherited from Activity.)
Public propertySiteGets or sets a reference to the Site component of the DependencyObject. (Inherited from DependencyObject.)
Public propertyUserDataGets an IDictionary that associates custom data with this class instance. (Inherited from DependencyObject.)
Protected propertyWorkflowInstanceIdGets the Guid associated with the instance. (Inherited from Activity.)
Top
  NameDescription
Public methodAddHandlerAdds a handler for an event of a DependencyObject. (Inherited from DependencyObject.)
Protected methodApplyWorkflowChangesApplies the WorkflowChanges manifest in the parameter to this instance. (Inherited from CompositeActivity.)
Protected methodCancelCancels the execution of the StateActivity. (Inherited from StateActivity.)
Public methodCloneCreates a deep copy of the Activity. (Inherited from Activity.)
Public methodDispose()Releases all the resources used by the DependencyObject. (Inherited from DependencyObject.)
Protected methodDispose(Boolean)Calls Dispose on this instance, and optionally calls Dispose on all child activities of this instance. (Inherited from CompositeActivity.)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodExecuteExecutes the StateActivity. (Inherited from StateActivity.)
Protected methodFinalizeProvided as an override to Object.Finalize to clean up any unmanaged resources deterministically. (Inherited from DependencyObject.)
Public methodGetActivityByName(String)Returns the instance of the Activity whose name is requested from the set of all activities running under the root activity of this instance, which is within the workflow. (Inherited from Activity.)
Public methodGetActivityByName(String, Boolean)Returns the instance of the Activity whose name is requested from the set of all activities under the root the Activity of this instance if the second parameter is false and under the current Activity if the second parameter is true. (Inherited from Activity.)
Public methodGetBindingProvides access to the ActivityBind associated with the specific DependencyProperty. (Inherited from DependencyObject.)
Protected methodGetBoundValueRetrieves the Object that is the subject of an ActivityBind. (Inherited from DependencyObject.)
Protected methodGetDynamicActivitiesReturns an array that contains all of the currently executing instances of the specified activity. (Inherited from CompositeActivity.)
Public methodGetDynamicActivityGets the executing instance of the Activity that corresponds to the specified child activity name. (Inherited from StateActivity.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Protected methodGetInvocationList(T)Gets an array that contains the delegates for the specified DependencyProperty. (Inherited from DependencyObject.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodGetValueProvides access to the value of the designated DependencyProperty. (Inherited from DependencyObject.)
Public methodGetValueBaseProvides access to the bound object of a DependencyProperty and bypasses the GetValue override. (Inherited from DependencyObject.)
Protected methodHandleFaultCalled when an exception is raised within the context of the execution of this instance. (Inherited from CompositeActivity.)
Protected methodInitializeInitializes the StateActivity using the service provider. (Inherited from StateActivity.)
Protected methodInitializePropertiesPerforms initialization on dependency properties when overridden in a derived class. (Inherited from DependencyObject.)
Protected methodInvoke(T)(EventHandler(T), T)Subscribes an EventHandler and invokes that delegate. (Inherited from Activity.)
Protected methodInvoke(T)(IActivityEventListener(T), T)Subscribes an IActivityEventListener(T) and invokes that delegate. (Inherited from Activity.)
Public methodIsBindingSetIndicates whether the value of a DependencyProperty is set as a binding. See SetBinding. (Inherited from DependencyObject.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodMetaEqualsDetermines whether the metaproperties of this DependencyObject equals the metaproperties of the parameterized DependencyObject. (Inherited from DependencyObject.)
Protected methodOnActivityChangeAddDetermines if the activity being added is an EventDrivenActivity and if so, verifies whether the newly added event driven needs to be subscribed. (Inherited from StateActivity.)
Protected methodOnActivityChangeRemoveCalled when an activity is removed. (Inherited from CompositeActivity.)
Protected methodOnActivityExecutionContextLoadCalled by the workflow runtime engine every time the ActivityExecutionContext for this activity is loaded. (Inherited from CompositeActivity.)
Protected methodOnActivityExecutionContextUnloadCalled by the workflow runtime engine every time the ActivityExecutionContext for this activity is unloaded. (Inherited from CompositeActivity.)
Protected methodOnClosedCalled by the workflow runtime engine as part of the activity's transition to the Closed state. (Inherited from StateActivity.)
Protected methodOnListChangedPerforms additional processing when the Activities property changes. (Inherited from CompositeActivity.)
Protected methodOnListChangingEvent that occurs before a change being made to the underlying Activities. (Inherited from CompositeActivity.)
Protected methodOnWorkflowChangesCompletedCalled after changes have been made to the collection Activities of this instance. (Inherited from CompositeActivity.)
Protected methodRaiseEventRaises an Event associated with the specified dependency property. (Inherited from Activity.)
Protected methodRaiseGenericEvent(T)Raises the event associated with the referenced DependencyProperty. (Inherited from Activity.)
Public methodRegisterForStatusChangeRegisters the specified DependencyProperty for the status change event. (Inherited from Activity.)
Public methodRemoveHandlerRemoves an EventHandler from an associated DependencyProperty. (Inherited from DependencyObject.)
Public methodRemovePropertyRemoves a DependencyProperty from the DependencyObject. (Inherited from DependencyObject.)
Public methodSave(Stream)Writes the Activity to a Stream for persistence. (Inherited from Activity.)
Public methodSave(Stream, IFormatter)Writes the Activity to a Stream for persistence using the custom IFormatter provided for serialization. (Inherited from Activity.)
Public methodSetBindingSets the ActivityBind for the specified DependencyProperty. (Inherited from DependencyObject.)
Protected methodSetBoundValueSets the value of the target ActivityBind. (Inherited from DependencyObject.)
Protected methodSetReadOnlyPropertyValueSets the value of a DependencyProperty, which is read-only. (Inherited from DependencyObject.)
Public methodSetValueSets the value of the DependencyProperty to the object. (Inherited from DependencyObject.)
Public methodSetValueBaseSets the value of the DependencyProperty to the specified Object, bypassing the SetValue. (Inherited from DependencyObject.)
Public methodToStringProvides a string that represents this instance. (Inherited from Activity.)
Protected methodTrackData(Object)Informs the run-time tracking infrastructure of pending tracking information. (Inherited from Activity.)
Protected methodTrackData(String, Object)Informs the run-time tracking infrastructure of pending tracking information. (Inherited from Activity.)
Protected methodUninitializeCalled by the workflow runtime engine when an activity transitions into the Closed state from the Initialized state. (Inherited from CompositeActivity.)
Public methodUnregisterForStatusChangeUn-registers the specified DependencyProperty for the status change event. (Inherited from Activity.)
Top
  NameDescription
Public eventCancelingOccurs when the activity execution is canceled. (Inherited from Activity.)
Public eventClosedOccurs when an Activity has completed execution. (Inherited from Activity.)
Public eventCompensatingOccurs when running a compensation method on the Activity. (Inherited from Activity.)
Public eventExecutingOccurs when the Activity is run. (Inherited from Activity.)
Public eventFaultingOccurs when an exception is raised during the running of the instance. (Inherited from Activity.)
Public eventStatusChangedOccurs when the ActivityExecutionStatus of a running Activity changes. (Inherited from Activity.)
Top
  NameDescription
Public fieldStatic memberCompletedStateNamePropertyRepresents the DependencyObject that targets the CompletedStateName property.
Public fieldStatic memberInitialStateNamePropertyRepresents the DependencyObject that targets the InitialStateName property.
Public fieldStatic memberSetStateQueueNameThe name of the WorkflowQueue that is used to change the state of a StateMachineWorkflowActivity. This field is constant.
Top
  NameDescription
Explicit interface implemetationPrivate eventIComponent.DisposedRepresents the method that handles the Disposed event of a component. (Inherited from DependencyObject.)
Top

The StateMachineWorkflowActivity is an activity container used to create workflows that follow a state machine model.

The StateMachineWorkflowActivity is a CompositeActivity, which means the StateMachineWorkflowActivity can contain other activities. The StateMachineWorkflowActivity and the EventDrivenActivity activities are the only permitted child activities of the StateMachineWorkflowActivity. EventDrivenActivity activities are permitted because the root activity itself behaves like a state. Therefore, you can have EventDrivenActivity activities at the root level that are used by all the State activities in the StateMachineWorkflowActivity. EventDrivenActivity activities at this level provide a global mechanism for processing workflow events and automate state transitions. StateActivity activities provide a mechanism to define the various stages in the model.

The StateMachineWorkflowActivity has properties that are required for the execution of the state machine workflow. Most notably, the StateMachineWorkflowActivity has two properties that are important: InitialStateNameProperty and CompletedStateNameProperty.

The InitialStateNameProperty of the state machine is the state in which the state machine is when an instance of the state machine is created. The InitialStateNameProperty property is mandatory and must be provided when a StateMachineWorkflowActivity is created. The InitialStateNameProperty of the state machine is like any other state activity that is contained within the state machine. The state activity can be a direct child of the StateMachineWorkflowActivity root activity and a StateMachineWorkflowActivity can have only one InitialStateNameProperty.

The CompletedStateNameProperty of the StateMachineWorkflowActivity is a StateActivity activity that is designated as the end state of the StateMachineWorkflowActivity. When a transition is made to the CompletedStateNameProperty, the workflow execution is completed. The CompletedStateNameProperty is not mandatory. This means that you can have a StateMachineWorkflowActivity that is not completed. This does not mean that the state machine workflow is always active in memory. The StateMachineWorkflowActivity might be unloaded as it waits for an event.

StateMachineWorkflowActivity activities that never complete are especially useful in processing long running business transactions, as in the case of a purchase order received by a supplier. The fact that the purchase order was fulfilled does not mean that the purchase order process is over. The goods that are part of the purchase order might be returned or the purchase order might be amended and have additional items added to it after the fulfillment. Sometimes there might be a requirement to keep the purchase order records for an extended period of time for legal or other purposes. The fact that a workflow does not finish just means that the workflow remains in an unloaded state. There may be a case for retiring the workflows, which means that after a set period of time the workflow instance may be forced to shut down.

The following code example shows how to create a new instance of the StateMachineWorkflowActivity class and use it to implement a basic state machine to transition between three states. This code example is part of the SimpleStateMachineWorkflow SDK sample from the StateMachineWorkflow.cs file. For more information, seeSimple State Machine.

No code example is currently available or this language may not be supported.

.NET Framework

Supported in: 4, 3.5, 3.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.