Création de DevOps flux secondaires

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 5 minutes de lecture
  • Pour les intégrations créées par les utilisateurs, créez un DevOps Studio de workflow flux secondaire pour collecter et transformer les données à partir de l’outil que vous intégrez.

    ServiceNow Flow Designer est une ServiceNow AI Platform fonctionnalité 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 les informations entre les actions.

    Voir Flow Designer Flux secondaires pour plus d’informations sur la création d’un flux secondaire.

    Flux secondaire de l’aptitude de notification

    Élément Valeur attendue
    Entrées

    Étiquette : actuelle

    Type : Référence.Événement entrant

    Sorties

    N/A

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

    Charge utile de l’aptitude de notification JSON standard attendue : outil de planification
    Remarque :
    L’attribut version dans la charge utile JSON est facultatif. Même si vous ne fournissez pas l’attribut de version, la charge utile est traitée avec succès.
    {
      "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 standard attendu Charge utile de l’aptitude de notification : 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 de l’aptitude de notification JSON standard attendue : 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"
    }
    
    JSON standard attendu Charge utile de l’aptitude de notification : 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", 
    } 
    
    Performance:
    { 
    "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 de l’aptitude de notification JSON standard attendue : 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 d’aptitude de notification - Outil de codage
    Flux d’outils de codage de notification DevOps

    Flux secondaire de l’aptitude de Connexion

    L’aptitude Connect est prise en charge.

    Élément Valeur attendue
    Entrées

    Étiquette : actuelle

    Type : Référence.Outil DevOps

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

    Sorties

    Voir les sorties de flux secondaire.

    • Étiquette : connecté

      Marqueur indiquant la réussite ou l’échec de la connexion établie à l’outil cible (vrai/faux).

    • Étiquette : errormessage

      Message de chaîne affiché sur le formulaire pour l’échec de connexion. La variable est une chaîne vide si la connexion aboutit.

    Erreurs de connexion affichées sur le formulaire d’outil DevOps :
    Échec de la connexion
    Le flux secondaire a été exécuté avec succès, mais la connexion n’a pas pu être établie.
    Erreur : impossible d’obtenir les détails de l’échec à partir du flux de connexion spécifique à 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 d’aptitude Connect : outil d’orchestration
    Connecter l’outil d’orchestration DevOps

    Détecter le flux secondaire d’aptitude

    L’aptitude de détection est prise en charge.

    Élément Valeur attendue
    Entrées

    Étiquette : actuelle

    Type : Référence.Outil DevOps

    Sorties

    Voir les sorties de flux secondaire.

    Sans pagination :

    Étiquette : 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 :

    Étiquette : 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é

    Mis à jour <numéro>objet(s)

    Objets <number> trouvés avec un toolId non valide

    Objets <number> trouvés échec de validation

    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 d’aptitude de détection : outil de planification
    DevOps : découvrir le flux d’outils de plan
    Figure 4. DevOps Détecter l’aptitude avec le diagramme de flux de prise en charge de la pagination
    Diagramme de flux d’un flux de détection typique avec prise en charge de la pagination

    Mettre à jour l’action de demande Studio de workflow 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

    Référence.Demande d’importation

    État (chaîne)
    • Demandé
    • traitement
      Remarque :
      L’exécution du flux est arrêtée (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)