ページの先頭行へ戻る
Systemwalker Runbook Automation V14g 運用ガイド
Systemwalker

3.7.2 出力情報のフィルタリング

運用操作部品の出力情報(実行結果/標準出力/標準エラー出力)をフィルタリングし、次の運用操作部品への入力として渡すことができます。

出力情報のフィルタリングは個々の出力情報に対して、JavaScript でフィルター処理を記述することにより利用することができます。

3.7.2.1 XML形式の出力結果からXPathを使用して指定したノードの値を抽出する

運用操作部品の出力情報(XML形式)からXPathで指定されたノードの値を抽出し、以降の運用操作部品の入力情報として渡すことができます。

運用操作部品の出力情報(XML形式)については、“Systemwalker Runbook Automationリファレンスガイド”の“運用操作部品リファレンス”-“構成要素を取得する”を参照してください。

  1. プロセス定義エディタで、運用操作部品ノードを選択します。

    ※ここで選択する運用操作部品ノードは、標準出力としてXML形式の情報を出力します。

  2. [プロパティ]-[入出力情報]-[出力情報]タブを選択します。

  3. [追加]ボタンをクリックします。

    →[出力情報]のリストに新しい出力情報が追加されます。

  4. [出力情報]のリストから新しく追加した出力情報を選択します。

    →右側に設定画面が表示されます。

  5. [設定内容]-[変数名]コンボボックスから、フィルタリングした結果を格納する変数(UDA)の名前を選択します。ここでは、"hostname" を選択しています。

  6. [設定内容]-[実行結果]コンボボックスから、"stdout" を選択します。

  7. [設定内容]-[フィルター定義]の[追加]ボタンをクリックします。

    →[フィルター定義]ダイアログが表示されます。

  8. [アクション名]フィールドに任意のフィルター名を入力します。ここでは、フィルターの名前として"ホスト名の抽出"を入力しています。

  9. [式モード選択]ボタンをクリックして、[E]ボタンに変更します。

  10. [A+B...]ボタンをクリックします。

    →[式の作成]ダイアログが表示されます。

  11. 次のようなJavaScriptを入力します。

    target_uda = "hostname"; ・・・・・(1)

    xpath = "/entities/item/record/LogicalServer/@hostname"; ・・・・・(2)

    factory = Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();

    builder = factory.newDocumentBuilder();

    strReader = new Packages.java.io.StringReader(uda.get(target_uda));

    doc = builder.parse(new Packages.org.xml.sax.InputSource(strReader));

    xpathFactory = Packages.javax.xml.xpath.XPathFactory.newInstance().newXPath();

    xpathFactory.evaluate(xpath, doc);

    JavaScriptのターゲットUDAおよびXPathは必要に応じて修正してください。

    (1) ターゲットUDAの名前を指定します。

    (2) ノードの値を抽出するためのXPathを指定します。

  12. [式の作成]ダイアログで、[OK]ボタンをクリックします。

  13. [フィルター定義]ダイアログで、[OK]ボタンをクリックします。

    →[設定内容]-[フィルター名]に、作成したフィルターの名前が表示されます。また、[出力情報]のリストの[フィルター]欄にも表示されます。

以降の運用操作部品の入力情報として、hostname を渡すことができます。

3.7.2.2 出力結果からキーワードを含んだ行を抽出する

運用操作部品の出力情報から指定したキーワードを含んだ行を抽出することができます。

ここでは、「任意のコマンドを実行する」部品を使って実行するコマンドが標準出力へ出力した結果からキーワードを含んだ特定の行を抽出する例を示します。

  1. プロセス定義エディタで、運用操作部品ノードを選択します。

  2. [プロパティ]-[入出力情報]-[出力情報]タブを選択します。

  3. [追加]ボタンをクリックします。

    →[出力情報]のリストに新しい出力情報が追加されます。

  4. [出力情報]のリストから新しく追加した出力情報を選択します。

    →右側に設定画面が表示されます。

  5. [設定内容]-[変数名]コンボボックスから、フィルタリングした結果を格納する変数(UDA)の名前を選択します。ここでは、"ipaddress" を選択しています。

  6. [設定内容]-[実行結果]コンボボックスから、"stdout" を選択します。

  7. [設定内容]-[フィルター定義]の[追加]ボタンをクリックします。

    →[フィルター定義]ダイアログが表示されます。

  8. [アクション名]フィールドに任意のフィルター名を入力します。ここでは、フィルターの名前として"IPアドレスの抽出"を入力しています。

  9. [式モード選択]ボタンをクリックして、[E]ボタンに変更します。

  10. [A+B...]ボタンをクリックします。

    →[式の作成]ダイアログが表示されます。

  11. 次のようなJavaScriptを入力します。

    target_uda = "ipaddress";   ・・・・・(1)
    keyword = "IP Address";     ・・・・・(2)
    str = new Packages.java.lang.String(uda.get(target_uda));
    array = str.split("\n");
    result = new Packages.java.lang.String("");
    for (i = 0; i < array.length; ++i) {
        if (array[i].indexOf(keyword) >= 0) {     ・・・・・(3)
            result = result.concat(array[i]);
            result = result.concat("\n");
        } 
    }
    result.toString();
    

    JavaScriptのターゲットUDAおよびkeywordは必要に応じて修正してください。

    (1) ターゲットUDAの名前を指定します。

    (2) ノードの値を抽出するためのkeywordを指定します。

    (3) の行の条件を変更することにより、キーワードの検索方式を指定することができます。以下のような条件を指定することができます。

    • 前方一致:array[i].startsWith(keyword)

    • 後方一致:array[i].endsWith(keyword)

    • 部分一致:array[i].indexOf(keyword) >= 0

    • 正規表現:array[i].matches(keyword)

    注意

    後方一致を行う場合はWindows環境での改行コード(キャリッジリターン(CR))を考慮する必要があります。以下の例では、"Files"という文字列で終わる行を抽出するための判定条件として、"Files"または"Files\r"という文字列で終わっているかどうかを判定しています。

    target_uda = "result";
    keyword1 = "Files";
    keyword2 = "Files\r";
    str = new Packages.java.lang.String(uda.get(target_uda));
    array = str.split("\n");
    result = new Packages.java.lang.String("");
    for (i = 0; i < array.length; ++i) {
        if (array[i].endsWith(keyword1) || array[i].endsWith(keyword2)) {
            result = result.concat(array[i]);
            result = result.concat("\n");
        } 
    }
    result.toString();
  12. [式の作成]ダイアログで、[OK]ボタンをクリックします。

  13. [フィルター定義]ダイアログで、[OK]ボタンをクリックします。

    →[設定内容]-[フィルター名]に、作成したフィルターの名前が表示されます。また、[出力情報]のリストの[フィルター]欄にも表示されます。

以降の運用操作部品の入力情報として、ipaddress を渡すことができます。