Créer des flux secondaires DevOps

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 5 minutes de lecture
  • Dans le cadre d'intégrations créées par les utilisateurs, créez un flux secondaire DevOps Studio de workflow pour collecter et transformer les données de l'outil que vous intégrez.

    ServiceNow Flow Designer est une fonctionnalité ServiceNow AI Platform que votre développeur d'intégration peut utiliser pour automatiser les processus à l'aide d'une séquence d'actions. Les conditions de déclenchement démarrent le flux et les variables transmettent des informations entre les actions.

    Pour en savoir plus sur la création d'un flux secondaire, consultez Flow Designer Flux secondaires.

    Flux secondaire de fonctionnalité de notification

    Élément Valeur attendue
    Entrées

    Libellé : actuel

    Type : événement Reference.Inbound

    Sorties

    N/A

    Transformez la charge utile d'origine et enregistrez la charge utile finale dans le champ transformed_payload.

    Charge utile attendue de la fonctionnalité de notification JSON standard - Outil de planification
    Remarque :
    L'attribut de version de la charge utile JSON est facultatif. Même si vous ne fournissez pas l'attribut de version, la charge utile est correctement traitée.
    {
      "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"
    }
    Charge utile attendue de la fonctionnalité de notification JSON standard - Outil de codage
    {
      "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"
        }
      ]
    }
     
    Charge utile attendue de la fonctionnalité de notification JSON standard - Outil d'orchestration
    {
      "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"
    }
    
    Charge utile attendue de la fonctionnalité de notification JSON standard - Outil de test
    Fonctionnel :
    { 
    "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", 
    } 
    
    Performances :
    { 
    "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", 
    } 
    
    Charge utile attendue de la fonctionnalité de notification JSON standard - Outil d'artefact
    Pipelines :
    {
      "artifacts": [
        {
          "name": "acm.jar",
          "version": "1.82",
          "semanticVersion": "1.82.0",
          "repositoryName": "acm-repo"
        }
      ],
      "pipelineName": "testMultiBranch/master",
      "taskExecutionNumber": "82",
      "stageName": "buildmbmaster",
      "branchName": "master"
    }
    
    Jenkins Projet Freestyle/Maven :
    {
      "artifacts": [
        {
          "name": "mav1.jar",
          "version": "1.11",
          "semanticVersion": "1.11.0",
          "repositoryName": "mav-repo"
        }
      ],
      "projectName": "maven-test-proj",
      "taskExecutionNumber": "11"
    }
    
    Figure 1. DevOps Exemple de diagramme de flux de fonctionnalité de notification - Outil de codage
    Flux de l'outil de codage de notification DevOps

    Flux secondaire de la fonctionnalité de connexion

    La fonctionnalité de connexion est prise en charge.

    Élément Valeur attendue
    Entrées

    Libellé : actuel

    Type : outil Reference.DevOps

    Enregistrement d'outil pour lequel l'action du bouton Connecter est sélectionnée.

    Sorties

    Consultez sorties de flux secondaire.

    • Libellé : connecté

      Marqueur indiquant la réussite ou l'échec de la connexion établie à l'outil cible (true/false).

    • Libellé : errormessage

      Message de chaîne affiché sur le formulaire en cas d'échec de connexion. La variable est une chaîne vide si la connexion réussit.

    Erreurs de connexion affichées sur le formulaire d'outil DevOps :
    Échec de la connexion
    Le flux secondaire a été exécuté, mais la connexion n'a pas pu être établie.
    Erreur : Échec de l'obtention des détails de l'erreur à partir du flux de connexion propre à l'outil
    L'exécution du flux secondaire a échoué pour une raison inconnue.
    Erreur de mise à jour de l'état de connexion de l'outil.
    L'attribut connection_state n'a pas pu être mis à jour pour une raison inconnue.
    Figure 2. DevOps Exemple de diagramme de flux de fonctionnalité de connexion - Outil d'orchestration
    Connecter l'outil d'orchestration DevOps

    Flux secondaire de la fonctionnalité de détection

    La fonctionnalité de détection est prise en charge.

    Élément Valeur attendue
    Entrées

    Libellé : actuel

    Type : outil Reference.DevOps

    Sorties

    Consultez sorties de flux secondaire.

    Sans pagination :

    Libellé : discoverpayload

    Type : tableau d'objets sous forme de chaîne JSON.

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

    Outil de planification sans pagination :

    [
    {
       "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"
    }
    ]
    Outil de codage sans pagination :
    [
      {
          "name": "nvm_repo",
          "url": "https://github.com/nvm_repo/"
      },
      {
          "name": "golang_util",
          "url": "https://github.com/golang_util/"
      }
    ];
    Outil d'orchestration sans pagination :
    {
      "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"
        }
      ]
    }

    Avec pagination :

    Libellé : discoverpayload

    Type : tableau d'objets sous forme de chaîne JSON.

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

    Exemple de format JSON :

    "pageInfo" : {
        "isLastPage" : true, 
        "discoverPayload" : {},
        “pageDetails” : {}
    }
    Outil de planification avec pagination :
    {               
        "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
            }
        }
    }
    Outil de codage avec pagination :
    {
        "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
            }
        }
    }
    Outil d'orchestration avec pagination :
    { 
        "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 
            } 
        } 
    } 
    Le flux principal de détection est déclenché lors de la création d'un enregistrement de demande d'importation. Une demande d'importation comporte ces états et messages.
    État Message
    Demandé ::
    Traitement ::
    Terminé

    <number> objet(s) mis à jour

    <number> objets trouvés ayant un toolId non valide

    <number> objets trouvés dont la validation a échoué

    Erreur
    • Impossible d'analyser la chaîne de charge utile à partir du flux secondaire
    • discoverpayload est censé être un tableau d'objets
    • L'enregistrement ImportRequest n'a pas de référence à la table d'outils.
    En pause ::
    Annulé ::
    Sans correspondance ::
    Figure 3. DevOps Exemple de diagramme de flux de fonctionnalité de détection - Outil de planification
    Flux d'outils de plan de détection DevOps
    Figure 4. DevOps Diagramme de flux de prise en charge de la fonctionnalité de détection avec pagination
    Diagramme de flux d’un flux de découverte classique avec prise en charge de la pagination

    Action Studio de workflow Mettre à jour la demande d'importation

    Vous pouvez utiliser l'action Mettre à jour la demande d'importation dans votre flux secondaire de détection pour modifier l'état de l'enregistrement de la demande d'importation, si vous le souhaitez.

    Étiquette d'entrée Type
    current

    Demande Reference.Import

    État (Chaîne)
    • demandé
    • traitement
      Remarque :
      L'exécution du flux s'arrête (une fois le retour reçu du flux secondaire) lorsque l'état est défini sur Traitement.
    • terminé
    • erreur
    • en pause
    • annulé
    • unmatched
    Détails (Chaîne)