控制 Runbook 活動
您可以將 Runbook 設計工具中的活動連結在一起,以設定 Runbook 中的作業順序。 這些連結稱為 智慧連結,因為您可以設定這些連結 來控制從某個活動傳遞至另一個活動的數據類型。 您也可以藉由設定這些作業使用內嵌迴圈執行的邏輯,來控制 Runbook 何時完成活動。 最後,您可以使用文字和數值作業在活動之間傳遞時操作數據,或設定作業順序的條件。 本文說明如何控制 Runbook 內的排序和操作數據。
使用智慧連結控制活動順序
Runbook 中的活動會根據您設定的順序完成,方法是將它們連結在一起。 您可以使用 [鏈接屬性] 的 [包含] 和 [排除] 索引標籤,控制活動之間流動的數據。 例如,您只能包含要傳遞至符合特定準則之後續活動的數據。
重要
智慧連結 [排除] 索引標籤的規則,會取代智慧連結 [包含] 索引標籤的規則。
重要
使用 [或] 條件可加入每一個索引標籤的規則。 只要索引標籤中定義的其中一個條件為 True,條件即為 True。
活動所發佈的數據類型會決定您可以設定以控制 Runbook 順序的準則類型。 某些活動會發佈二進位數據,而其他活動則發佈數值或文字數據。
如果已發佈的數據是文字數據,您可以使用下列任一項來設定執行、包含或排除的準則。
Condition | 描述 |
---|---|
contains | 指定的文字出現在已發佈資料項目值的某個部分。 |
不包含 | 指定的文字未出現在已發佈資料項目值的某個部分。 |
開頭為 | 已發佈資料項目值的開頭是指定的文字。 |
結尾為 | 已發佈資料項目值的結尾是指定的文字。 |
符合模式 | 已發佈資料項目值符合特定的規則運算式。 |
不符合模式 | 已發佈資料項目值符合特定的規則運算式。 |
等於 | 已發佈資料項目值與指定的文字完全相符。 |
不等於 | 已發佈資料項目值與指定的文字不符。 |
注意
文字值不區分大小寫。
您也可以使用正規表示式來設定準則來執行模式比對。
如果已發佈的數據是數值,您可以使用下列任一項來設定執行、包含或排除的準則。
Condition | 描述 |
---|---|
等於 | 已發佈資料項目的值與指定的值完全相等。 |
不等於 | 已發佈資料項目的值不等於指定的值。 |
小於 | 已發佈資料項目的值小於指定的值。 |
大於 | 已發佈資料項目的值大於指定的值。 |
小於或等於 | 已發佈資料項目的值小於或等於指定的值。 |
大於或等於 | 已發佈資料項目的值大於或等於指定的值。 |
介於 | 已發佈資料項目的值介於兩個指定的值之間。 |
選取必要的索引標籤,以取得新增或移除智慧連結條件的步驟:
請遵循下列步驟來新增智慧連結條件:
以滑鼠右鍵按兩下智慧連結,選取 [ 屬性 ] 以開啟 [ 鏈接屬性 ] 對話框。
重要
若要變更構成規則的值,您必須選取每一個智慧連結條件的加底線部分。
選取條件中所列的活動,以開啟 [ 已發佈的數據] 對話框。
選取 [顯示一般已發佈資料] 方塊,顯示所有活動通用的內容。
從 [已發佈的數據] 中選取屬性,然後選取 [ 確定]。 準則運算式會隨著內容傳回的資料類型而改變。
若要變更表達式的不同部分,請選取加底線的文字,然後選取或輸入適當的值。
選取 [完成]。
使用內嵌循環重複活動
藉由使用迴圈,您可以在 Runbook 中的任何位置建置自動重試和監視。
您可以為任何活動建立迴圈,以便在作業失敗時重試作業,或測試活動的輸出資訊以取得有效的數據。 您也可以使用這些機制,在您的工作流程中建置等候條件。
當您設定活動的循環時,它會繼續使用相同的輸入數據執行,直到達到所需的結束迴圈準則為止。 您可以使用類似智慧連結組態的方式來建置循環的結束準則。 您可以使用活動中的任何已發佈資料項作為結束或不要結束組態的一部分。 包含在常見的已發佈數據中是特殊數據項,例如 迴圈:嘗試 次數和 迴圈:總持續時間,可讓您在迴圈條件中使用迴圈本身的資訊。
循環會針對傳遞至活動的每個傳入數據片段執行一次。 例如,請考慮使用 查詢資料庫 活動的 Runbook,後面接著 Append Line。 如果查詢資料庫活動傳回三個數據列,則 Append Line 活動會執行三次。 如果您在 Append Line 活動上有迴圈,它會執行三個不同的迴圈。 在第一個數據項循環執行AppendLine活動之後,下一個專案會經過AppendLine並迴圈直到結束,然後第三個開始。 處理好這三個項目之後,Runbook 中的下一個活動就會執行。
設定迴圈
以滑鼠右鍵按下 Runbook 中的活動,以選取 [ 迴圈]。 [ 迴圈屬性] 對話框隨即開啟。
在 [ 一般] 索引標籤上,選取 [ 啟用]。
在 [ 嘗試 之間的延遲] 方塊中,輸入每次嘗試執行活動時暫停的秒數。
結束和不要結束條件
[結束] 索引標籤上的規則會指定判斷迴圈是否結束的條件。 [ 不要結束 ] 索引標籤上的規則會指定導致循環繼續的條件。
重要
[不要結束] 索引標籤上的規則會取代 [結束] 索引卷標上的規則。
每個索引標籤內的規則都會使用 Or 條件來聯結。 索引標籤上只有一個條件必須成立,整個索引標籤才為 true。
選取程式的必要索引標籤,以新增或移除 結束 條件:
請遵循下列步驟來新增結束條件:
在 [ 迴圈屬性] 對話框中,選取 [結束 ] 索引卷標或 [不要結束 ] 索引卷標,然後選取方塊中所列的條件,選取 [新增 ] 以新增條件。
重要
若要變更構成規則的值,您必須選取連結條件的每個底線部分。
選取條件中所列的活動,以開啟 [ 已發佈的數據] 對話框。
核取 [ 顯示通用傳回的數據 ] 方塊,以顯示所有活動通用的屬性。
從已發佈的數據中選取屬性,然後選取 [ 確定]。 準則運算式會隨著內容傳回的資料類型而改變。
若要變更表達式的不同部分,請選取加底線的文字,然後選取或輸入適當的值。
選取 [完成]。
設定 Runbook 的排程
您可以設定排程來控制 Runbook 執行的時間。 例如,有時執行某些 Runbook 不合適,例如在一般上班時間備份主伺服器上的 Runbook。 您可以建立一個根據複合式時間間隔執行的排程,例如每個月第一個及第三個星期一和星期四,假日除外。
排程會使用執行 Runbook 之 Runbook 伺服器的系統時鐘。 如此可讓排程在虛擬機器環境中運作,即使系統時鐘因日光節約時間而做前後調整,也能繼續執行排程。
在禁止的時間執行之前啟動的 Runbook,直到完成為止,即使這些 Runbook 在禁止的時間到達時仍在處理。 處理啟動之後,它們不會中斷。
重要
您可以修改排程的訪問許可權,但 Runbook 伺服器不會強制執行這些許可權。
注意
如果您將 Runbook 排程為在系統時鐘向前調整一小時時略過的時間啟動,則會略過該開始時間,且 Runbook 會在下一個排程時間啟動。 如果您排程 Runbook 在發生兩次的一小時內啟動,因為系統時鐘會向後調整一小時,Runbook 就會啟動兩次。
注意
Orchestrator 不支援使用多重選取來移動多個排程。 若要將多個排程移到其他資料夾,您必須個別移動每個排程。
選取必要的索引標籤以建立排程、將排程指派給 Runbook,或從 Runbook 移除排程:
請遵循下列步驟來建立排程:
在 [連線] 窗格中,以滑鼠右鍵按兩下 [排程] 資料夾或 [排程] 資料夾的子資料夾,指向 [新增],然後選取 [排程] 以開啟 [新增排程] 對話框。
在 [一般] 索引標籤的 [名稱] 方塊中,輸入排程的名稱。
在 [ 描述 ] 方塊中,輸入描述或說明排程用途的描述。
選取 [ 詳細資料] 索引標籤。選取此排程允許 Runbook 執行的天數:
[一週天數]:選取此選項,並選取一週中此排程允許 Runbook 執行的天數。
[發生次數]:選取每月中排程允許 Runbook 執行的週數。
[每月天數]:選取此選項,並選取每月中此排程允許 Runbook 執行的天數。 輸入天數,指定每月的天數。 您可以使用連字號描述範圍,並可使用逗號分隔項目。 例如,輸入 1,3 包含當月的第一天和第三天。 輸入 1-21 包括當月第一天到第二十一天。 合併兩者,即可建立一個對每月天數的複合式描述。 輸入 all 以指定月份的所有天數。 輸入 last 以指定月份的最後一天。
您無法使用 所有 和 最後 一個作為天數範圍的一部分。 此外,如果您輸入的範圍為5-31,則此範圍適用於所有月份,包括28、29、30和31天的月份。
選取 [時數 ] 以開啟 [ 排程時數] 對話框。
選取並拖曳以選取一周中的一組時數。 對話框底部的文字會顯示您選取的時間週期。 然後選取下列其中一項:
允許 (藍色):將您選取的時間範圍指派為允許 Runbooks 執行的時間。
拒絕 (白色):將您選取的時間範圍指派為不允許 Runbooks 執行的時間。
選取 [確定]。
選取 [例外狀況] 索引標籤。此清單會顯示 [詳細資料] 索引標籤中定義之規則例外的所有天數。
選取 [ 新增 ] 以開啟 [ 日期] 對話框。
指定日期,然後選取 [允許 ] 或 [不允許] 允許或不允許 Runbook 在該天執行,然後選取 [ 確定]。 此項目會出現在清單中。
若要修改例外狀況專案,請選取它,然後選取 [ 修改]。 若要移除例外狀況專案,請選取它,然後選取 [ 移除]。
若要修改排程,可按兩下 [排程] 。
若要移除排程,可以在 [排程] 上按一下滑鼠右鍵,然後選取 [刪除] 。
選取 [完成]。
使用函式操作數據
您可能需要操作文本文件、傳回的數據或其他來源的字串數據,並將其轉換成 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 -要 修剪的文字。 | Trim(' 移除前置和尾端空格。') 會傳回 'Remove leading and trailing spaces'。 |
Len - 傳回文字的長度。 | Len('Text') | Text - 要測量的文字。 | Len('Measure this text') 會傳回 17 |
注意
函式區分大小寫。 例如,系統會處理 Upper('Text'),但不會處理 upper('Text')。
後續步驟
若要閱讀建立範例 Runbook 的引導式逐步解說,請參閱 建立和測試範例 Runbook。