---
sourceDocument: Gestion des services IT Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/it-service-management

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Gestion des services IT Xanadu

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# Création de DevOps flux secondaires

# Création de DevOps flux secondaires {#ariaid-title1}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 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 de l'outil que vous intégrez.

ServiceNow [Flow Designer](https://www.servicenow.com/docs/access?context=flow-designer&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US) est une Now 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 des informations entre les actions.

Pour en savoir plus sur la création d'un flux secondaire, consultez [Flow Designer](https://www.servicenow.com/docs/access?context=flow-designer&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US) [Flux](https://www.servicenow.com/docs/access?context=subflows&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US) secondaires.

## Flux secondaire d'aptitude de notification {#creating-dev-ops-subflows__section_ep4_txg_w3b}

{#creating-dev-ops-subflows__table_hbx_dn1_1kb__entry__2}

| Élément | Valeur attendue |
|-|-|
| Entrées | Étiquette : actuelle Type : Reference.Événement entrant |
| Sorties | N/A |
[ ]

{#creating-dev-ops-subflows__table_hbx_dn1_1kb}

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

Charge utile attendue de l'aptitude 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 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"
        }

Charge utile attendue de l'aptitude 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"
            }
          ]
        }
         
JSON standard attendu Charge utile de l'aptitude de notification : 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

## Connecter le flux secondaire d'aptitude {#creating-dev-ops-subflows__section_tkj_jzf_1kb}

L'option Connexion est prise en charge.  
{#creating-dev-ops-subflows__table_xys_nm1_1kb__entry__2}

| Élément | Valeur attendue |
|-|-|
| Entrées | Étiquette : actuelle Type : outil Référence.DevOps Enregistrement d'outil pour lequel l'action du bouton Connecter est sélectionnée. |
| Sorties Voir [les sorties de flux secondaire](https://www.servicenow.com/docs/access?context=subflows&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US). | * Étiquette : connectéMarqueur indiquant la réussite ou l'échec de la connexion établie à l'outil cible (vrai/faux). * Étiquette : errormessageMessage 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. {#creating-dev-ops-subflows__ul_v5t_sm1_1kb} |
[ ]

{#creating-dev-ops-subflows__table_xys_nm1_1kb}  
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 de connexion : Outil d'orchestration

## Détecter le flux secondaire d'aptitude {#creating-dev-ops-subflows__section_sgn_lzf_1kb}

L'option de détection est prise en charge.  
{#creating-dev-ops-subflows__table_acq_yj1_1kb__entry__2}

| Élément | Valeur attendue |
|-|-|
| Entrées | Étiquette : actuelle Type : outil Référence.DevOps |
| Sorties Voir [les sorties de flux secondaire](https://www.servicenow.com/docs/access?context=subflows&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US). | Sans pagination : Étiquette : discoverpayload Type : tableau d'objets sous forme de chaîne JSON. <kbd class="ph userinput">(JSON.stringify([{},{}]))</kbd> 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. <kbd class="ph userinput">(JSON.stringify([{},{}]))</kbd> 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 } } } |
[ ]

{#creating-dev-ops-subflows__table_acq_yj1_1kb}  
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.{#creating-dev-ops-subflows__table_pjc_x5t_jkb__entry__2}

| État | Message |
|-|-|
| Demandé | -- |
| En cours de traitement | -- |
| Terminé | Mis à jour \<numéro\> objet(s) Objets \<number\> trouvés avec toolId non valide Échec de la validation des objets \<nombre\> trouvés |
| 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. {#creating-dev-ops-subflows__ul_tf3_vvt_jkb} |
| En pause | -- |
| Annulé | -- |
| Sans correspondance | -- |
[ ]

{#creating-dev-ops-subflows__table_pjc_x5t_jkb}  
Figure 3. DevOps Exemple de diagramme de flux d'aptitude de détection : outil de planification  
Figure 4. DevOps Détecter l'aptitude avec le diagramme de flux de prise en charge de la pagination

## Mettre à jour l'action de demande Studio de workflow d'importation {#creating-dev-ops-subflows__section_tns_mzf_1kb}

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.  
{#creating-dev-ops-subflows__table_ncn_xs1_1kb__entry__2}

| Étiquette d'entrée | Type |
|-|-|
| current | Demande d'importation Reference.Reference |
| É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 {#creating-dev-ops-subflows__ul_kbx_yt1_1kb} |
| Détails | (Chaîne) |
[ ]

{#creating-dev-ops-subflows__table_ncn_xs1_1kb}

