ServiceNow Connector 6.14 の例 - Mule 4

ServiceNow 用 Anypoint Connector (ServiceNow Connector) を最大限活用するには、次の Anypoint Studio と Flow Designer の両方での設定例を参照してください。

ServiceNow インシデントレコードの取得

この例では、インシデント番号に基づいてレコードを取得するための Mule フローを Flow Designer で作成します。

  1. Flow Designer で Mule アプリケーションをプロジェクトとして作成します。

  2. HTTP の ​Listener​ をフローのソースとして追加して設定し、​[Path (パス)]​ を ​/incident/get​ に設定します。

    または、HTTP リスナーの接続にデフォルトの設定を使用します。

  3. ServiceNow の ​Invoke​ 操作をフローに追加します。

  4. ServiceNow サーバーに接続するための ServiceNow 設定を次のようにセットアップしてテストします。

    • Configuration Name (設定名): ServiceNow_Config

    • Username (ユーザー名): my_user_name

    • Password (パスワード): my_password

    • Service Address (サービスアドレス): https://my_account.service-now.com

    • ServiceNow Version (ServiceNow バージョン): Quebec

      ServiceNow アカウントに ​soap​ ロールセットがあるか、ServiceNow アカウントが ​admin​ アカウントである必要があります。システム管理者アカウントには SOAP へのアクセス権が自動的に付与されるため、テストにはシステム管理者アカウントが適しています。ただし、本番環境では、専用の API アカウントを作成し、​soap​ ロールと、必要最低限のアクセス権を付与する追加のロールセットを設定してください。

    接続に失敗した場合テストは、無効な接続パラメーターを確認して修正し、接続をもう一度テストしてください。

  5. ServiceNow 設定の ​[Transport (トランスポート)]​ タブで、​Basic Auth HTTP​ メッセージディスパッチャーをセットアップし、テストして、保存します。

    [General (一般)]​ タブで指定したものと同じユーザー名とパスワードを使用します。たとえば、次のように指定します。

    • Username (ユーザー名): my_user_name

    • Password (パスワード): my_password

      接続に失敗した場合テストは、無効な接続パラメーターを確認して修正し、接続をもう一度テストしてください。

  6. ServiceNow Connector の [Web Service Configuration (Web サービス設定)] 値を選択します。たとえば、次のようにします。

    • Service (サービス): incident

    • Operation (操作): getRecords

  7. これらの値を ​[Service (サービス)]​ 項目と ​[Operation (操作)]​ 項目のメニュー項目として使用できるようにします。

    名前は、コネクタがメタデータを読み込むと入力されます。

    これらの名前を手動で入力しないでください。
  8. コネクタの変換スクリプトを提供します。

  9. Design Center の ​Invoke​ 操作から、​[Body (本文)]​ 項目の ​[Map (マップ)]​ をクリックします。

  10. [Body (本文)]​ ウィンドウの下部にある ​[Script (スクリプト)]​ タブをクリックします。

  11. 次の例のように、変換スクリプトをコピーして貼り付けます。

    %dw 2.0
    output application/xml
    ns inc http://www.service-now.com/incident
    ---
    {
        inc#getRecords: {
            inc#number: "INC0012345"
        }
    }
    この例では、​output​ データ型を ​application/xml​ に変更しています。
  12. フローの最後に​payload​ をメッセージとして使用するロガーを追加します。

  13. アプリケーションをデプロイ、同期、または実行します。

  14. ブラウザーまたは Postman などのアプリケーションから URL ​http://url.for.your.app:8081/incident/get​ を開いて、アプリケーションをテストします。

    応答は次の例のようになります (簡潔にするため、いくつかの項目が省略されています)。

<getRecordsResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <getRecordsResult>
    <active>1</active>
    <additional_assignee_list/>
    <approval>not requested</approval>
    <business_stc>0</business_stc>
    <calendar_duration/>
    <calendar_stc>0</calendar_stc>
    <caller_id>6816f79cc0a8016401c5a33be04be441</caller_id>
    <category>inquiry</category>
    <escalation>0</escalation>
    <knowledge>0</knowledge>
    <made_sla>1</made_sla>
    <notify>1</notify>
    <number>INC0021195</number>
    <opened_at>2017-07-27 03:13:54</opened_at>
    <opened_by>6816f79cc0a8016401c5a33be04be441</opened_by>
    <order>0</order>
    <priority>5</priority>
    <short_description>Server outage</short_description>
    <state>1</state>
    <sys_class_name>incident</sys_class_name>
    <sys_created_by>admin</sys_created_by>
    <sys_created_on>2017-07-27 03:14:52</sys_created_on>
    <sys_domain>global</sys_domain>
  </getRecordsResult>
</getRecordsResponse>

ServiceNow インシデントテーブルからのレコードの取得

この例では、​Incident​ テーブルからレコードを取得するための Mule フローを Studio で作成します。次のスクリーンショットは、この例の Studio アプリケーションフローを示しています。

ServiceNow フロー - インシデント取得レコード
Figure 1. レコードの取得の例のアプリケーションフロー
  1. Studio で Mule プロジェクトを作成します。

  2. 次のパスを使用して、フローの ​HTTP リスナー​トリガーを追加して設定します。

    getrecords

    getrecords に設定するパスを使用した HTTP リスナーの一般設定
  3. HTTP Connector の後に ​Transform Message​ コンポーネントを追加して、次のような変換スクリプトを提供します。

    %dw 2.0
    output application/xml
    ns ns0 http://www.service-now.com/incident
    ---
    {
    	ns0#getRecords: {
    		ns0#description: 'Test WSDL QA'
    	}
    }
    ServiceNow インシデントテーブルのレコードに一致する記述を追加します。
  4. Transform​ コンポーネントの後に ServiceNow からの ​Invoke​ 操作を追加します。

  5. ServiceNow サーバーに接続するための ServiceNow 設定をセットアップし、テストして、保存します。接続に失敗した場合は、無効な接続パラメーターを確認して修正し、もう一度テストを実行してください。

    ServiceNow Studio 接続
    ServiceNow Studio 設定の [Transport] タブ
  6. ナビゲーションの ​[General (一般)]​ タブで ​[Service (サービス)]​ を ​incident​ に設定し、​[Operation (操作)]​ を ​getRecords​ に設定します。

  7. 必要に応じて、値 (​ALL​、​TRUE​、​FALSE​) から ​[Show Reference Values (参照値を表示)]​ を選択します。

    Studio 7.5.0 以降では、​Show Reference Values​ キーを指定せずに ​service​ および ​operation​ キーを選択してメタデータを解決できます。ただし、以前の Studio バージョンでは、すべてのメタデータキーを指定するまではメタデータは読み込まれず、すべてのメタデータキーを指定しないとツール例外が発生します。
    参照値を指定しない場合の Studio 7.5.0 の ServiceNow メタデータ
  8. [Message Body (メッセージ本文)] を ​payload​ に設定します。

  9. Transform Message​ コンポーネントを追加し、​transform XML to JSON​を行って、読みやすさを向上します。次に例を示します。

    %dw 2.0
    output application/json
    ---
    payload
  10. フローの最後に ​payload​ (または ​#[payload]​) をメッセージとして使用する ​Logger​ コンポーネントを追加します。

  11. アプリケーションをデプロイまたは実行します。

  12. http://localhost:8081/getrecords​ に移動してアプリケーションをテストします。

応答は次の例のようになります (簡潔にするため、いくつかの項目が省略されています)。

{
  "headers": {

  },
  "attachments": {

  },
  "body": {
    "getRecordsResponse": {
      "getRecordsResult": {
        "active": "1",
        "activity_due": "2019-09-24 09:48:15",
        "approval": "not requested",
        "business_stc": "0",
        "calendar_stc": "0",
        "category": "Software",
        "child_incidents": "0",
        "description": "Test WSDL QA",
        "escalation": "0",
        "hold_reason": "0",
        "impact": "1",
        "incident_state": "1",
        "knowledge": "0",
        "made_sla": "1",
        "notify": "1",
        "number": "INC0011616",
        "opened_at": "2019-09-20 07:30:34",
        "opened_by": "6816f79cc0a8016401c5a33be04be441",
        "order": "0",
        "priority": "1",
        "reassignment_count": "0",
        "reopen_count": "0",
        "severity": "3",
        "state": "1",
        "sys_class_name": "incident",
        "sys_created_by": "admin",
        "sys_created_on": "2019-09-20 07:30:34",
        "sys_domain": "global",
        "sys_domain_path": "/",
        "sys_id": "c03deab4db840010a0e6e04a48961999",
        "sys_mod_count": "47",
        "sys_updated_by": "system",
        "sys_updated_on": "2019-09-24 07:48:15",
        "upon_approval": "proceed",
        "upon_reject": "cancel",
        "urgency": "1",
      }
    }
  }
}

Show Reference Values​ で ​ALL​ を使用した場合の応答は省略された出力と同じようになり、表示値項目の応答要素名の先頭には ​dv​ が付けられます。

{
  "headers": {

  },
  "attachments": {

  },
  "body": {
    "getRecordsResponse": {
      "getRecordsResult": {
        "active": "1",
        "dv_active": "true",
        "activity_due": "2020-05-07 13:14:19",
        "dv_activity_due": "2020-05-07 06:14:19",
        "additional_assignee_list": null,
        "dv_additional_assignee_list": null,
        "approval": "not requested",
        "dv_approval": "Not Yet Requested",
      }
    }
  }
}

表示値項目の応答要素名の先頭には ​dv​ が付けられます。

詳細は、 「ServiceNow - 表示値」​を参照してください。

ServiceNow インシデントテーブルキーの取得

この例では、ServiceNow インスタンスのインシデントテーブルからキーを取得するための Mule フローを Studio で作成します。

  1. Studio で Mule アプリケーションをプロジェクトとして作成します。

  2. フローの HTTP の ​Listener​ トリガーを追加して設定し、​[Path (パス)]​ を ​/getkeys​ に設定します。

  3. HTTP の ​Listener​ 操作の後に ​Transform Message​ コンポーネントを追加します。

  4. 次のような変換スクリプトを提供します (ServiceNow インシデントテーブルのレコードに一致する記述を使用します)。

    %dw 2.0
    output application/xml
    ns ns0 http://www.service-now.com/incident
    ---
    {
    	ns0#getKeys: {
    		ns0#description: 'Test WSDL QA'
    	}
    }
  5. Transform Message​ コンポーネントの後に ServiceNow の ​Invoke​ 操作を追加します。

  6. ServiceNow サーバーに接続するための ServiceNow 設定をセットアップし、テストして、保存します。接続に失敗した場合は、無効な接続パラメーターを確認して修正し、もう一度テストを実行してください。

  7. [General (一般)]​ タブのナビゲーションで ​[Service (サービス)]​ を ​incident​ に設定し、​[Operation (操作)]​ を ​getKeys​ に設定します。

  8. [Message Body (メッセージ本文)] を ​payload​ に設定します。

  9. Transform Message​ コンポーネントを追加し、XML から JSON への変換を行って、読みやすさを向上します。次に例を示します。

    %dw 2.0
    output application/json
    ---
    payload
  10. フローの最後に ​payload​ (または ​#[payload]​) をメッセージとして使用する ​Logger​ コンポーネントを追加します。

  11. アプリケーションをデプロイまたは実行します。

  12. アプリケーションをテストするため、​http://localhost:8081/getkeys​ に移動します。

  13. 応答は次のようになります。

    {
      "headers": {
    
      },
      "attachments": {
    
      },
      "body": {
        "getKeysResponse": {
          "sys_id": "c03deab4db840010a0e6e04a48961999,0f517ab8db840010a0e6e04a489619bc,6f1236f8db840010a0e6e04a489619f5",
          "count": "3"
        }
      }
    }