次の方法で共有


Runbook アクティビティを制御する

Runbook の操作のシーケンスを設定するには、 Runbook Designer でアクティビティをリンクします。 これらのリンクは、 スマート リンクと呼ばれます アクティビティ間で渡されるデータの種類を制御するように構成できるためです。 また、Runbook がアクティビティを完了するタイミングを制御するには、それらの操作が埋め込みループで実行されるタイミングのロジックを設定します。 最後に、テキスト操作と数値演算を使用して、アクティビティ間を通過するデータを操作したり、操作の順序の条件を設定したりできます。 この記事では、Runbook 内のデータのシーケンス処理と操作を制御する方法について説明します。

Runbook のアクティビティは、それらをリンクして設定した順序に従って完了します。 Link プロパティの [含める] タブと [除外] タブを使用して、アクティビティ間を流れるデータを制御。 たとえば、特定の条件を満たす後続のアクティビティに渡されるデータのみを含めることができます。

重要

スマート リンクの [ 除外 ] タブの規則は、[ 含める ] タブの規則よりも優先されます。

重要

各タブ内のルールは [ or ] 条件を使用して結合されます。 1 つのタブで定義されている条件に true が 1 つでもあれば、その条件は true と判定されます。

アクティビティによって公開されるデータの種類によって、Runbook シーケンスを制御するために設定できる条件の種類が決まります。 バイナリ データを発行するアクティビティもあれば、数値データやテキスト データを公開するアクティビティもあります。

パブリッシュされたデータがテキスト データの場合は、次のいずれかを使用して、実行、包含、または除外の条件を設定できます。

条件 説明
contains 公開データ項目の値のどこかに、指定したテキストがあります。
が次の値を含まない: 公開データ項目の値のどこにも、指定したテキストがありません。
が次の値で始まる 公開データ項目の値が、指定したテキストで始まります。
が次の値で終わる 公開データ項目の値が、指定したテキストで終わります。
次のパターンと一致する 公開データ項目の値が、特定の正規表現と一致します。
次のパターンと一致しない 公開データ項目の値が、特定の正規表現と一致します。
equals 公開データ項目の値は、指定したテキストと完全に一致します。
次の値と等しくない 公開データ項目の値は、指定したテキストと一致しません。

Note

テキスト値では大文字と小文字は区別されません。

正規表現を使用して条件を設定してパターン マッチングを実行することもできます。

パブリッシュされたデータが数値の場合は、次のいずれかを使用して、実行、包含、または除外の条件を設定できます。

条件 説明
equals 公開データ項目の値は、指定した値と完全に一致します。
次の値と等しくない 公開データ項目の値は、指定した値と一致しません。
が次の値より小さい 公開データ項目の値は、指定した値よりも小さいです。
が次の値より大きい 公開データ項目の値は、指定した値よりも大きいです。
が次の値以下 公開データ項目の値は、指定した値より小さいか等しいです。
が次の値以上 公開データ項目の値は、指定した値より大きいか等しいです。
が次の値の間 公開データ項目の値は、指定した 2 つの値の間にあります。

スマート リンク条件を追加または削除する手順に必要なタブを選択します。

埋め込みループを使用してアクティビティを繰り返す

ループを使用すると、Runbook 内の任意の場所で自動再試行を構築し、監視できます。

アクティビティが失敗した場合に操作を再試行したり、アクティビティの出力情報で有効なデータをテストしたりできるように、任意のアクティビティのループを作成できます。 これらのメカニズムを使用して、ワークフローに待機条件を組み込むこともできます。

アクティビティのループを構成すると、目的の終了ループ条件に達するまで、同じ入力データで実行が続行されます。 ループの終了条件は、スマート リンク構成と同様の方法で構築します。 アクティビティのパブリッシュされたデータ項目は、出口の一部として使用することも、構成を終了しない場合にも使用できます。 公開される一般的なデータには、ループ条件でループ自体の情報を使用できる、 Loop: 試行回数 Loop: Total duration などの特殊なデータ項目が含まれます。

ループは、アクティビティに渡される受信データごとに 1 回実行されます。 たとえば、 Query Database アクティビティの後に Append Line を使用する Runbook があるとします。 Query Database アクティビティから 3 つの行が返された場合、Append Line アクティビティは 3 回実行されます。 Append Line アクティビティにループがある場合は、3 つの個別のループが実行されます。 最初のデータ項目が Append Line アクティビティをループ処理した後、次の項目は Append Line を通過し 終了するまでループし、3 番目の項目が開始します。 3 つの項目がすべて処理されると、Runbook の次のアクティビティが実行されます。

ループの構成

  1. Runbook でアクティビティを右クリックし、 Looping を選択します。 Looping プロパティ ダイアログが開きます。

  2. [ General タブで、 Enable を選択します。

  3. [試行間の 間隔 ボックスに、アクティビティの実行を試行するたびに一時停止する秒数を入力します。

終了条件と終了しない条件

Exitタブのルールは、ループが終了するかどうかを決定する条件を指定します。 [終了しない]タブのルールでは、ループを続行する条件を指定します。

重要

[終了しない] タブのルールは、[Exit] タブのルールよりも優先されます。

各タブ内のルールは、 Or 条件を使用して結合されます。 タブ全体を true にするには、タブの条件の 1 つだけを true にする必要があります。

Exit条件を追加または削除するには、プロシージャに必要なタブを選択します。

終了条件を追加するには、次の手順に従います。

  1. [ ループのプロパティ ] ダイアログで、[ Exit ] タブまたは [終了しない ] タブを選択し ボックスに一覧表示されている条件を選択し、[ 追加 を選択して条件を追加します。

    重要

    ルールを構成する値を変更するには、リンク条件の下線が付いた各部分を選択する必要があります。

  2. 条件に一覧表示されているアクティビティを選択して、[ パブリッシュされたデータ ] ダイアログを開きます。

  3. すべてのアクティビティに共通するプロパティを表示するには、[ 共通の戻りデータの表示 ] ボックスをオンにします。

  4. パブリッシュされたデータからプロパティを選択し、 OKを選択します。 条件がどのように表示されるかは、プロパティが返すデータの種類によって変わります。

  5. 式のさまざまな部分を変更するには、下線付きテキストを選択し、適切な値を選択または入力します。

  6. 完了 を選択します。

Runbook のスケジュールを設定する

Runbook を実行するタイミングを制御するスケジュールを設定できます。 たとえば、通常の営業時間中にメイン サーバーで Runbook をバックアップするなど、一部の Runbook を実行するのが不適切な場合があります。 スケジュールを作成すれば、毎月の第 1 および第 3 の月曜と木曜 (ただし休日は除く) など、間隔を細かく定めて実行することができます。

スケジュールは、Runbook を実行する Runbook サーバーのシステム クロックを使用します。 これにより、スケジュールを仮想マシン環境で機能させることができ、さらに夏時間の移行でシステム クロックが調整される場合でもスケジュールを引き続き実行できます。

禁止時間の前に開始される Runbook は、禁止された時間が到着しても処理を続けている場合でも、完了するまで実行されます。 処理が開始された後は中断されません。

重要

スケジュールのアクセス許可は変更できますが、Runbook サーバーではこれらのアクセス許可は適用されません。

Note

システム クロックが 1 時間順に調整されたときにスキップされる 1 時間中に Runbook を開始するようにスケジュールすると、その開始時刻はスキップされ、Runbook は次にスケジュールされた時刻に開始されます。 システム クロックが 1 時間前に調整されるために 2 回発生する 1 時間の間に Runbook を開始するようにスケジュールすると、Runbook は 2 回開始されます。

Note

オーケストレーターでは、複数選択による複数のスケジュールの移動はサポートされていません。 複数のスケジュールを別のフォルダーに移動するには、各スケジュールを 1 つずつ移動する必要があります。

スケジュールを作成したり、Runbook にスケジュールを割り当てたり、Runbook からスケジュールを削除したりするには、必要なタブを選択します。

スケジュールを作成するには、次の手順に従います。

  1. Connections ペインで、Schedules フォルダーまたは Schedules フォルダーのサブフォルダーを右クリックし、New をポイントし、Schedule を選択して新しいスケジュール ダイアログを開きます。

  2. [ General ] タブの [ Name ボックスに、スケジュールの名前を入力します。

  3. [ Description ボックスに、スケジュールの目的を説明する説明を入力します。

  4. Details タブを選択します。このスケジュールで Runbook の実行を許可する日数を選択します。

    曜日:このオプションで、Runbook の実行をスケジュールで許可する曜日を選択します。

    回数:Runbook の実行をスケジュールで許可する週を選択します。

    日にち:このオプションで、Runbook の実行をスケジュールで許可する日にちを選択します。 この日にちは、日付を入力して指定します。 日付の範囲を示すにはハイフン、エントリを区分するにはコンマを使用します。 たとえば、「 1,3 」と入力すると、月の最初と 3 日目が含まれます。 1 から 21 を入力には、月の最初から 21 日までの日付が含まれます。 これらの符号を組み合わせて、日にちを細かく指定することができます。 「 all 」と入力して、月のすべての日を指定します。 last を入力して、月の最終日を指定します。

    すべてのlastを日の範囲の一部として使用することはできません。 さらに、5 ~ 31 の範囲を入力した場合、この範囲は、28 日、29 日、30 日、31 日を含むすべての月で正しく機能します。

  5. 時間を選択してスケジュールの時間ダイアログを開きます。

  6. 選択してドラッグして、1 週間の時間のグループを選択します。 ダイアログの下部にあるテキストには、選択した期間が表示されます。 次のいずれかを選択します。

    許可 (青): 選択した時間帯を、Runbook の実行を許可する時間として割り当てます。

    拒否 (白): 選択した時間帯を、Runbook の実行を許可しない時間として割り当てます。

  7. [OK] を選択します。

  8. Exceptions タブを選択します。この一覧には、Details タブで定義されているルールの例外であるすべての日が表示されます。

  9. [追加] を選択して、Date ダイアログを開きます。

  10. 日付を指定し、 Allow または Disallow を選択して、その日に Runbook の実行を許可するか許可しないか、 OK を選択します。 エントリが一覧に示されます。

  11. 例外エントリを変更するには、そのエントリを選択し、 Modify を選択します。 例外エントリを削除するには、そのエントリを選択し、 Remove を選択します。

  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, ...) Number - 加算される数値。 任意の数の数値をコンマ (,) で区切って指定できます。 Sum(2,3,4,5) は '14' を返します
Diff - 2 つの数値の差を返します。 Diff(Number1, Number2, <Precision>) Number1 - 減算される数値。

Number2 - Number1 から減算する数値。

有効桁数 <オプション> - 結果の小数点以下の桁数を丸めます。
Diff(9, 7) は '2' を返します

Diff(9.3, 2.1, 2) は '7.20' を返します
Mult - 複数の数値の積を返します。 Mult(firstNumber, secondNumber, thirdNumber, ...) Number - 乗算される数値。 任意の数の数値をコンマ (,) で区切って指定できます。 Mult(2, 3, 4) は '24' を返します
Div - 2 つの数値の商を返します。 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(' 先頭と末尾のスペースを削除します。') '先頭と末尾のスペースを削除' を返します。
Len - テキストの長さを返します。 Len('Text') Text - 測定対象のテキスト。 Len('Measure this text') は 17 を返します

Note

関数は大文字と小文字が区別されます。 たとえば、Upper('Text') は処理されますが、upper('Text') は処理されません。

次のステップ

サンプル Runbook の作成に関するガイド付きチュートリアルについては、「 サンプル Runbook の作成とテストを参照してください。