WorkflowApplication 类

定义

为工作流的单个实例提供宿主。

public ref class WorkflowApplication sealed : System::Activities::Hosting::WorkflowInstance
public sealed class WorkflowApplication : System.Activities.Hosting.WorkflowInstance
type WorkflowApplication = class
    inherit WorkflowInstance
Public NotInheritable Class WorkflowApplication
Inherits WorkflowInstance
继承
WorkflowApplication

示例

下面的示例使用 WorkflowApplication 承载一个工作流。 该示例使用指定的工作流定义构造 WorkflowApplication,处理所需的工作流生命周期事件,并通过调用 Run 来调用工作流。 完成工作流时,会向控制台显示以下输出。

Starting the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Idle.   
Ending the workflow.   
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Completed  
Workflow 593976e8-558d-4989-94d6-50a14b34fd7b Unloaded.  
Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Delay
         {
             Duration = TimeSpan.FromSeconds(5)
         },
         new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

// Create a WorkflowApplication instance.
WorkflowApplication wfApp = new WorkflowApplication(wf);

// Subscribe to any desired workflow lifecycle events.
wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Outputs can be retrieved from the Outputs dictionary,
        // keyed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e)
{
    // Display the exception that caused the workflow
    // to abort.
    Console.WriteLine("Workflow {0} Aborted.", e.InstanceId);
    Console.WriteLine("Exception: {0}\n{1}",
        e.Reason.GetType().FullName,
        e.Reason.Message);
};

wfApp.Idle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Perform any processing that should occur
    // when a workflow goes idle. If the workflow can persist,
    // both Idle and PersistableIdle are called in that order.
    Console.WriteLine("Workflow {0} Idle.", e.InstanceId);
};

wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e)
{
    // Instruct the runtime to persist and unload the workflow
    return PersistableIdleAction.Unload;
};

wfApp.Unloaded = delegate(WorkflowApplicationEventArgs e)
{
    Console.WriteLine("Workflow {0} Unloaded.", e.InstanceId);
};

wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e)
{
    // Display the unhandled exception.
    Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}",
        e.InstanceId, e.UnhandledException.Message);

    Console.WriteLine("ExceptionSource: {0} - {1}",
        e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId);

    // Instruct the runtime to terminate the workflow.
    // Other choices are Abort and Cancel
    return UnhandledExceptionAction.Terminate;
};

// Run the workflow.
wfApp.Run();

注解

WorkflowApplication 类为单个工作流实例提供宿主。 它是由工作流运行时管理的实际工作流实例的代理。 WorkflowApplication 的用户可以通过调用 WorkflowApplication 对象中的适当方法,指示工作流运行时在工作流实例上执行操作。 如果请求的操作无效,则引发异常。

使用 WorkflowApplication,可以执行以下任务:

  1. 创建新的工作流实例,或从实例存储区中加载工作流实例。

  2. 提供扩展以供工作流实例内的活动使用。

  3. 控制工作流实例的执行。

  4. 恢复由工作流实例内的活动创建的书签。

  5. 保留或卸载工作流实例。

  6. 接收工作流实例生命周期事件通知。

构造函数

WorkflowApplication(Activity)

使用指定的工作流定义创建 WorkflowApplication 类的新实例。

WorkflowApplication(Activity, IDictionary<String,Object>)

创建 WorkflowApplication 类的新实例,该实例使用指定的工作流定义和自变量值。

WorkflowApplication(Activity, IDictionary<String,Object>, WorkflowIdentity)

使用指定的工作流定义、参数值以及定义标识创建 WorkflowApplication 类的新实例。

WorkflowApplication(Activity, WorkflowIdentity)

使用指定的工作流定义和定义标识创建 WorkflowApplication 类的新实例。

属性

Aborted

获取或设置中止工作流实例时调用的 Action<T>

Completed

获取或设置工作流实例完成时调用的 Action<T>

Controller

获取此 WorkflowInstance.WorkflowInstanceControlWorkflowInstance 实例。

(继承自 WorkflowInstance)
DefinitionIdentity

获取或设置 WorkflowInstance 的定义标识。

(继承自 WorkflowInstance)
Extensions

获取当前工作流实例的扩展的集合。

HostEnvironment

获取或设置工作流实例的自变量和变量的根环境。

(继承自 WorkflowInstance)
Id

获取当前工作流应用程序实例的 128 位 GUID 标识符。

Idle

获取或设置当前工作流实例进入空闲状态时调用的 Action<T>

InstanceStore

获取或设置一个对象,该对象提供对工作流应用程序的当前实例保留状态的访问。

IsReadOnly

获取一个值,该值指示工作流实例是否已初始化。

(继承自 WorkflowInstance)
OnUnhandledException

获取或设置当前工作流实例遇到未处理的异常时调用的 Func<T,TResult>

PersistableIdle

获取或设置当前工作流实例处于空闲状态并可被保留时调用的代理。

SupportsInstanceKeys

获取一个值,该值指示宿主是否支持 InstanceKeys 与运行时实例的关联。

(继承自 WorkflowInstance)
SynchronizationContext

获取或设置用于调度工作流实例的 SynchronizationContext

(继承自 WorkflowInstance)
Unloaded

获取或设置卸载当前工作流时调用的 Action<T>

WorkflowDefinition

获取工作流实例的工作流定义。

(继承自 WorkflowInstance)

方法

Abort()

通知工作流运行时应中止此工作流实例。

Abort(String)

通知工作流运行时由于特定原因应中止此工作流实例。

AddInitialInstanceValues(IDictionary<XName,Object>)

指定与新实例的首个保留内容一起包含的实例元数据值。

BeginCancel(AsyncCallback, Object)

使用指定的 AsyncCallback 和用户提供的状态以异步方式取消工作流实例。

BeginCancel(TimeSpan, AsyncCallback, Object)

使用指定的超时间隔、AsyncCallback 和用户提供的状态以异步方式取消工作流实例。

BeginCreateDefaultInstanceOwner(InstanceStore, WorkflowIdentity, WorkflowIdentityFilter, AsyncCallback, Object)

异步使用带指定实例存储、定义标识、标识筛选器、回拨和状态的 IAsyncResult 异步设计模型创建默认实例所有者。

BeginCreateDefaultInstanceOwner(InstanceStore, WorkflowIdentity, WorkflowIdentityFilter, TimeSpan, AsyncCallback, Object)

异步使用带指定实例存储、定义标识、标识筛选器、超时间隔、回拨和状态的 IAsyncResult 异步设计模型创建默认实例所有者。

BeginDeleteDefaultInstanceOwner(InstanceStore, AsyncCallback, Object)

异步使用带指定实例存储区、回调和状态的 IAsyncResult 异步设计模型检索可运行的实例所有者。

BeginDeleteDefaultInstanceOwner(InstanceStore, TimeSpan, AsyncCallback, Object)

异步使用带指定实例存储区、超时间隔、回调和状态的 IAsyncResult 异步设计模型删除默认实例的所有者。

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

由工作流运行时调用,用于开始将挂起的跟踪记录以异步方式发送给跟踪参与者。

(继承自 WorkflowInstance)
BeginGetInstance(Guid, InstanceStore, AsyncCallback, Object)

使用带指定的实例标识符、实例存储区、回调和状态的 IAsyncResult 异步设计模式异步检索实例所有者。

BeginGetInstance(Guid, InstanceStore, TimeSpan, AsyncCallback, Object)

使用带指定的实例标识符、实例存储区、超时间隔、回调和状态的 IAsyncResult 异步设计模式异步检索实例所有者。

BeginGetRunnableInstance(InstanceStore, AsyncCallback, Object)

异步使用带指定实例存储区、回调和状态的 IAsyncResult 异步设计模型检索可运行的实例所有者。

BeginGetRunnableInstance(InstanceStore, TimeSpan, AsyncCallback, Object)

异步使用带指定实例存储区、超时间隔、回调和状态的 IAsyncResult 异步设计模型检索可运行的实例所有者。

BeginLoad(Guid, AsyncCallback, Object)

使用指定的实例标识符、回调方法和用户提供的状态以异步方式从实例存储区中加载工作流。

BeginLoad(Guid, TimeSpan, AsyncCallback, Object)

使用指定的实例标识符、超时期限、回调方法和用户提供的状态以异步方式从实例存储区中加载工作流。

BeginLoad(WorkflowApplicationInstance, AsyncCallback, Object)

使用带指定实例、回调和状态的 IAsyncResult 异步设计模型从实例存储区中异步加载工作流。

BeginLoad(WorkflowApplicationInstance, DynamicUpdateMap, AsyncCallback, Object)

使用带指定实例、更新映射、回调和状态的 IAsyncResult 异步设计模型从实例存储区中异步加载工作流。

BeginLoad(WorkflowApplicationInstance, DynamicUpdateMap, TimeSpan, AsyncCallback, Object)

使用带指定实例、更新映射、超时间隔、回调和状态的 IAsyncResult 异步设计模型从实例存储区中异步加载工作流。

BeginLoad(WorkflowApplicationInstance, TimeSpan, AsyncCallback, Object)

使用带指定实例、超时间隔、回调和状态的 IAsyncResult 异步设计模型从实例存储区中异步加载工作流。

BeginLoadRunnableInstance(AsyncCallback, Object)

启动一项操作,从 InstanceStore 中加载可运行工作流实例。

BeginLoadRunnableInstance(TimeSpan, AsyncCallback, Object)

使用指定的超时间隔启动操作,以从 InstanceStore 加载可运行的工作流实例。

BeginPersist(AsyncCallback, Object)

使用指定的回调方法和用户提供的状态将工作流实例以异步方式保留到实例存储区中。

BeginPersist(TimeSpan, AsyncCallback, Object)

使用指定的超时间隔、回调方法和用户提供的状态将工作流实例以异步方式保留到实例存储区中。

BeginResumeBookmark(Bookmark, Object, AsyncCallback, Object)

使用指定的值、回调方法和状态启动操作以恢复书签。

BeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

使用指定的值、超时间隔、回调方法和状态启动操作以恢复书签。

BeginResumeBookmark(String, Object, AsyncCallback, Object)

使用指定的值、回调方法和状态启动异步操作以恢复具有指定名称的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

BeginResumeBookmark(String, Object, TimeSpan, AsyncCallback, Object)

使用指定的值、超时间隔、回调方法和状态启动异步操作以恢复具有指定名称的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

BeginRun(AsyncCallback, Object)

使用指定的回调方法和用户提供的状态以异步方式启动或恢复工作流实例。

BeginRun(TimeSpan, AsyncCallback, Object)

使用指定的超时间隔、回调方法和用户提供的状态以异步方式启动或恢复工作流实例。

BeginTerminate(Exception, AsyncCallback, Object)

使用指定的异常、回调方法和用户提供的状态以异步方式终止工作流实例。

BeginTerminate(Exception, TimeSpan, AsyncCallback, Object)

使用指定的异常、超时间隔、回调方法和用户提供的状态以异步方式终止工作流实例。

BeginTerminate(String, AsyncCallback, Object)

使用指定的错误消息、回调方法和用户提供的状态以异步方式终止工作流实例。

BeginTerminate(String, TimeSpan, AsyncCallback, Object)

使用指定的错误消息、超时间隔、回调方法和用户提供的状态以异步方式终止工作流实例。

BeginUnload(AsyncCallback, Object)

使用指定的回调方法和用户提供的状态以异步方式保留和释放工作流实例。

BeginUnload(TimeSpan, AsyncCallback, Object)

使用指定的超时间隔、回调方法和用户提供的状态以异步方式保留和释放工作流实例。

Cancel()

取消工作流实例。

Cancel(TimeSpan)

使用指定的超时间隔取消工作流实例。

CreateDefaultInstanceOwner(InstanceStore, WorkflowIdentity, WorkflowIdentityFilter)

使用指定实例存储、定义标识和标识筛选器和超时间隔,创建工作流的默认实例所有者。

CreateDefaultInstanceOwner(InstanceStore, WorkflowIdentity, WorkflowIdentityFilter, TimeSpan)

使用指定实例存储、定义标识和标识筛选器和超时间隔,创建工作流的默认实例所有者。

DeleteDefaultInstanceOwner(InstanceStore)

使用指定的实例存储区和检索工作流的可运行实例。

DeleteDefaultInstanceOwner(InstanceStore, TimeSpan)

使用指定的实例存储区和超时间隔检索工作流的可运行实例。

DisposeExtensions()

对实现 Dispose() 的所有扩展调用 IDisposable

(继承自 WorkflowInstance)
EndCancel(IAsyncResult)

等待挂起的异步取消操作完成。

EndCreateDefaultInstanceOwner(IAsyncResult)

等待完成对默认实例所有者的创建。

EndDeleteDefaultInstanceOwner(IAsyncResult)

等待完成对默认实例所有者的删除。

EndFlushTrackingRecords(IAsyncResult)

由工作流运行时调用,用于结束跟踪操作。

(继承自 WorkflowInstance)
EndGetInstance(IAsyncResult)

等待完成实例检索。

EndGetRunnableInstance(IAsyncResult)

等待异步检索可运行实例操作完成。

EndLoad(IAsyncResult)

等待挂起的异步加载操作完成。

EndLoadRunnableInstance(IAsyncResult)

等待异步加载可运行实例操作完成。

EndPersist(IAsyncResult)

等待挂起的异步保留操作完成。

EndResumeBookmark(IAsyncResult)

等待书签恢复操作完成。

EndRun(IAsyncResult)

等待挂起的异步运行操作完成。

EndTerminate(IAsyncResult)

等待挂起的异步终止操作完成。

EndUnload(IAsyncResult)

等待挂起的异步卸载操作完成。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
FlushTrackingRecords(TimeSpan)

由工作流运行时调用,用于将挂起的跟踪记录发送给跟踪参与者。

(继承自 WorkflowInstance)
GetBookmarks()

返回工作流实例的书签的集合。

GetBookmarks(TimeSpan)

使用指定的超时间隔返回工作流实例的书签的集合。

GetExtension<T>()

返回指定类型的扩展。

(继承自 WorkflowInstance)
GetExtensions<T>()

返回针对指定类型找到的所有扩展。

(继承自 WorkflowInstance)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetInstance(Guid, InstanceStore)

使用指定的实例标识符和实例存储区检索工作流实例。

GetInstance(Guid, InstanceStore, TimeSpan)

使用指定的实例标识符、实例存储区和超时间隔检索工作流实例。

GetRunnableInstance(InstanceStore)

使用指定的实例存储区检索工作流的可运行实例。

GetRunnableInstance(InstanceStore, TimeSpan)

使用指定的实例存储区和超时间隔检索工作流的可运行实例。

GetType()

获取当前实例的 Type

(继承自 Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

由主机调用,用于使用自变量值和执行属性初始化工作流实例。

(继承自 WorkflowInstance)
Initialize(Object)

由宿主调用,用于使用工作流运行时状态初始化工作流实例。

(继承自 WorkflowInstance)
Initialize(Object, DynamicUpdateMap)

由宿主调用,用于使用工作流运行时状态和更新映射初始化工作流实例。

(继承自 WorkflowInstance)
Load(Guid)

将指定的工作流实例从实例存储区加载到内存中。

Load(Guid, TimeSpan)

使用指定的超时间隔将指定的工作流实例从实例存储区加载到内存中。

Load(WorkflowApplicationInstance)

从带指定实例的实例存储区加载工作流实例。

Load(WorkflowApplicationInstance, DynamicUpdateMap)

从带指定实例和更新映射的实例存储区加载工作流实例。

Load(WorkflowApplicationInstance, DynamicUpdateMap, TimeSpan)

从带指定实例、更新映射和超时间隔的实例存储区加载工作流实例。

Load(WorkflowApplicationInstance, TimeSpan)

从带指定实例和超时间隔的实例存储区加载工作流实例。

LoadRunnableInstance()

InstanceStore 加载可运行的工作流实例。

LoadRunnableInstance(TimeSpan)

使用指定的超时间隔从 InstanceStore 加载可运行的工作流实例。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

由工作流运行时调用,用于通知宿主新的实例键应与此实例关联。

(继承自 WorkflowInstance)
OnBeginFlushTrackingRecords(AsyncCallback, Object)

异步调用,用于要求主机针对跟踪参与者刷新挂起的跟踪记录。

(继承自 WorkflowInstance)
OnBeginPersist(AsyncCallback, Object)

要求宿主保留工作流的异步调用。

(继承自 WorkflowInstance)
OnBeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

由工作流运行时调用,用于通知宿主恢复书签操作已开始。

(继承自 WorkflowInstance)
OnDisassociateKeys(ICollection<InstanceKey>)

由工作流运行时调用,用于通知宿主某些实例键集不应再与此实例关联。

(继承自 WorkflowInstance)
OnEndAssociateKeys(IAsyncResult)

由工作流运行时调用,用于通知宿主关联键操作已完成。

(继承自 WorkflowInstance)
OnEndFlushTrackingRecords(IAsyncResult)

由工作流运行时调用,用于在刷新跟踪记录操作完成时通知宿主。

(继承自 WorkflowInstance)
OnEndPersist(IAsyncResult)

由工作流运行时调用,用于通知宿主保留操作已完成。

(继承自 WorkflowInstance)
OnEndResumeBookmark(IAsyncResult)

由工作流运行时调用,用于通知宿主恢复书签操作已完成。

(继承自 WorkflowInstance)
OnNotifyPaused()

由工作流运行时调用,用于通知宿主工作流已从“正在运行”状态转换为“已暂停”状态。

(继承自 WorkflowInstance)
OnNotifyUnhandledException(Exception, Activity, String)

由工作流运行时调用,用于通知宿主工作流实例中发生了未经处理的异常。

(继承自 WorkflowInstance)
OnRequestAbort(Exception)

由工作流运行时调用,用于通知宿主已请求对工作流实例进行中止操作。

(继承自 WorkflowInstance)
Persist()

将工作流实例保留到实例存储区。

Persist(TimeSpan)

使用指定的超时间隔将工作流实例保留到实例存储区。

RegisterExtensionManager(WorkflowInstanceExtensionManager)

由主机调用,用于注册指定的扩展管理器、验证所有必需的扩展是否存在,以及初始化要使用的扩展的集合。

(继承自 WorkflowInstance)
ResumeBookmark(Bookmark, Object)

使用指定的值启动操作以恢复指定的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

ResumeBookmark(Bookmark, Object, TimeSpan)

使用指定的值和超时间隔启动操作以恢复指定的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

ResumeBookmark(String, Object)

使用指定的值启动操作以恢复具有指定名称的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

ResumeBookmark(String, Object, TimeSpan)

使用指定的值和超时间隔启动操作以恢复具有指定名称的书签。 要恢复的书签是此前由工作流实例内的活动创建的。

Run()

开始或恢复执行工作流实例。

Run(TimeSpan)

使用指定的超时间隔开始或恢复执行工作流实例。

Terminate(Exception)

使用指定的异常终止工作流实例。

Terminate(Exception, TimeSpan)

使用指定的异常和超时间隔终止工作流实例。

Terminate(String)

使用指定的错误消息终止工作流实例。

Terminate(String, TimeSpan)

使用指定的错误消息和超时间隔终止工作流实例。

ThrowIfReadOnly()

如果工作流实例已初始化,则引发 InvalidOperationException(由 IsReadOnly 确定)。

(继承自 WorkflowInstance)
ToString()

返回表示当前对象的字符串。

(继承自 Object)
Unload()

保留或卸载工作流实例。

Unload(TimeSpan)

使用指定的超时间隔保留和卸载工作流实例。

适用于