Exercício - Criar um fluxo de trabalho usando funções duráveis
Neste exercício, você usa o cenário de exemplo da unidade anterior para aprender a criar um fluxo de trabalho de aprovação no portal do Azure usando Funções Duráveis.
Criar um aplicativo de função
Entre no portal do Azure usando a mesma conta que usou para ativar o sandbox.
No menu do portal do Azure ou na página Home, em serviços do Azure, selecione Criar um recurso. O painel Criar um recurso é exibido.
Pesquise e selecione Function App. Selecione Consumoe, em seguida, selecione o botão Selecionar. O painel Create Function App aparece.
Na guia Noções básicas do, insira os seguintes valores para cada configuração.
Cenário Valor Descrição Detalhes do Projeto Subscrição Subscrição do Concierge Especifica a assinatura sob a qual esse novo aplicativo de função é criado. Grupo de Recursos Na lista suspensa, selecione [nome do grupo de recursos do sandbox] Especifica o nome do grupo de recursos no qual criar seu aplicativo de função. Criamos o aplicativo de função no grupo de recursos da área restrita que foi atribuído quando ativamos a área restrita, ou seja, [nome do grupo de recursos da área restrita] .Detalhes da instância Função Nome do aplicativo [Nome exclusivo global] Especifica o nome que identifica seu novo aplicativo de função. Os caracteres válidos são a-z
,0-9
e-
.Publicar Código Especifica que a função usa código em vez de um contêiner. Pilha de tempo de execução Node.js Especifica que o código de exemplo neste módulo é escrito em JavaScript. Versão 20 LTS Especifica a versão da stack de tempo de execução. Região [Selecione na lista a seguir a esta secção] Escolha a região mais próxima de você que também é uma das regiões permitidas Sandbox que se seguem. Sistema Operacional Sistema Operativo Windows Especifica o sistema operacional que hospeda o aplicativo de função. Plano A sandbox gratuita permite criar recursos em um subconjunto das regiões globais do Azure. Selecione uma região na lista a seguir ao criar recursos:
- Oeste dos EUA 2
- Centro-Sul dos EUA
- EUA centrais
- Leste dos EUA
- Europa Ocidental
- Sudeste Asiático
- Leste do Japão
- Brasil Sul
- Austrália Sudeste
- Índia Central
Selecione Seguinte : Armazenamento.
Na guia de armazenamento, insira os seguintes valores para cada configuração.
Cenário Valor Descrição Armazenamento Conta de armazenamento [Nome exclusivo global] Especifica o nome da nova conta de armazenamento usada pelo seu aplicativo de função (que não precisa corresponder ao nome globalmente exclusivo que você especificou para sua função). Os nomes das contas de armazenamento devem ter entre 3 e 24 caracteres e podem conter apenas números e letras minúsculas. Esta caixa de diálogo preenche automaticamente o campo com um nome exclusivo que é gerado dinamicamente. No entanto, sinta-se à vontade para usar um nome diferente ou até mesmo uma conta existente. Selecione Seguinte: Rede. Aceite os padrões.
Selecione Seguinte : Monitorização.
Na guia de Monitoramento, insira o seguinte valor para a configuração.
Configuração Valor Descrição Application Insights Habilite o Application Insights Não Especifica que o Application Insights está desabilitado para este módulo. Selecione Rever + criar e reveja as opções que configurou. Se estiver satisfeito com as suas opções, selecione Criar para provisionar e implantar a aplicação de função.
Aguarde a conclusão da implantação antes de continuar. A implantação pode levar alguns minutos.
Instale o pacote npm de funções duráveis
Como estamos criando funções duráveis JavaScript, precisamos instalar o pacote npm durable-functions
. Para fazer isso, execute as seguintes etapas.
Selecione Ir para recurso para selecionar a sua aplicação de funções. O painel do aplicativo de função é exibido.
No painel de navegação esquerdo, em Ferramentas de Desenvolvimento, selecione Editor de Serviço de Aplicações (visualização)e, em seguida, selecione Abrir editor. O Editor do Serviço de Apps na Área de Início Rápido aparece numa nova janela do navegador.
No painel de menu esquerdo, realce a pasta WWWROOT.
No menu esquerdo da barra de ferramentas, selecione o ícone Abrir Console.
Esta ação inicia o console. Você pode usar esse console para acessar o servidor Web que hospeda suas funções e escrever o código para suas funções.
Crie um novo arquivo package.json.
Execute os seguintes comandos no console para criar o novo arquivo JSON e abri-lo no editor.
touch package.json open package.json
Adicione o seguinte código.
{ "name": "example", "version": "1.0.0" }
Substitua
example
pelo nome do seu pacote. Por exemplo, você pode usar o nome globalmente exclusivo que você especificou para sua função anteriormente.
Selecione Ctrl+S para salvar o arquivo e, em seguida, Ctrl+Q para fechar o documento.
Volte para o portal do Azure.
Na barra de menus à esquerda, em Ferramentas de Desenvolvimento, selecione Console. O painel Console aparece para a sua aplicação de função.
Execute o seguinte comando:
npm install durable-functions
Este comando instrui o gerenciador de pacotes do nó a instalar o pacote
durable-functions
e quaisquer dependências necessárias. A instalação pode demorar alguns minutos a concluir, e o gestor de pacotes do Node pode exibir alguns avisos, que podem ser ignorados.Observação
Se você for solicitado a instalar uma versão mais recente do npm, use o comando fornecido no erro para instalar a versão mais recente e, em seguida, instale o pacote
durable-functions
assim que a nova versão for instalada.Aguarde até que todos os pacotes terminem a instalação.
No painel de menu esquerdo, desloque-se para cima e selecione Descrição Geral e, na barra de menus superior, selecione Reiniciare, em seguida, selecione Sim quando lhe for pedido para reiniciar.
Aguarde a conclusão da reinicialização antes de continuar.
Criar a função de cliente para enviar uma proposta de design
No menu do portal do Azure ou na página Home, em Recursos recentes, selecione Ver todose, em seguida, selecione a sua aplicação de funções. O painel do aplicativo de função é exibido.
Na página Visão geral, selecione a guia Funções no centro da tela.
Selecione o botão Criar no portal do Azure. O painel função Criar é exibido.
Sob Selecione um modelo, na caixa Filtro, digite inicializador HTTP de Funções Duráveis e selecione esse modelo na lista. Este modelo cria uma função durável que é executada em resposta a uma solicitação HTTP.
Em Detalhes do Modelo, para o campo Nova Função, insira HttpStart como o nome da função, e no campo Nível de Autorização, selecione Funçãoe, em seguida, selecione Criar. O painel HttpStart é exibido para sua função.
No painel de menu esquerdo, em Developer, selecione Code + Test. O painel Código + Teste é exibido para a sua função.
O código do arquivo index.js aparece no editor. Seu arquivo deve ser semelhante ao seguinte exemplo:
const df = require("durable-functions"); module.exports = async function (context, req) { const client = df.getClient(context); const instanceId = await client.startNew(req.params.functionName, undefined, req.body); context.log(`Started orchestration with ID = '${instanceId}'.`); return client.createCheckStatusResponse(context.bindingData.req, instanceId); };
Na lista suspensa dos arquivos na sua função, selecione function.json para visualizar as ligações associadas à sua nova função. Essas informações especificam quaisquer requisitos de autenticação, juntamente com os métodos HTTP que podem acionar a função. Esse arquivo também especifica que a função é um cliente que inicia o processo de orquestração. Seu arquivo deve ser semelhante ao seguinte exemplo:
{ "bindings": [ { "authLevel": "function", "name": "req", "type": "httpTrigger", "direction": "in", "route": "orchestrators/{functionName}", "methods": [ "post", "get" ] }, { "name": "$return", "type": "http", "direction": "out" }, { "name": "starter", "type": "orchestrationClient", "direction": "in" } ] }
Observação
Um vínculo liga recursos e outros itens a um gatilho. É um mecanismo declarativo que elimina a necessidade de codificar referências a outros serviços e funções em seu código.
Criar a função orchestrator
No menu do portal do Azure ou na página Home, em Recursos recentes, selecione Ver todose, em seguida, selecione a sua aplicação de funções. O painel do aplicativo de função é exibido.
Na página de Visão Geral, selecione a aba Funções no centro da tela.
Na barra de menus Funções, selecione Criar. O painel da função Criar aparece.
Em Selecione um modelo, na caixa de filtro , digite Orquestrador de Funções Duráveis e selecione esse modelo na lista. Este modelo cria uma função durável que orquestra a execução de funções.
Em Detalhes do modelo, para o campo Nova Função, insira OrchFunction para o nome da função e selecione Criar. O painel de funções OrchFunction é exibido.
No painel de menu esquerdo, em Developer, selecione Code + Test. O painel Código + de teste é exibido para sua função.
O código do arquivo index.js aparece no editor.
Substitua o código existente pelo código a seguir.
const df = require("durable-functions"); module.exports = df.orchestrator(function* (context) { const outputs = []; /* * We will call the approval activity with a reject and an approved to simulate both */ outputs.push(yield context.df.callActivity("Approval", "Approved")); outputs.push(yield context.df.callActivity("Approval", "Rejected")); return outputs; });
Esse código chama uma função Activity chamada Approval, que você cria em breve. O código na função do orquestrador invoca a função Approval duas vezes. A primeira vez simula a aceitação da proposta, e a segunda vez testa a lógica de rejeição da proposta.
O valor que cada chamada retorna é combinado e passado de volta para a função de cliente. Em um ambiente de produção, sua função de orquestração chamaria uma série de funções de atividade que tomam a decisão de aceitar/rejeitar e retornam o resultado dessas atividades.
Na barra de menu superior, selecione Salvar para salvar sua nova função.
Criar a função de atividade
No menu do portal do Azure ou na página Home, em Recursos recentes, selecione Ver todose, em seguida, selecione a sua aplicação de funções. O painel do aplicativo de função é exibido.
Na página Visão Geral, selecione a guia Funções no centro da tela.
Na barra de menu Funções, selecione Criar. A janela da função Criar é apresentada.
Em Selecionar um modelo, na caixa Filtro de, insira de atividade Funções duráveis e selecione esse modelo na lista. Este modelo cria uma função durável que é executada quando uma atividade é chamada por uma função orquestradora.
Em Detalhes do modelo, para o campo Nova Função, introduza Aprovação como nome da função e, em seguida, selecione Criar. O painel Aprovação aparece para a sua aplicação de funções.
No painel de menu esquerdo, em Developer, selecione Code + Test. O painel Código + de teste é exibido para sua função.
O código do arquivo index.js aparece no editor.
Substitua o código existente pelo código a seguir.
module.exports = async function (context) { return `Your project design proposal has been - ${context.bindings.name}!`; };
Esta função devolve uma mensagem que indica o estado da proposta. A expressão
context.bindings.name
éAccepted
ouRejected
, dependendo do parâmetro passado para a função pelo orquestrador. Em um cenário do mundo real, você adicionaria a lógica que manipula as operações de aceitação ou rejeição nessa função.Na barra de menu superior, selecione Salvar para salvar sua nova função.
Verifique se o fluxo de trabalho de funções duráveis é iniciado
No menu do portal do Azure ou na página Home, em Recursos recentes, selecione Ver todose depois selecione a sua aplicação de funções. O painel do aplicativo de função é exibido.
Selecione o separador Funções no centro da página.
Selecione a função HttpStart. O painel HttpStart é exibido para a sua função.
Na barra de menu superior, selecione Obter URL da função e copie o URL. Seu URL deve ser semelhante ao exemplo a seguir:
https://example.azurewebsites.net/api/orchestrators/{functionName}?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
Você usa essa URL para executar suas funções.
Abra uma nova janela do navegador e vá para o URL que você copiou. Na URL, substitua o espaço reservado {functionName} por OrchFunction, que deve ser semelhante ao exemplo a seguir:
https://example.azurewebsites.net/api/orchestrators/OrchFunction?code=AbCdEfGhIjKlMnOpQrStUvWxYz==
A mensagem de resposta contém um conjunto de endpoints URI que pode usar para monitorizar e gerir a execução, que deve ser semelhante ao exemplo a seguir:
{ "id": "f0e1d2c3b4a5968778695a4b3c2d1e0f", "statusQueryGetUri": "https://example.azurewebsites.net/...", "sendEventPostUri": "https://example.azurewebsites.net/...", "terminatePostUri": "https://example.azurewebsites.net/...", "rewindPostUri": "https://example.azurewebsites.net/...", "purgeHistoryDeleteUri": "https://example.azurewebsites.net/..." }
Copie o valor statusQueryGetUri e use o seu navegador da Web para aceder a este URL. Você verá uma mensagem de resposta semelhante ao exemplo a seguir:
{ "name": "OrchFunction", "instanceId": "f0e1d2c3b4a5968778695a4b3c2d1e0f", "runtimeStatus": "Completed", "input": null, "customStatus": null, "output": [ "Your project design proposal has been - Approved!", "Your project design proposal has been - Rejected!" ], "createdTime": "2019-04-16T15:23:03Z", "lastUpdatedTime": "2019-04-16T15:23:35Z" }
Lembre-se de que a função de orquestração executa a função de atividade duas vezes. Na primeira vez, a função de atividade indica que a proposta de projeto é aceita. Na segunda vez, a proposta é rejeitada. A função de orquestração combina as mensagens de ambas as chamadas de função e as retorna para a função cliente.