Para continuar com o fluxo de trabalho de exemplo, é preciso configurá-lo.
A configuração do bloco pode ser acessada clicando em Editar parâmetros na guia ou clicando com o botão direito no bloco e selecionando Editar parâmetros para abrir a janela . Assim que um bloco tiver parâmetros, o botão muda para .
Para configurar os blocos para o exemplo, siga estas etapas:
-
Abra a janela para a ação
.Listar localidades
-
Os campos e exigirão valores dinâmicos que são resolvidos em tempo de execução.
-
Clique no ícone de vínculo
do campo e selecione a ação
.Buscar tokens de acesso
O link fica verde e o campo pode ser editado.
-
A sintaxe para acessar as propriedades de um gatilho ou ação referenciado é:
{{$.path.to.value}}A saída da ação
é:Buscar tokens de acesso
{ "tokens": {"strings_token": "STRINGS_TOKEN", "tms_token": "TMS_TOKEN"} }Portanto, a expressão necessária para o campo é
{{$.tokens.strings_token}}. -
Clique no ícone de vínculo
do campo e selecione o gatilho
.uploads:create
O link fica verde e o campo pode ser editado.
-
A saída do gatilho
é semelhante a:uploads:create
{ "branch": { "name": "my_branch" }, "event": "uploads:create", "message": "user-1 initialized file upload file.yml in project name_1672734591_11 within branch my_branch\n", "project": { "created_at": "2023-01-03 08:29:51 UTC", "id": "abcdabcdabcdabcd-11", "main_format": "yml", "name": "name_1672734591_10", "point_of_contact": null, "project_image_url": null, "slug": "name_1672734591_10", "updated_at": "2023-01-03 08:29:51 UTC" }, "upload": { "created_at": "2023-01-03 08:29:48 UTC", "filename": "file.yml", "format": "yml", "id": "upload-1", "state": "initialized", "summary": {}, "tag": null, "updated_at": "2023-01-03 08:29:48 UTC" }, "user": { "gravatar_uid": "29a2d1baa67d4ea524cf0f247f7bbb94", "id": "9c365b9a6f77c247c3de959f6152b231", "name": "Joe Sixpack", "username": "user-1" } }Portanto, a expressão necessária para o campo é
{{$.project.id}}. -
Clique em Gravar.
A janela fecha e os parâmetros da ação são salvos
-
-
A localidade padrão do projeto é necessária para criar um trabalho passando o ID para a ação
. A açãoCriar trabalho
recebe uma entrada JSON, aplica o filtro especificado e, em seguida, gera JSON novamenteTransformar JSON com jq
-
Na guia da janela , pesquise por phrase-jq.
Arraste e solte o bloco de ação
abaixo da açãoTransformar JSON com jq
para conectá-los.listar localidades
-
Abra a janela para a ação
Transformar JSON com jq. -
Selecione no campo suspenso .
-
Clique no ícone de vínculo
do campo e selecione a ação
.listar localidades
O link fica verde e o campo pode ser editado.
-
O campo recebe a entrada JSON. Uma expressão fixa especial (
@em vez de$) garante que toda a saída da ação referenciada seja passada para o campo.Insira a expressão
{{@.outputs.result}}no campo . -
Clique no ícone de vínculo
do campo e selecione a ação
.listar localidades
O link fica verde e o campo pode ser editado.
-
É necessário um filtro da lista de localidades que retorne uma nova lista contendo todos os elementos em que a propriedade
defaultsejatrue.Pode haver apenas uma localidade padrão por projeto e a lista possui um elemento identificável e obrigatório. Esse elemento é acessado diretamente com a sintaxe de array
.[0].Insira a expressão
map(select(.default))|.[0]no campo . -
Clique em Gravar.
A janela fecha e os parâmetros da ação são salvos
-
-
A ação
agora pode ser configurada e usará padrões de blocos anteriores.Criar trabalho
-
Clique no ícone de vínculo
do campo e selecione a ação
.Buscar tokens de acesso
O link fica verde e o campo pode ser editado.
Insira a expressão
{{$.tokens.strings_token}}. -
Clique no ícone de vínculo
do campo e selecione o gatilho
.uploads:create
O link fica verde e o campo pode ser editado.
Insira a expressão
{{$.project.id}}. -
Clique no ícone de link
do campo e selecione a ação
Transform JSON with jq.O link fica verde e o campo pode ser editado.
Insira a expressão
{{@.outputs.result}}. -
A data de vencimento pode ser calculada com funções sprig ou Expr, mas, para fins deste exemplo, será usada uma data fixa reconhecida pela API.
No campo , insira 2023-12-31T12:00:00Z.
-
Clique em Gravar.
A configuração é salva e os detalhes podem ser visualizados na aba .
-
-
Cada ação pode ter uma ou mais condições combinadas com os operadores lógicos
ANDeOR. Essas condições são avaliadas em tempo de execução, e a ação e suas ações subordinadas só serão executadas se a condição for avaliada como verdadeira.Para refletir isso no exemplo, com a ação
selecionada, clique em Edit conditions na aba ou clique com o botão direito no bloco e selecione Edit conditions.Create a job
A janela é aberta.
-
Seguindo os padrões dos blocos anteriores, vincule o campo ao gatilho
e insira a expressãouploads:create
{{$.upload.tag}}. -
Selecione NOT na primeira lista suspensa para inverter a condição.
-
Selecione IsNull na lista suspensa .
-
Clique em Gravar.
A condição é apresentada na aba .
O fluxo de trabalho será interrompido neste ponto se o upload não contiver uma tag (o que significa que não houve novas chaves/traduções ou chaves/traduções atualizadas).
-
-
As localidades de destino agora são obrigatórias para o trabalho. Para fins deste exemplo, duas localidades serão criadas; uma para espanhol (es-ES) e outra para alemão (de-DE). As localidades serão adicionadas às duas ações
na janela , como na etapa 3.Transform JSON with jq
-
No campo de ambas as ações, insira a expressão
{{@.outputs.result}}, vincule à açãoe salve o parâmetro.List locales
-
No campo de uma ação, insira a expressão
map(select(.name == "es-ES"))|.[0]e vincule à ação.List locales
Salve o parâmetro.
-
Na segunda ação, insira a expressão
map(select(.name == "de-DE"))|.[0]e vincule à ação.List locales
Salve o parâmetro.
-
-
As localidades agora serão aplicadas à criação do trabalho.
Configure as duas ações
seguindo os mesmos padrões definidos anteriormente.Add a target locale to a job
-
O trabalho agora pode ser iniciado.
Configure a ação
seguindo os mesmos padrões definidos anteriormente.Start a job
Após a configuração dos blocos, o fluxo de trabalho pode ser executado sob demanda para testá-lo sem esperar que seu gatilho seja acionado, seja ele um agendamento ou um webhook.
Inicie uma execução de uma destas maneiras:
-
No editor de fluxo de trabalho, use o botão Run para abrir a caixa de diálogo .
-
Envie uma solicitação
POSTpara/orchestrator/api/v1/workflows/{workflow_id}/executionsna API pública.
Uma execução sempre usa a revisão mais recente do fluxo de trabalho. A revisão não precisa ser publicada, mas deve passar na validação de publicação. Cada vez que o fluxo de trabalho é executado, uma nova execução é criada e listada na página com a tag Manual.
Nota
As execuções sob demanda estão disponíveis apenas para fluxos de trabalho no mecanismo de fluxo de trabalho de próxima geração. Para fluxos de trabalho legados, o botão Run não é exibido no editor, e a API retorna um erro 422.
Pacotes de ações e modelos não podem ser executados, e o fluxo de trabalho deve ter um proprietário.