Criando DevOps subfluxos

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 5 min. de leitura
  • Para integrações criadas pelo usuário, crie um DevOps Workflow Studio subfluxo para coletar e transformar dados da ferramenta que você está integrando.

    ServiceNow Flow Designer. ServiceNow AI Platform recurso que seu desenvolvedor de integração pode usar para automatizar processos usando uma sequência de ações. As condições do gatilho iniciam o fluxo e as variáveis passam informações entre as ações.

    Consulte Flow Designer Subfluxos para obter informações sobre como criar um subfluxo.

    Subfluxo de capacidade de notificação

    Item Valor esperado
    Entradas

    Rótulo: Atual

    Tipo: Evento reference.Inbound

    Saídas

    N/D

    Transforme a carga original e salve a carga final em transformed_payload campo.

    Carga de capacidade de notificação JSON padrão esperada - Ferramenta de planejamento
    Nota:
    O atributo de versão na carga JSON é opcional. Mesmo que você não forneça o atributo de versão, a carga será processada com sucesso.
    {
      "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"
    }
    Carga de capacidade de notificação JSON padrão esperada - Ferramenta de codificação
    {
      "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"
        }
      ]
    }
     
    Carga de capacidade de notificação JSON padrão esperada - Ferramenta de Orquestração
    {
      "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"
    }
    
    Carga de capacidade de notificação JSON padrão esperada - Ferramenta de teste
    Funcional:
    { 
    "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", 
    } 
    
    Desempenho:
    { 
    "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", 
    } 
    
    Carga de capacidade de notificação JSON padrão esperada - ferramenta Artefato
    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 Projeto Freestyle/Maven:
    {
      "artifacts": [
        {
          "name": "mav1.jar",
          "version": "1.11",
          "semanticVersion": "1.11.0",
          "repositoryName": "mav-repo"
        }
      ],
      "projectName": "maven-test-proj",
      "taskExecutionNumber": "11"
    }
    
    Figura 1. DevOps Exemplo de diagrama de fluxo de capacidade de notificação - Ferramenta de codificação
    Fluxo da ferramenta de codificação de notificação do DevOps

    Subfluxo de capacidade do Connect

    O recurso Connect é compatível.

    Item Valor esperado
    Entradas

    Rótulo: Atual

    Tipo: Ferramenta Referência.DevOps

    Registro da ferramenta para o qual Conecte a ação do botão foi clicada.

    Saídas

    Consulte saídas de subfluxo .

    • Rótulo: Conectado

      Sinalizador que indica o sucesso ou a falha da conexão feita com a ferramenta de destino (verdadeiro/falso).

    • Rótulo: errormessage

      Mensagem de cadeia de caracteres exibida no formulário para falha de conexão. Se a conexão for bem-sucedida, a variável será uma cadeia de caracteres vazia.

    Erros de conexão mostrados no DevOps formulário de ferramenta:
    Falha na conexão
    O subfluxo foi executado com sucesso, mas não foi possível estabelecer a conexão.
    Erro: Falha ao obter detalhes da falha do fluxo de conexão específico da ferramenta
    Falha na execução do subfluxo por um motivo desconhecido.
    Erro ao atualizar o status de conexão da ferramenta
    Não foi possível atualizar o atributo connection_state por um motivo desconhecido.
    Figura 2. DevOps Exemplo de diagrama de fluxo de capacidade do Connect - Ferramenta de Orquestração
    Ferramenta de Orquestração do DevOps Connect

    Descobrir subfluxo de capacidade

    O recurso Descoberta é compatível.

    Item Valor esperado
    Entradas

    Rótulo: Atual

    Tipo: Ferramenta Referência.DevOps

    Saídas

    Consulte saídas de subfluxo .

    Sem paginação:

    Rótulo: Carga de descoberta

    Tipo: Matriz de objetos como cadeia de caracteres JSON.

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

    Ferramenta de planejamento sem paginação:

    [
    {
       "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"
    }
    ]
    Ferramenta de codificação sem paginação:
    [
      {
          "name": "nvm_repo",
          "url": "https://github.com/nvm_repo/"
      },
      {
          "name": "golang_util",
          "url": "https://github.com/golang_util/"
      }
    ];
    Ferramenta de Orquestração sem paginação:
    {
      "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"
        }
      ]
    }

    Com paginação:

    Rótulo: Carga de descoberta

    Tipo: Matriz de objetos como cadeia de caracteres JSON.

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

    Formato JSON de amostra:

    "pageInfo" : {
        "isLastPage" : true, 
        "discoverPayload" : {},
        “pageDetails” : {}
    }
    Ferramenta de planejamento com paginação:
    {               
        "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
            }
        }
    }
    Ferramenta de codificação com paginação:
    {
        "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
            }
        }
    }
    Ferramenta de Orquestração com paginação:
    { 
        "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 
            } 
        } 
    } 
    O fluxo principal do Discover é acionado durante a criação do registro de solicitação de importação. Uma solicitação de importação tem estes estados e mensagens.
    Estado Mensagem
    Solicitado(a) --
    Processando --
    Concluído

    Objeto(s) do <number> atualizado(s)

    Objetos <number> encontrados com toolId inválido

    Falha na validação de objetos <number> encontrados

    Erro
    • Não é possível analisar a cadeia de caracteres de carga do subfluxo
    • a carga de descoberta deve ser uma matriz de objetos
    • O registro ImportRequest não tem referência à tabela de ferramentas
    Pausados --
    Cancelado --
    Incompatíveis --
    Figura 3. DevOps Exemplo de diagrama de fluxo de capacidade de descoberta - Ferramenta de planejamento
    Fluxo da ferramenta do plano de descoberta do DevOps
    Figura 4. DevOps Descobrir capacidade com diagrama de fluxo de suporte a paginação
    Fluxograma de um fluxo de descoberta típico com suporte a paginação

    Atualizar solicitação de importação Workflow Studio ação

    Você pode usar a ação Atualizar solicitação de importação no subfluxo Descobrir para modificar o estado do registro Solicitação de importação, se desejado.

    Rótulo de entrada Tipo
    atual

    Solicitação de referência.importação

    estado (Cadeia de caracteres)
    • solicitado
    • processando
      Nota:
      A execução do fluxo é interrompida (depois que o retorno é recebido do subfluxo) quando o estado é definido como Processando.
    • concluído
    • erro
    • pausado
    • cancelado(a)
    • incompatível
    detalhes (Cadeia de caracteres)