DevOpsサブフローの作成

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:16分
  • ユーザーが作成した統合の場合は、統合するツールからデータを収集して変換するための DevOps ワークフロースタジオ サブフローを作成します。

    ServiceNow Flow Designer は、統合開発者が一連のアクションを使用してプロセスを自動化するために使用できる Now Platform 機能です。トリガー条件によってフローが開始され、変数によってアクション間で情報が渡されます。

    サブフローの作成方法については、「 Flow Designer サブフロー 」を参照してください。

    通知機能サブフロー

    アイテム 予想値
    入力

    ラベル:current

    タイプ:Reference.Inbound イベント

    出力

    N/A (該当なし)

    元のペイロードを変換し、最終的なペイロードを [transformed_payload ] フィールドに保存します。

    想定される標準 JSON 通知機能ペイロード:計画立案ツール
    注:
    JSON ペイロードのバージョン属性はオプションです。version 属性を指定しない場合でも、ペイロードは正常に処理されます。
    {
      "id": "STR1234",
      "type": "Story",
      "shortDescription": "Planning API Spec",
      "state": "In-progress",
      "createdDateTime": "1970-01-01T08:15:30-05:00",
      "assignedTo": {
        "name": "Leo Neo",
        "userName": "lenn",
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "email": "lenn@smithworksinc.com"
      },
    // The Version attribute is optional
      "version": {
          "id": "REL1234",
          "shortDescription": "APIs Release",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "app": {
              "id": "PRODUCT1234",
              "shortDescription": "Mobile UI",
              "createdDateTime": "1970-01-01T08:15:30-05:00",
              "url": "https://jira.com/mycompany/browse/PRODUCT-125"
            },
          "url": "https://jira.com/mycompany/browse/REL-125"
        },
      "app": {
          "id": "PRODUCT1234",
          "shortDescription": "Mobile UI",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "url": "https://jira.com/mycompany/browse/PRODUCT-125"
        },
      "url": "https://jira.com/mycompany/browse/HALOKEY-25"
    }
    想定される標準 JSON 通知機能ペイロード:コーディングツール
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6",
      "committedDate": "1970-01-01T08:15:30-05:00",
      "repository": {
        "name": "Platform-Mobile",
        "url": "https://github.com/mycompany/mobileplatform"
      },
     "branch": {
        "name": "master",
        "path": "refs/heads/master"
      },
      "committer": {
        "email": "lenn@smithworksinc.com"
      },
      "details": [
        {
          "additions": 0,
          "deletions": 0,
          "totalChanges": 0,
          "file": "src/test/java/com/mycompany/app/App.java",
          "action": "modified",
          "changes": "%40%40%20-30%2C6%20%2B30%2C18%20%40%40%20public%20void%20testAppConstructor%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%20%0A%2B%20%20%20%20%40Test%0A%2B%20%20%20%20public%20void%20testDatabase%28%29%0A%2B%20%20%20%20%7B%0A%2B%09%2F%2FThis%20is%20a%20test%20function%0A%2B%20%20%20%20%20%20%20%20App.main%28null%29%3B%0A%2B%20%20%20%20%20%20%20%20try%20%7B%0A%2B%20%20%20%20%20%20%20%20%20%20%20%20assertEquals%28%22Hello%20World%21%22%20%2B%20System.getProperty%28%22line.separator%22%29%2C%20outContent.toString%28%29%29%3B%0A%2B%20%20%20%20%20%20%20%20%7D%20catch%20%28AssertionError%20e%29%20%7B%0A%2B%20%20%20%20%20%20%20%20%20%20%20%20fail%28%22%22message%22%20is%20not%20%22Hello%20World%21%22%22%29%3B%0A%2B%20%20%20%20%20%20%20%20%7D%0A%2B%20%20%20%20%7D%0A%2B%0A%20%20%20%20%20%40Test%0A%20%20%20%20%20public%20void%20testAppMain%28%29%0A%20%20%20%20%20%7B"
        }
      ]
    }
     
    想定される標準 JSON 通知機能ペイロード:オーケストレーションツール
    {
      "toolId": "bc1d9454dbdb0810ae77f3c61d9619d1",
      "buildNumber": "100",
      "nativeId": "HILR/Prod #100",
      "name": "HILR/Prod",
      "id": "HILR/Prod #100",
      "url": "https://dev.azure.com/lenn/CorpSite-ADO/_build/results?buildId=100#Prod/",
      "isMultiBranch": "false",
      "orchestrationTaskUrl": "https://dev.azure.com/lenn/CorpSite-ADO/_build?name=HILR#Prod",
      "orchestrationTaskName": "CorpSite-ADO/HILR#Prod",
      "upstreamTaskUrl": "https://dev.azure.com/lenn/CorpSite-ADO/_build/results?buildId=100#UAT/",
      "upstreamId": "CorpSite-ADO/HILR#UAT",
      "result": "building",
      "startDateTime": "2020-03-20 22:59:27"
    }
    
    想定される標準 JSON 通知機能ペイロード:テストツール
    機能的な:
    { 
    "name": "CorpSite-selenium#55", 
    "duration": 78.802, 
    "passedTests": 4, 
    "failedTests": 0, 
    "skippedTests": 0, 
    "blockedTests": 0, 
    "totalTests": 4, 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "passingPercent": 100, 
     
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-selenium", 
    } 
    
    パフォーマンス:
    { 
    "name": "Performance Tests", 
    "url": "http://abc.com", 
    "startTime": "2020-06-30T18:12:31Z", 
    "finishTime": "2020-06-30T18:12:31Z", 
    "duration": 78.802, 
    "maximumVirtualUsers": "", 
    "throughput": "", 
    "maximumTime": "", 
    "minimumTime": "", 
    "averageTime": "", 
    "ninetyPercent": "", 
    "standardDeviation": "", 
     
    // Use Artifact OR Package OR Build + Stage + PipelineName Attributes 
    "packages": [{"name": "CorpSite-pkg1"}], 
    "artifacts": [{"name": "CorpSite-artifact", "version": "1.0.0"}], 
    "buildNumber": "55", 
    "stageName": "test", 
    "pipelineName": "CorpSite-Performance", 
    } 
    
    想定される標準 JSON 通知機能ペイロード:アーティファクトツール
    パイプライン:
    {
      "artifacts": [
        {
          "name": "acm.jar",
          "version": "1.82",
          "semanticVersion": "1.82.0",
          "repositoryName": "acm-repo"
        }
      ],
      "pipelineName": "testMultiBranch/master",
      "taskExecutionNumber": "82",
      "stageName": "buildmbmaster",
      "branchName": "master"
    }
    
    Jenkins Freestyle / Mavenプロジェクト:
    {
      "artifacts": [
        {
          "name": "mav1.jar",
          "version": "1.11",
          "semanticVersion": "1.11.0",
          "repositoryName": "mav-repo"
        }
      ],
      "projectName": "maven-test-proj",
      "taskExecutionNumber": "11"
    }
    
    図 : 1. DevOps 通知機能のフロー図の例 - コーディングツール
    DevOps 通知コーディングツールフロー

    コネクト機能サブフロー

    コネクト機能がサポートされています。

    アイテム 予想値
    入力

    ラベル:current

    タイプ:Reference.DevOps ツール

    [接続] ボタンアクションがクリックされたツールレコード。

    出力

    サブフロー出力を参照してください。

    • ラベル: connected

      ターゲット ツールへの接続の成功または失敗を示すフラグ (true/false)。

    • ラベル:errormessage

      接続エラーのフォームに表示される文字列メッセージ。接続が成功した場合、変数は空の文字列になります。

    DevOpsツールフォームに表示された接続エラー:
    接続失敗
    サブフローは正常に実行されましたが、接続を確立できませんでした。
    エラー:ツール固有の接続フローからエラーの詳細を取得できませんでした
    不明な理由でサブフローの実行に失敗しました。
    ツール接続ステータスの更新中にエラーが発生しました
    connection_state属性は不明な理由で更新できませんでした。
    図 : 2. DevOps コネクト機能のフロー図の例 - オーケストレーションツール
    DevOps コネクトオーケストレーションツール

    検出機能サブフロー

    検出機能がサポートされています。

    アイテム 予想値
    入力

    ラベル:current

    タイプ:Reference.DevOps ツール

    出力

    サブフロー出力を参照してください。

    ページネーションなし:

    ラベル: discoverpayload

    タイプ:JSON 文字列としてのオブジェクトのアレイ。

    (JSON.stringify([{},{}]))

    ページネーションのない計画立案ツール:

    [
    {
       "id":"REL1234567",
       "name": "REL NUMBERS",
       "url":"https://jira.com/vult/browse/REL1234567",
       "nativeId": "1790e6cc-085b-4529-9cb8-47f393182226"
    },
    {
       "id":"TOR67",
       "name": "TOR 67",
       "url":"https://jira.com/welp/browse/TOR67",
       "nativeId": "482ce864-085b-4529-9cb8-47f393767eb2"
    }
    ]
    ページネーションのないコーディングツール:
    [
      {
          "name": "nvm_repo",
          "url": "https://github.com/nvm_repo/"
      },
      {
          "name": "golang_util",
          "url": "https://github.com/golang_util/"
      }
    ];
    ページネーションのないオーケストレーションツール:
    {
      "orchestrationTasks": [
        {
          "name": "Build_APC_1",
          "url": "https://jenkins.wsf.xyz/job/Build_APC_1",
          "projectName": "Build_APC_1"
        },
        {
          "name": "CI_CD_Jenkins",
          "url": "https://pt1.jenkins.com/job/CI_CD_Jenkins",
          "projectName": "CI_CD_Jenkins"
        },
        {
          "name": "CI_deploy",
          "url": "https://pt2.jenkins.com/job/CI_deploy",
          "projectName": "CI_deploy"
        }
      ],
      "pipelines": [
        {
          "name": "Build_APC_1",
          "url": "https://jenkins.wsf.xyz/job/Build_APC_1",
          "projectName": "Build_APC_1"
        },
        {
          "name": "CI_CD_Jenkins",
          "url": "https://pt1.jenkins.com/job/CI_CD_Jenkins",
          "projectName": "CI_CD_Jenkins"
        },
        {
          "name": "CI_deploy",
          "url": "https://pt2.jenkins.com/job/CI_deploy",
          "projectName": "CI_deploy"
        }
      ]
    }

    ページネーションあり:

    ラベル: discoverpayload

    タイプ:JSON 文字列としてのオブジェクトのアレイ。

    (JSON.stringify([{},{}]))

    サンプル JSON 形式:

    "pageInfo" : {
        "isLastPage" : true, 
        "discoverPayload" : {},
        “pageDetails” : {}
    }
    ページネーション付きの計画立案ツール:
    {               
        "pageInfo": {
            "isLastPage": false,
            "discoverPayload": [
                {
                   "id":"REL1234567",
                   "name": "REL NUMBERS",
            "url":"https://jira.com/vult/browse/REL1234567",
                   "nativeId": "1790e6cc-085b-4529-9cb8-47f393182226"
                },
                {
                   "id":"TOR67",
                   "name": "TOR 67",
                   "url":"https://jira.com/welp/browse/TOR67",
                   "nativeId": "482ce864-085b-4529-9cb8-47f393767eb2"
                }
                ],
            "pageDetails": {
                "curPage" : 1,
                "nextPage": 2
            }
        }
    }
    ページネーションを使用したコーディングツール:
    {
        "pageInfo": {
            "isLastPage": false,
            "discoverPayload": [
                {
                    "name": "nvm_repo",
                    "url": "https://github.com/nvm_repo/"
                },
                {
                    "name": "golang_util",
                    "url": "https://github.com/golang_util/"
                }
            ],
            "pageDetails": {
                "curPage" : 1,
                "nextPage": 2
            }
        }
    }
    ページネーションを使用したオーケストレーションツール:
    { 
        "pageInfo": { 
            "isLastPage": false, 
            "discoverPayload": { 
                "orchestrationTasks": [ 
                  { 
                    "name": "Build_APC_1", 
                    "url": "https://jenkins.wsf.xyz/job/Build_APC_1", 
                    "projectName": "Build_APC_1" 
                  }, 
                  { 
                    "name": "CI_CD_Jenkins", 
                    "url": "https://pt1.jenkins.com/job/CI_CD_Jenkins", 
                    "projectName": "CI_CD_Jenkins" 
                  } 
                ], 
                "pipelines": [ 
                  { 
                    "name": "Build_APC_1", 
                    "url": "https://jenkins.wsf.xyz/job/Build_APC_1", 
                    "projectName": "Build_APC_1" 
                  } 
                ] 
              }, 
            "pageDetails": { 
                "curPage" : 1, 
                "nextPage": 2 
            } 
        } 
    } 
    検出メインフローは、インポート要求レコードの作成時にトリガーされます。インポート要求には、次の状況とメッセージがあります。
    状況 メッセージ
    要求済み --
    処理中 --
    完了

    <番号> オブジェクトが更新されました

    無効な toolId を持つ <number> オブジェクトが見つかりました

    <number> オブジェクトが見つかりました。検証に失敗しました

    エラー
    • サブフローからペイロード文字列を解析できません
    • discoverpayload はオブジェクトのアレイであることが想定されています
    • ImportRequest レコードには、ツールテーブルへの参照がありません
    一時停止 --
    キャンセル済み --
    不一致 --
    図 : 3. DevOps Discover 機能フロー図の例 - 計画立案ツール
    DevOps 計画ツールフローを検出
    図 : 4. DevOps ページネーションサポートによる機能のディスカバリーフロー図
    ページネーションをサポートする標準的な検出フローのフロー図

    インポート要求 ワークフロースタジオ アクションを更新

    必要に応じて、検出サブフローの [インポート要求の更新] アクションを使用して、インポート要求レコードのステータスを変更できます。

    入力ラベル タイプ
    current

    Reference.Import Request

    状況 (文字列)
    • requested (要求済み)
    • 処理中
      注:
      ステータスが処理中に設定されている場合、フローの実行は停止されます (サブフローからリターンを受信した後)。
    • 完了
    • エラー
    • 一時停止
    • キャンセル
    • 進行中
    details (文字列)