控制 Runbook 活動

重要

這個版本的 Orchestrator 已終止支援。 建議您 升級至 Orchestrator 2022

您可以在 Runbook Designer 中將活動連結在一起,以設定 Runbook 中的作業順序。 這些連結稱為 智慧連結 ,因為您可以設定這些連結來控制從某個活動傳遞至另一個活動的數據類型。 您也可以藉由設定這些作業使用內嵌迴圈執行的邏輯,來控制 Runbook 何時完成活動。 最後,您可以使用文字和數值作業在活動之間傳遞時操作數據,或設定作業順序的條件。 本文說明如何控制 Runbook 中的數據排序和操作。

Runbook 中的活動會根據您設定的順序完成,方法是將它們連結在一起。 您可以使用 [鏈接屬性] 的 [包含] 和 [排除] 索引標籤,控制活動之間流動的數據。 例如,您只能包含要傳遞至符合特定準則之後續活動的數據。

重要

智慧連結 [排除] 索引標籤的規則,會取代智慧連結 [包含] 索引標籤的規則。

重要

使用 [或] 條件可加入每一個索引標籤的規則。 只要索引標籤中定義的其中一個條件為 True,條件即為 True。

活動所發行的數據類型會決定您可以設定以控制 Runbook 序列的準則類型。 有些活動會發佈二進位數據,而其他活動則發佈數值或文字數據。

如果已發佈的數據是文字數據,您可以使用下列任一項來設定執行、包含或排除的準則。

條件 描述
contains 指定的文字出現在已發佈資料項目值的某個部分。
不包含 指定的文字未出現在已發佈資料項目值的某個部分。
開頭為 已發佈資料項目值的開頭是指定的文字。
結尾為 已發佈資料項目值的結尾是指定的文字。
符合模式 已發佈資料項目值符合特定的規則運算式。
不符合模式 已發佈資料項目值符合特定的規則運算式。
equals 已發佈資料項目值與指定的文字完全相符。
不等於 已發佈資料項目值與指定的文字不符。

注意

文字值不區分大小寫。

您也可以使用正規表示式來設定準則來執行模式比對。

如果已發佈的數據是數值,您可以使用下列任一項來設定執行、包含或排除的準則。

條件 描述
equals 已發佈資料項目的值與指定的值完全相等。
不等於 已發佈資料項目的值不等於指定的值。
小於 已發佈資料項目的值小於指定的值。
大於 已發佈資料項目的值大於指定的值。
小於或等於 已發佈資料項目的值小於或等於指定的值。
大於或等於 已發佈資料項目的值大於或等於指定的值。
介於 已發佈資料項目的值介於兩個指定的值之間。

選取必要索引標籤,以取得新增或移除智慧連結條件的步驟:

使用內嵌循環重複活動

在使用迴圈時,您可以建置自動重試,並監視 Runbook 中的任何位置。

您可以為任何活動建立迴圈,以便在作業失敗或測試活動的輸出資訊是否有有效數據時重試作業。 您也可以使用這些機制,在工作流程中建置等候條件。

當您設定活動的循環時,它會繼續使用相同的輸入數據執行,直到達到所需的結束迴圈準則為止。 您可以使用類似智慧連結組態的方式來建置循環的結束準則。 您可以從活動使用任何已發佈的資料項作為結束或未結束組態的一部分。 常見的已發佈數據中包含特殊數據項,例如 迴圈:嘗試次數迴圈:總持續時間,可讓您在迴圈狀況中使用迴圈本身的資訊。

循環會針對傳遞至活動的每個傳入數據片段執行一次。 例如,請考慮使用 查詢資料庫 活動的 Runbook,後面接著 附加行。 如果 查詢資料庫 活動傳回三個數據列, 則 Append Line 活動會執行三次。 如果您在 Append Line 活動上有迴圈,它會執行三個不同的迴圈。 在第一個數據項循環執行 AppendLine 活動之後,下一個專案會經過 AppendLine 並迴圈直到結束,然後第三個開始。 處理好這三個項目之後,Runbook 中的下一個活動就會執行。

設定迴圈

  1. 以滑鼠右鍵按下 Runbook 中的活動,以選取 [迴圈]。 [ 迴圈屬性] 對話框隨即開啟。

  2. 在 [ 一般] 索引標籤上,選取 [ 啟用]。

  3. 在 [ 嘗試之間的延遲] 方塊中,輸入每次嘗試執行活動之間要暫停的秒數。

結束和不要結束條件

[ 結束 ] 索引標籤上的規則會指定判斷迴圈是否結束的條件。 [ 不要結束 ] 索引標籤上的規則會指定導致循環繼續的條件。

重要

[ 不要結束 ] 索引標籤上的規則會取代 [ 結束 ] 索引卷標上的規則。

每個索引標籤內的規則都會使用 Or 條件聯結。 只要有其中一個索引標籤的條件必須為 true,對於整個索引標籤即為 true。

選取程式的必要索引標籤,以新增或移除 結束 條件:

請遵循下列步驟來新增結束條件:

  1. 在 [ 迴圈屬性] 對話框中,選取 [ 結束 ] 索引卷標或 [ 不要結束 ] 索引卷標,然後選取方塊中所列的條件,選取 [ 新增 ] 以新增條件。

    重要

    若要變更構成規則的值,您必須選取連結條件的每個加底線部分。

  2. 選取條件中所列的活動,以開啟 [已發佈的數據 ] 對話框。

  3. 核取 [ 顯示通用傳回的數據] 方塊,以顯示所有活動通用的屬性。

  4. 從已發佈的數據中選取屬性,然後選取 [確定]。 準則運算式會隨著內容傳回的資料類型而改變。

  5. 若要變更表達式的不同部分,請選取加底線的文字,然後選取或輸入適當的值。

  6. 選取 [完成]。

設定 Runbook 的排程

您可以設定排程來控制 Runbook 執行的時間。 例如,有時候執行某些 Runbook 不適當,例如在一般上班時間備份主伺服器上的 Runbook。 您可以建立一個根據複合式時間間隔執行的排程,例如每個月第一個及第三個星期一和星期四,假日除外。

排程會使用執行 Runbook 之 Runbook 伺服器的系統時鐘。 如此可讓排程在虛擬機器環境中運作,即使系統時鐘因日光節約時間而做前後調整,也能繼續執行排程。

在禁止的時間執行之前啟動的 Runbook,直到完成為止,即使這些 Runbook 仍會在禁止的時間送達時進行處理。 處理開始之後,它們不會中斷。

重要

您可以修改排程的訪問許可權,但 Runbook 伺服器不會強制執行這些許可權。

注意

如果您排程 Runbook 在一小時內啟動,當系統時鐘向前調整為一小時時會略過,則會略過該開始時間,而 Runbook 會在下一個排程的時間開始。 如果您排程 Runbook 在發生兩次的一小時內啟動,因為系統時鐘會向後調整一小時,Runbook 就會啟動兩次。

注意

Orchestrator 不支援使用多重選取方式移動多個排程。 若要將多個排程移到其他資料夾,您必須個別移動每個排程。

選取必要的索引標籤以建立排程、將排程指派給 Runbook,或從 Runbook 移除排程:

請遵循下列步驟來建立排程:

  1. [Connections] 窗格中,以滑鼠右鍵按兩下 [排程]資料夾或 [排程] 資料夾的子資料夾,指向 [新增],然後選取 [排程] 以開啟 [新增排程] 對話框。

  2. 在 [ 一般 ] 索引標籤的 [ 名稱] 方塊中,輸入排程的名稱。

  3. 在 [ 描述 ] 方塊中,輸入描述或說明排程用途的描述。

  4. 選取 [ 詳細數據] 索引標籤 。選取此排程允許 Runbook 執行天數:

    星期幾:選取此選項,然後選取此排程允許 Runbook 執行的一周天數。

    [發生次數]:選取每月中排程允許 Runbook 執行的週數。

    [每月天數]:選取此選項,並選取每月中此排程允許 Runbook 執行的天數。 輸入天數,指定每月的天數。 您可以使用連字號描述範圍,並可使用逗號分隔項目。 例如,輸入 1,3 包含月份的第一天和第三天。 輸入 1-21 包含月份的第一到第二十一天。 合併兩者,即可建立一個對每月天數的複合式描述。 輸入 all 以指定月份的所有天數。 輸入 last 以指定月份的最後一天。

    您無法 將所有最後 一個當做天數範圍的一部分使用。 此外,如果您輸入 5-31 的範圍,則此範圍適用於所有月份,包括 28、29、30 和 31 天。

  5. 選取 [小時 ] 以開啟 [ 排程時數 ] 對話框。

  6. 選取並拖曳以選取一周中的一組小時。 對話框底部的文字會顯示您選取的時間週期。 然後選取下列其中一項:

    允許 (藍色):將您選取的時間範圍指派為允許 Runbooks 執行的時間。

    拒絕 (白色):將您選取的時間範圍指派為不允許 Runbooks 執行的時間。

  7. 選取 [確定]。

  8. 選取 [ 例外狀況] 索引標籤 。此清單會顯示 [ 詳細 資料] 索引標籤中定義之規則的所有例外日期。

  9. 選取 [新增 ] 以開啟 [ 日期 ] 對話框。

  10. 指定日期,然後選取 [允許 ] 或 [ 不允許 ] 允許或不允許 Runbook 在該日執行,然後選取 [ 確定]。 此項目會出現在清單中。

  11. 若要修改例外狀況專案,請加以選取,然後選取 [ 修改]。 若要移除 [例外狀況] 專案,請加以選取,然後選取 [ 移除]。

  12. 若要修改排程,可按兩下 [排程]

  13. 若要移除排程,可以在 [排程] 上按一下滑鼠右鍵,然後選取 [刪除]

  14. 選取 [完成]。

使用函式操作數據

您可能需要操作文本文件、傳回的數據或其他來源的字串數據,並將其轉換成 Runbook 活動的可用表單。 此外,您可以執行簡單的算術運算,例如計算總和和和差異,以及執行除法和乘法運算。 舉例來說,您可以使用「文字檔管理」 活動從文字檔擷取文字、修剪文字中的前置和後端空格,然後擷取文字可傳遞至其他活動作為傳回資料項目的特定部分。

您可以藉由插入函式來操作 Runbook 中的數據。 資料操作函式必須在方括弧 ('[' 和 ']') 內。 例如:

[Upper('this will be inserted in upper case')]

當執行活動時,範例中的文字 'this will be inserted in uppercase' 將會以 'THIS WILL BE INSERTED IN UPPERCASE' 取代。

函式區分大小寫。 例如,系統會處理 Upper('Text'),但不會處理 upper('Text')。

下表列出 Runbook 支援的函式。

函式和定義 使用量 參數 範例
Upper - 將文字轉換成大寫。 Upper('Text') Text - 要轉換成大寫的文字。 Upper('this will be converted to uppercase') 會傳回 'THIS WILL BE CONVERTED TO UPPERCASE'
Lower - 將文字轉換成小寫。 Lower('Text') Text - 要轉換成小寫的文字。 Lower('This Will Be Converted To Lowercase') 會傳回 'this will be converted to lowercase'
Field - 傳回特定位置的文字。 Field('Text', 'Delimiter', Field Number) Text - 要搜尋的文字。

Delimiter - 區隔每個欄位的字元。

Field Number - 要傳回的欄位位置 (從 1 開始)。
Field('John;Smith;9055552211', ';', 2) 會傳回 'Smith'
Sum - 傳回一組數字的總和。 Sum(firstNumber, secondNumber, thirdNumber, ...) 數字 - 要相加的數字。 您可以輸入任何一組數字,並以逗號 (,) 區隔。 Sum(2,3,4,5) 會傳回 '14'
Diff - 傳回兩個數字的差額。 Diff (Number1、Number2、 <Precision>) Number1 - 將被減去的數字。

Number2 - 將從 Number1 減去的數字。

有效位數 <選擇性> - 結果將四捨五入的小數字數。
Diff(9, 7) 會傳回 '2'

Diff(9.3, 2.1, 2) 會傳回 '7.20'
Mult - 傳回一組數字的乘積。 Mult(firstNumber, secondNumber, thirdNumber, ...) 數字 - 要相乘的數字。 您可以輸入任何一組數字,並以逗號 (,) 區隔。 Mult(2, 3, 4) 會傳回 '24'
Div - 傳回兩個數字的商數。 Div (Number1、Number2、 <Precision>) Number1 - 被除數。

Number2 - Number1 的除數。

有效位數 <選擇性> - 結果將四捨五入的小數字數。
Div(8, 4) 會傳回 '2'

Div(9, 2, 2) 會傳回 '4.50'
Instr - 傳回其他文字內出現第一個搜尋文字的位置。 Instr ('SearchText', 'TextToFind') SearchText - 被搜尋的文字。

TextToFind - 您要搜尋的文字。
Instr('This is a string that is searched', 'string') 會傳回 11
Right - 傳回從全文右邊算起的文字子集。 Right('Text', Length) Text - 全文。

Length - 將傳回從右邊算起的字元數。
Right('Take from the right', 9) 會傳回 'the right'。
Left - 傳回從全文左邊算起的文字子集。 Left('Text', Length) Text - 全文。

Length - 將傳回從左邊算起的字元數。
Left('Take from the left', 4) 會傳回 'Take'
Mid - 傳回從全文中間算起的文字子集。 Mid('Text', Start, Length) Text - 全文。

Start - 文字中要開始傳回字元的起點。

Length - 從開始位置開始傳回的字元數。
Mid('Take from the middle', 5, 4) 會傳回 'from'
LTrim - 修剪文字的前置空格。 LTrim('Text') Text - 要修剪前置空格的文字。 LTrim (『僅移除前置空格。') 會傳回 '僅移除前置空格。 '
RTrim - 修剪文字中的後端空格。 RTrim('Text') Text - 要修剪後端空格的文字。 RTrim (『僅移除尾端空格。') 會傳回 '僅移除尾端空格。」
Trim -修剪文字的前置和後端空格。 Trim('Text') Text -要 修剪的文字。 修剪 (『移除前置和尾端空格。') 會傳回 'Remove leading and trailing spaces'。
Len - 傳回文字的長度。 Len('Text') Text - 要測量的文字。 Len('Measure this text') 會傳回 17

注意

函式區分大小寫。 例如,系統會處理 Upper('Text'),但不會處理 upper('Text')。

後續步驟

若要閱讀建立範例 Runbook 的引導式逐步解說,請參閱 建立和測試範例 Runbook