共用方式為


活動定義範圍和可見性

活動定義範圍和可見性,就像物件的範圍和可見性一樣,是其他物件或活動存取活動成員的能力。 活動定義是由下列實作執行:

  1. 確定活動向使用者公開的成員(ArgumentVariableActivityDelegate物件,以及子活動)。

  2. 實作活動的執行邏輯

實作可能牽涉到未公開給活動使用者的成員,而是實作細節。 與類型定義類似,活動模型可讓作者限定活動成員對於所定義活動定義的可見度。 此可見度可控管成員使用方式的各個層面,例如數據範圍。

影響範圍

除了資料界定之外,活動模型的可見度還可以限制對活動的其他層面的存取,例如驗證、偵錯、跟蹤或追溯。 執行屬性會使用可見度和範圍來限制特定定義範圍的執行特性。 次要根使用可見度和作用域,將CompensableActivity 擷取的狀態限制為使用可補償活動的定義範圍。

定義和使用方式

工作流程是透過繼承基底活動類別來撰寫新活動,以及使用 Built-In 活動庫中的活動。 若要使用活動,活動作者必須設定其定義之每個元件的可見性。

活動成員

活動模型會定義活動提供給取用者的參數、變數、委派和子活動。 每個成員都可以宣告為 publicprivate。 公用成員是由活動的取用者所設定,而 private 成員則使用活動作者所固定的實作。 以下是資料範圍的可見度規則:

  1. 公用成員和公用子活動的公用成員可以參考公用變數。

  2. 私有成員和公共活動的公共成員可以引用參數和私有變數。

消費者可以設定的活動成員永遠不應被設為私用。

撰寫模型

自訂活動是使用NativeActivity、、 ActivityCodeActivityAsyncCodeActivity來定義。 衍生自這些類別的活動可以公開具有不同可見性的不同成員類型。

NativeActivity

衍生自 NativeActivity 的活動具有以命令式程式代碼撰寫的行為,而且可以選擇性地使用現有的活動來定義。 衍生自NativeActivity的活動可存取執行環境公開的所有功能。 這類活動的任何成員都可以使用公用或私用可見度來定義,但自變數只能宣告為 public

NativeActivity 衍生的類別成員會通過傳遞 NativeActivityMetadata 結構體至 CacheMetadata 方法而宣告給運行時。

活動

使用 Activity 所創建的活動,其行為是透過組合其他活動來設計的。 類別 Activity 有一個實作的子活動,會在執行期間使用 Implementation 取得。 從 Activity 衍生的活動可以定義公用參數、公用變數、匯入的活動委派和匯入的活動。

匯入的 ActivityDelegates 和 Activity 會宣告為活動的公用子系,但活動無法直接排程。 這項資訊會在驗證期間使用,以避免在活動永遠不會執行的位置執行父對向驗證。 此外,匯入的子系,就像公用子系一樣,可由活動的實作參考和排程。 這表示匯入名為 Activity1 的活動可以在其實作中包含一個 Sequence 來排程 Activity1。

CodeActivity/ AsyncCodeActivity

這個基類用於命令式程式代碼中的撰寫行為。 衍生自這個類別的活動只能存取其提供的參數。 這意味著這些活動只能公開公開參數。 沒有其他成員或可見度適用於這些活動。

可見度摘要

下表摘要說明本節稍早的資訊。

成員類型 NativeActivity 活動 CodeActivity/ AsyncCodeActivity
論點 公用/私人 公共 / 公開 / 公眾 不適用
變數 公用/私人 公共 / 公開 / 公眾 不適用
兒童活動 公用/私人 公共,在實作中定義的一個固定的私有子項。 不適用
ActivityDelegates 公用/私人 公共 / 公開 / 公眾 不適用

一般而言,活動消費者無法設定的成員不應公開。

執行屬性

在某些情況下,將特定執行屬性的範圍界定於活動的公開的子項很有用。 集合 ExecutionProperties 會使用 Add 方法提供這項功能。 這個方法具有 Boolean 參數,指出特定屬性的範圍是所有子系,還是只有公用的子系。 如果此參數設定為 true,則只有公用成員及其公用子系的公用成員才能看到 屬性。

次生根

次級根是執行時期的內部機制,用於管理補償活動狀態。 CompensableActivity當完成執行時,其狀態不會立即清除。 相反地,狀態由執行時期維護在次要根目錄中,直到補償程序完成為止。 使用次要根節點擷取的位置環境會對應到 Compensable 活動的使用定義範圍。