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. 會收到工作流程實例生命週期事件的通知。

建構函式

名稱 Description
WorkflowApplication(Activity, IDictionary<String,Object>, WorkflowIdentity)

建立一個新的類別實例 WorkflowApplication ,使用指定的工作流程定義值與參數值,以及定義身份。

WorkflowApplication(Activity, IDictionary<String,Object>)

建立一個新的類別實例 WorkflowApplication ,使用指定的工作流程定義和參數值。

WorkflowApplication(Activity, WorkflowIdentity)

建立一個包含指定工作流程定義與定義身份的新類別實例 WorkflowApplication

WorkflowApplication(Activity)

建立一個新的類別實例 WorkflowApplication ,並定義指定的工作流程。

屬性

名稱 Description
Aborted

當工作流程實例中止時,會被呼叫或設定 Action<T> that。

Completed

當工作流程實例完成時,會被呼叫或設定 Action<T> that。

Controller

這就有 WorkflowInstance.WorkflowInstanceControl 這個實例 WorkflowInstance

(繼承來源 WorkflowInstance)
DefinitionIdentity

取得或設定 的 WorkflowInstance定義恆等式。

(繼承來源 WorkflowInstance)
Extensions

取得目前工作流程實例的擴充套件集合。

HostEnvironment

取得或設定工作流程實例參數與變數的根環境。

(繼承來源 WorkflowInstance)
Id

取得目前工作流程應用程式實例的 128 位元 GUID 識別碼。

Idle

當目前工作流程實例進入閒置時,會被呼叫或設定 Action<T> that。

InstanceStore

取得或設定一個物件,提供存取目前工作流程實例的持久狀態。

IsReadOnly

會得到一個表示工作流程實例是否已被初始化的值。

(繼承來源 WorkflowInstance)
OnUnhandledException

當目前工作流程實例遇到未處理的例外時,會被呼叫或設定 Func<T,TResult> that。

PersistableIdle

取得或設定當目前工作流程實例閒置且可持久化時所呼叫的代理。

SupportsInstanceKeys

會獲得一個值,表示主機是否支援與執行時實例的關聯 InstanceKeys

(繼承來源 WorkflowInstance)
SynchronizationContext

取得或設定 用於 SynchronizationContext 排程工作流程實例。

(繼承來源 WorkflowInstance)
Unloaded

當目前工作流程卸載時,會被呼叫或設定 Action<T> that。

WorkflowDefinition

取得工作流程實例的工作流程定義。

(繼承來源 WorkflowInstance)

方法

名稱 Description
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, TimeSpan)

利用指定的實例儲存、定義身份、身份篩選器及逾時區間,為工作流程建立預設實例擁有者。

CreateDefaultInstanceOwner(InstanceStore, WorkflowIdentity, WorkflowIdentityFilter)

利用指定的實例儲存、定義身份與身份篩選器,為工作流程建立預設實例擁有者。

DeleteDefaultInstanceOwner(InstanceStore, TimeSpan)

刪除工作流程的預設實例擁有者,並指定實例儲存和逾時間隔。

DeleteDefaultInstanceOwner(InstanceStore)

刪除工作流程的預設實例擁有者,並指定實例儲存。

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, TimeSpan)

利用指定的實例識別碼、實例儲存及逾時間隔來檢索工作流程實例。

GetInstance(Guid, InstanceStore)

利用指定的實例識別碼和實例儲存庫擷取工作流程實例。

GetRunnableInstance(InstanceStore, TimeSpan)

取得可執行的工作流程實例,並指定實例儲存與逾時區間。

GetRunnableInstance(InstanceStore)

取得可執行的工作流程實例,並指定實例儲存。

GetType()

取得目前實例的 Type

(繼承來源 Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

主機呼叫它來初始化工作流程實例,並輸入參數值與執行屬性。

(繼承來源 WorkflowInstance)
Initialize(Object, DynamicUpdateMap)

主機呼叫它來初始化工作流程實例,並包含工作流程執行狀態和更新映射。

(繼承來源 WorkflowInstance)
Initialize(Object)

主機呼叫以執行狀態初始化工作流程實例。

(繼承來源 WorkflowInstance)
Load(Guid, TimeSpan)

利用指定的逾時間隔,將指定的工作流程實例從實例儲存載入記憶體。

Load(Guid)

將指定的工作流程實例從實例儲存載入記憶體。

Load(WorkflowApplicationInstance, DynamicUpdateMap, TimeSpan)

從實例儲存中載入一個工作流實例,並指定實例、更新映射及逾時間隔。

Load(WorkflowApplicationInstance, DynamicUpdateMap)

從實例儲存中載入一個工作流實例,並指定實例與更新映射。

Load(WorkflowApplicationInstance, TimeSpan)

從實例儲存中載入一個工作流實例,並設定指定的實例與逾時間隔。

Load(WorkflowApplicationInstance)

從實例儲存中載入一個工作流實例,並指定實例。

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, TimeSpan)

啟動操作以恢復指定的書籤,使用指定的值與逾時間隔。 待續行的書籤是先前由工作流程實例中的某個活動建立的。

ResumeBookmark(Bookmark, Object)

啟動操作以恢復指定的書籤,使用指定的值。 待續行的書籤是先前由工作流程實例中的某個活動建立的。

ResumeBookmark(String, Object, TimeSpan)

啟動操作,使用指定值與逾時區間,恢復指定名稱的書籤。 待續行的書籤是先前由工作流程實例中的某個活動建立的。

ResumeBookmark(String, Object)

啟動操作,使用指定值恢復書籤名稱。 待續行的書籤是先前由工作流程實例中的某個活動建立的。

Run()

開始或恢復工作流程實例的執行。

Run(TimeSpan)

在指定的逾時間隔內開始或恢復工作流程實例的執行。

Terminate(Exception, TimeSpan)

利用指定的例外與逾時間隔終止工作流程實例。

Terminate(Exception)

使用指定的例外終止工作流程實例。

Terminate(String, TimeSpan)

以指定的錯誤訊息與逾時間隔終止工作流程實例。

Terminate(String)

使用指定的錯誤訊息終止工作流程實例。

ThrowIfReadOnly()

如果工作流程實例已被初始化InvalidOperationException,則拋出 。IsReadOnly

(繼承來源 WorkflowInstance)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
Unload()

持續存在並卸載一個工作流程實例。

Unload(TimeSpan)

持續執行並依指定逾時間隔卸載工作流程實例。

適用於