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 類別會提供工作流程單一執行個體的主機。 這是工作流程執行階段管理的實際工作流程執行個體所屬的 Proxy。 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)

保存與卸載使用指定逾時間隔的工作流程執行個體。

適用於