NativeActivity Class

.NET Framework (current version)
 

Abstract base class for custom activities that implement execution logic using the M:System.Activities.NativeActivity.Execute(System.Activities.ActivityExecutionContext) method, which has full access to the runtime’s features.

Namespace:   System.Activities
Assembly:  System.Activities (in System.Activities.dll)

System.Object
  System.Activities.Activity
    System.Activities.NativeActivity
      System.Activities.Statements.CancellationScope
      System.Activities.Statements.Compensate
      System.Activities.Statements.Confirm
      System.Activities.Statements.Delay
      System.Activities.Statements.DeleteBookmarkScope
      System.Activities.Statements.DoWhile
      System.Activities.Statements.Flowchart
      System.Activities.Statements.ForEach<T>
      System.Activities.Statements.HandleScope<THandle>
      System.Activities.Statements.If
      System.Activities.Statements.Interop
      System.Activities.Statements.InvokeAction
      System.Activities.Statements.InvokeAction<T>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
      System.Activities.Statements.InvokeAction<T1, T2>
      System.Activities.Statements.InvokeAction<T1, T2, T3>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8>
      System.Activities.Statements.InvokeAction<T1, T2, T3, T4, T5, T6, T7, T8, T9>
      System.Activities.Statements.InvokeDelegate
      System.Activities.Statements.NoPersistScope
      System.Activities.Statements.Parallel
      System.Activities.Statements.ParallelForEach<T>
      System.Activities.Statements.Persist
      System.Activities.Statements.Pick
      System.Activities.Statements.Rethrow
      System.Activities.Statements.Sequence
      System.Activities.Statements.StateMachine
      System.Activities.Statements.Switch<T>
      System.Activities.Statements.TerminateWorkflow
      System.Activities.Statements.TransactionScope
      System.Activities.Statements.TryCatch
      System.Activities.Statements.While
      System.Activities.Validation.AddValidationError
      System.Activities.Validation.AssertValidation
      System.Activities.Validation.Constraint
      System.ServiceModel.Activities.CorrelationScope
      System.ServiceModel.Activities.InitializeCorrelation
      System.ServiceModel.Activities.TransactedReceiveScope

public abstract class NativeActivity : Activity

NameDescription
System_CAPS_protmethodNativeActivity()

When implemented in a derived class, creates a new instance of the derived class.

NameDescription
System_CAPS_protpropertyCacheId

Gets the identifier of the cache that is unique within the scope of the workflow definition.(Inherited from Activity.)

System_CAPS_protpropertyCanInduceIdle

Gets or sets a value that indicates whether the activity can cause the workflow to become idle.

System_CAPS_protpropertyConstraints

Gets a collection of Constraint activities that can be configured to provide validation for the Activity.(Inherited from Activity.)

System_CAPS_pubpropertyDisplayName

Gets or sets an optional friendly name that is used for debugging, validation, exception handling, and tracking.(Inherited from Activity.)

System_CAPS_pubpropertyId

Gets an identifier that is unique in the scope of the workflow definition.(Inherited from Activity.)

System_CAPS_protpropertyImplementation

The execution logic of the activity.(Overrides Activity.Implementation.)

System_CAPS_protpropertyImplementationVersion

Gets or sets the implementation version of the activity.(Overrides Activity.ImplementationVersion.)

NameDescription
System_CAPS_protmethodAbort(NativeActivityAbortContext)

When implemented in a derived class, takes actions in response to the activity being aborted.

System_CAPS_protmethodCacheMetadata(ActivityMetadata)

Not implemented. Use the CacheMetadata method instead.(Overrides Activity.CacheMetadata(ActivityMetadata).)

System_CAPS_protmethodCacheMetadata(NativeActivityMetadata)

Creates and validates a description of the activity’s arguments, variables, child activities, and activity delegates.

System_CAPS_protmethodCancel(NativeActivityContext)

When implemented in a derived class, runs logic to cause graceful early completion of the activity.

System_CAPS_pubmethodEquals(Object)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodExecute(NativeActivityContext)

When implemented in a derived class, runs the activity’s execution logic.

System_CAPS_protmethodFinalize()

Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_protmethodOnCreateDynamicUpdateMap(NativeActivityUpdateMapMetadata, Activity)

Raises an event when creating a map for the dynamic update.

System_CAPS_protmethodOnCreateDynamicUpdateMap(UpdateMapMetadata, Activity)

Raises an event when creating a map for the dynamic update.(Overrides Activity.OnCreateDynamicUpdateMap(UpdateMapMetadata, Activity).)

System_CAPS_pubmethodShouldSerializeDisplayName()

Indicates whether the DisplayName property should be serialized.(Inherited from Activity.)

System_CAPS_pubmethodToString()

Returns a String that contains the Id and DisplayName of the Activity.(Inherited from Activity.)

System_CAPS_protmethodUpdateInstance(NativeActivityUpdateContext)

Updates the instance of NativeActivity.

The following code sample demonstrates creating a class that inherits from NativeActivity<TResult>. This example is from the Custom Composite using Native Activity sample.

public sealed class MySequence : NativeActivity
{
    Collection<Activity> children;
    Collection<Variable> variables;
    Variable<int> currentIndex;
    CompletionCallback onChildComplete;

    public MySequence()
        : base()
    {
        this.children = new Collection<Activity>();
        this.variables = new Collection<Variable>();
        this.currentIndex = new Variable<int>();
    }

    public Collection<Activity> Activities
    {
        get
        {
            return this.children;
        }
    }
    public Collection<Variable> Variables
    {
        get
        {
            return this.variables;
        }
    }
    protected override void CacheMetadata(NativeActivityMetadata metadata)
    {
        //call base.CacheMetadata to add the Activities and Variables to this activity's metadata
        base.CacheMetadata(metadata);
        //add the private implementation variable: currentIndex 
        metadata.AddImplementationVariable(this.currentIndex);
    }                   

    protected override void Execute(NativeActivityContext context)
    {
        InternalExecute(context, null);
    }
    void InternalExecute(NativeActivityContext context, ActivityInstance instance)
    {
        //grab the index of the current Activity
        int currentActivityIndex = this.currentIndex.Get(context);
        if (currentActivityIndex == Activities.Count)
        {
            //if the currentActivityIndex is equal to the count of MySequence's Activities
            //MySequence is complete
            return;
        }

        if (this.onChildComplete == null)
        {
            //on completion of the current child, have the runtime call back on this method
            this.onChildComplete = new CompletionCallback(InternalExecute);
        }
        //grab the next Activity in MySequence.Activities and schedule it
        Activity nextChild = Activities[currentActivityIndex];
        context.ScheduleActivity(nextChild, this.onChildComplete);

        //increment the currentIndex
        this.currentIndex.Set(context, ++currentActivityIndex);
    }
}

.NET Framework
Available since 4.0

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: