Processar filas de trabalho
O processamento da fila de trabalho refere-se ao gerenciamento de uma lista de itens de trabalho que precisam ser concluídos em uma determinada ordem. Essa lista contém informações sobre cada item, como nome, prioridade, data de validade, status e o valor real a ser processado.
Formas de processar as filas de trabalho:
Processamento com base no fluxo da área de trabalho do Power Automate desktop (PAD).
Processamento baseado em fluxo da nuvem com suporte a fluxo da área de trabalho.
Usando os recursos de desenvolvedor profissional do Dataverse (somente para cenários de integração avançada):
Saiba mais sobre as ferramentas de código profissional do Dataverse: Documentação do desenvolvedor do Dataverse.
Passo a passo de processamento
Para mostrar algumas das opções de processamento disponíveis, aqui estão três cenários de processamento diferentes.
Processamento de fila de trabalho baseado em fluxo da área de trabalho do Power Automate (PAD)
Processar itens da fila de trabalho e Exemplos de atualização
A primeira etapa para usar as ações da fila de trabalho na área de trabalho do Power Automate é criar uma fila de trabalho no ambiente em que você está trabalhando e carregar alguns itens da fila com dados a serem consumidos depois. Os itens da fila podem ser carregados em uma fila de trabalho por meio de um fluxo da área de trabalho, fluxo da nuvem ou em massa, conforme descrito aqui, que preenche os itens da fila. Neste exemplo, alguns itens de fila foram adicionados manualmente a uma fila de trabalho para explicar como as ações na área de trabalho do Power Automate podem ser usadas.
Os itens da fila de trabalho foram criados e o campo de valor inclui texto no formato JSON que será usado depois no fluxo da área de trabalho.
O fluxo de exemplo que usaremos para demonstrar o uso da ação da fila de trabalho imita um processo que consumiria um item da fila de trabalho da nuvem, processaria os dados incluídos no campo de valor e os converteria em um objeto personalizado a ser processado posteriormente. Observe que não é obrigatório usar JSON ou objetos personalizados como valores para seus itens de fila de trabalho, mas pode ser um método útil para organizar valores que possuem várias propriedades e seguem um esquema específico.
A ação Processar itens da fila de trabalho é usada para designar de qual fila de trabalho consumir itens e processar em seu fluxo da área de trabalho. A ação pode ser configurada para selecionar uma fila de trabalho de uma lista usando a seta suspensa, passar uma variável incluindo o nome da fila. Quando executada, essa ação traz o primeiro item (mais antigo) da fila de trabalho para o seu fluxo que contém um status enfileirado. Depois que o item da fila começa a ser processado em seu fluxo, seu status muda automaticamente para processamento.
Um ponto de interrupção (ponto vermelho) foi definido clicando ao lado da ação 3 no fluxo e, em seguida, executado no console do PAD. Quando o processo pausa no ponto de interrupção, a variável WorkQueueItem pode ser aberta clicando duas vezes no valor preenchido em Variáveis de fluxo e isso mostra todas as propriedades associadas ao item da fila de trabalho que está sendo processado.
Na ação 2 do fluxo, converti o valor JSON retornado, que neste caso é acessado via %WorkQueueItem.Value% em um objeto personalizado. A razão para isso é porque ajuda a analisar o JSON e usar as propriedades JSON downstream em seu fluxo. Nesse caso hipotético, as informações seriam usadas para fazer entradas no portal financeiro da Farbrikam.
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
Por exemplo, digamos que haja um requisito para inserir o ID da fatura em um campo de um sistema financeiro como parte de um processo em que você está automatizando a IU de um aplicativo da Web ou da área de trabalho, você pode chamar esse valor usando %JsonAsCustomObject.InvoiceId% para preencher um campo de texto e apertar um botão.
Continuando, este exemplo contém algumas instruções condicionais depois de concluir o processamento das etapas e usar os dados do objeto personalizado no subfluxo de Entrada de Dados do Fabrikam. Se o processo for executado de ponta a ponta sem encontrar nenhuma exceção relacionada ao sistema de entrada, a ação Atualizar item da fila de trabalho é usada para alterar o status do item da fila de trabalho para Processado e o campo resultado do processamento pode ser usado para inserir algumas notas opcionais. Se o campo expira for deixado em branco, o novo item da fila manterá o valor Os itens expiram após definido nas propriedades da fila de trabalho.
As opções de tratamento de exceção podem ser configuradas clicando em Se houver erro na janela de configuração da ação atualizar item da fila de trabalho. Três opções estão disponíveis para personalização na guia avançada. Item da fila de trabalho não encontrado pode ocorrer, se o item da fila de trabalho for removido da fila, manualmente ou por meio de outro processo sistemático, antes de concluir o processamento no PAD. Item da fila de trabalho em espera pode ocorrer se um processo automatizado ou alguém alterar o status do item da fila de trabalho que está sendo processado para em espera no portal de fluxo enquanto o item da fila está sendo processado. Falha ao atualizar o item da fila de trabalho pode ocorrer se o item da fila não existir mais na fila ou tiver sido colocado no status em espera. Todos os itens acima são casos extremos que podem ocorrer - saiba mais sobre como lidar com erros em fluxos da área de trabalho aqui.
Se algum problema for determinado durante o processamento dos dados do item da fila de trabalho no sistema de entrada de dados, o item pode, alternativamente, receber um status de exceção genérica, exceção de TI ou exceção de negócios. Esses status de exceção estão disponíveis para serem usados quando, ou se, seu caso de uso automatizado atender aos critérios, que podem ser aplicados.
Digamos que, ao processar um item de fila, o cenário 2 foi atendido. Nesse caso, o item da fila é marcado como exceção genérica na fila de origem. Dependendo do cenário, você pode decidir alterar o status dos itens da fila que não puderam ser processados com êxito como uma das opções alternativas de status. A partir daí, você pode decidir se a intervenção humana é necessária ou construir um processo subsequente com a lógica necessária para gerenciar cada status de exceção.
Padrão de repetição automática
A ação Processar itens da fila de trabalho no Power Automate Desktop inclui uma opção avançada para configurar ou substituir um mecanismo de repetição automática. Esse recurso permite especificar a contagem máxima de tentativas automáticas por item da fila de trabalho, o que é útil para lidar com exceções de TI, como erros transitórios de rede ou indisponibilidade temporária do sistema. Ele permite que a máquina retenha o item e execute repetições controladas sem enfileirar o item, garantindo um processamento mais eficiente e resiliente da fila de trabalho.
Você pode definir e controlar centralmente a contagem máxima de tentativas no registro da fila de trabalho do Dataverse. Esse valor padrão se aplica a todos os fluxos da área de trabalho que processam essa fila de trabalho por meio da ação Processar Itens da Fila de Trabalho.
Para substituir o padrão no nível da fila em seu fluxo, navegue até a seção Avançado da ação Processar itens da fila de trabalho e alterne a opção Substituir configuração de repetição automática da fila de trabalho. Essa configuração permite ajustar a contagem máxima de repetições para um valor maior ou menor, ou até mesmo desabilitar o mecanismo de repetição definindo a contagem máxima de repetições como 0.
Quando você usa a ação Atualizar item da fila de trabalho com um status definido como IT exception
e uma contagem máxima de tentativas automáticas maior que 0, o sistema não envia imediatamente a atualização para o orquestrador da fila de trabalho. Em vez disso, ele tenta novamente a operação até atingir a contagem máxima de tentativas especificada. O único valor atualizado no item da fila de trabalho é o retrycount
. Esse valor aumenta a partir da segunda tentativa de atualização até que a contagem máxima de tentativas automáticas seja atingida. Além disso, uma variável de item da fila de trabalho local chamada CurrentRetryCount
incrementos a cada nova tentativa. Essa variável permite que você implemente lógica personalizada com base em seu valor, se necessário.
O fluxo não solicitará um novo item quando voltar à parte superior da ação Processar itens da fila de trabalho se as seguintes condições forem atendidas:
- A contagem máxima de tentativas não foi atingida.
- Nenhuma outra atualização ocorre, exceto exceções de TI.
Quando a contagem máxima de tentativas é atingida, a ação de atualização envia a atualização para o orquestrador, alterando o status do item para Exceção de TI e incluindo as notas de processamento fornecidas.
Adicionando e enfileirando exemplos de itens da fila de trabalho do PAD
A opção Adicionar item de fila de trabalho permite que os usuários do fluxo da área de trabalho preencham os itens da fila de trabalho em uma fila de trabalho que foi configurada no portal de fluxo. A criação de itens em lote tem suporte usando a ação Adicionar itens da fila de trabalho.
Neste exemplo, um arquivo Excel em .csv é colocado em um diretório diariamente e cada linha precisa ser adicionada a uma fila de trabalho.
As primeiras ações neste processo de exemplo mapeiam uma pasta onde o arquivo diário Contoso Invoices.csv é descartado, quando o processo é executado, ele começa lendo a tabela de dados do arquivo CSV. A Variável CSVTable contém os dados que foram importados e serão processados para novos itens da fila.
As ações 3 e 4 geram o horário em que escolhemos os novos itens da fila para expirar após serem adicionados a uma fila de trabalho. A ação 3 captura os dados e a hora atuais do sistema, então, para este exemplo, 7 dias são adicionados a ela usando a ação %Adicionar a datetime%. A saída é armazenada em uma variável chamada ExpiryDatetime que será utilizada na ação Adicionar item de fila de trabalho.
A ação 5 introduz o loop Para cada que é usado para percorrer cada linha de dados em CSVTable - esta ação renderiza uma linha de dados para o item atual que está sendo processado.
Todas as ações anteriores neste fluxo de área de trabalho de exemplo agora são incorporadas à configuração dos valores para a ação Adicionar item de fila de trabalho.
O parâmetro fila de trabalho é definido para a fila na qual queremos adicionar novos itens de fila de trabalho, neste caso Fila de PAD de demonstração foi selecionado escolhendo-o no menu suspenso.
O parâmetro Prioridade é deixado no padrão, Normal, mas opções para Baixo e Alto também são opcionais. Itens de fila de trabalho de prioridade mais alta são processados primeiro, depois normal e por último quando misturados na mesma fila de trabalho.
O parâmetro Nome foi definido com um prefixo estático junto com o valor da variável CurrentItem['ID'] - que contém o valor da célula de ID da linha de dados que está sendo processada. Isso é opcional, mas pode ser útil dependendo do seu caso de uso.
Usando os valores da linha de dados na variável CurrentItem o parâmetro de Entrada foi inserido no formato JSON. Observe que cada nome de cabeçalho foi anexado à variável currentitem usando a notação ['nome do cabeçalho']
O campo Expira é preenchido com a variável datetime à qual adicionamos 7 dias nas etapas anteriores. Quando deixado em branco, o item da fila de trabalho que está sendo adicionado conterá o valor Os itens expiram após definido para a fila de trabalho.
As notas de processamento são opcionais, use conforme necessário.
Quando o processo é executado, cada linha de dados no CSV importado cria um item de fila de trabalho contendo um status Em fila, o que significa que está disponível para processamento.
Essas são apenas algumas das muitas maneiras pelas quais as ações da fila de trabalho podem ser usadas no PAD. Reserve algum tempo para explorar e encontrar usos criativos para incorporar filas de trabalho em seus fluxos do Power Automate!
Exemplo de reenfileiramento de item com atraso
A ação Reenfileirar item com atraso permite que os usuários do fluxo da área de trabalho recoloquem itens na fila e definam um período de atraso no qual o item pode ser liberado novamente para processamento.
Neste exemplo, há uma fila de trabalho carregada de itens, que expiram em 24 horas, mas não podem ser processados a tempo porque há alguma manutenção de rotina contínua do sistema sendo realizada pela TI e os itens precisam ser recolocados na fila. A manutenção será concluída durante a noite, portanto, atrasaremos cada item da fila em 24 horas e depois os definiremos para expirar 24 horas após o período de liberação.
As três primeiras ações deste processo de exemplo são ações de data e hora. A ação 'Obter data e hora atuais' captura a data e hora do sistema no momento em que a ação é executada. Em seguida, usamos a ação 'Adicionar à data e hora' para cobrir dois requisitos: primeiro precisamos definir o tempo de atraso adicionando 24 horas à data e hora atual - depois precisamos adicionar 48 horas à data e hora atual como uma expiração.
A seguir no exemplo, a ação 'Processar itens da fila de trabalho' é configurada para apontar para a fila de trabalho carregada e o 'Reenfileirar item com atraso' é colocado dentro do loop.
Os valores gerados para o atraso e a expiração agora podem ser passados para a ação 'Reenfileirar item com atraso'. O campo 'item da fila de trabalho' é preenchido pela variável produzida pelo loop - isso instrui qual item da fila deve ser reenfileirado. Em seguida, inserimos os valores criados usando as ações de data e hora para os campos 'atrasar até' e 'expirar'. O 'atraso até' é obrigatório, mas você pode usar 'expira' e 'resultado do processamento' a seu critério.
Com este processo simples, você pode recolocar todos os itens disponíveis em uma fila, atrasá-los por um determinado tempo, com opções para também definir data de validade e resultado do processamento.
Fluxo de nuvem e processamento baseado no conector
A maneira mais simples de remover um item da fila de trabalho e processá-lo é a seguinte:
Acesse Power Automate e entre com suas credenciais.
No menu esquerdo, selecione Meus fluxos.
Na barra de ferramentas, selecione + Novo fluxo e selecione Fluxo de nuvem instantâneo.
Forneça um Nome do fluxo, como Meu primeiro fluxo de fila de trabalho e selecione Disparar manualmente um fluxo.
Selecione Criar.
Depois que o designer de fluxo for aberto, selecione + Nova etapa e escolha o conector do Microsoft Dataverse.
Na lista de ações, selecione Executar uma ação associada.
Parâmetro | Valor | Descrição |
---|---|---|
Nome da tabela | Filas de Trabalho | O nome da tabela da fila de trabalho. |
Nome da ação | Remover da fila | A ação, que obtém o próximo item disponível da fila. |
ID da Linha | [ID da Fila de Trabalho] | O ID da fila de trabalho (GUID) que você quer remover. Você pode chegar a esse valor navegando até a página de detalhes da fila de trabalho da sua fila e abrindo o painel Detalhes avançados. |
Observação
Uma ação vinculada é do Dataverse que é definida em uma tabela específica (filas de trabalho em nosso exemplo) e só pode ser executada em registros dessa tabela. As ações vinculadas são usadas pela plataforma para executar operações ou lógica de negócios personalizada em um registro específico.
- Seu fluxo deve ser semelhante a este agora.
Selecione Salvar e depois Testar seu fluxo.
No painel lateral de teste, selecione Manualmente, Testar, Executar fluxo e depois Concluído.
Se o fluxo for executado com êxito, você deverá obter um resultado semelhante (mas com IDs diferentes).
- Em seguida, copie todo o conteúdo JSON do campo corpo e selecione Editar no canto superior direito do fluxo.
Dica
Depois de remover da fila um item da fila de trabalho, use o conteúdo JSON do item como um exemplo de esquema para analisar as propriedades JSON do item. Isso permite que você acesse facilmente qualquer propriedade do item retornado pelo orquestrador da fila de trabalho em ações de fluxo subsequentes.
- Adicione uma nova etapa selecionando + Nova etapa e procure uma ação chamada Analisar JSON e selecione-a.
- Posicione o mouse no campo Conteúdo e selecione a propriedade body da ação anterior.
Em seguida, selecione Gerar da amostra e cole a string JSON copiada anteriormente na caixa de diálogo e selecione Concluído.
Selecione + Nova etapa e selecione o conector do Microsoft Dataverse.
Na lista de ações, selecione Atualizar uma linha.
No campo Nome da tabela, selecione a tabela Itens da Fila de Trabalho e posicione o cursor no campo ID da Linha.
Na lista Conteúdo dinâmico, agora você terá todos os campos disponíveis na tabela de itens da fila de trabalho.
Selecione Mostrar opções avançadas e defina o RowID, Resultado do Processamento, Status e Razão do Status para os seguintes valores.
Campo | Valor | Details |
---|---|---|
ID da Linha | workqueueitemid | Esse valor pode ser selecionado na caixa de diálogo da lista de conteúdo dinâmico. |
Processando Resultado | O item foi processado com sucesso. | |
Status | Processadas | |
Razão do Status | Processadas |
Selecione Salvar e Testar mais uma vez.
Se o fluxo for executado com êxito, você deverá obter um resultado semelhante ao seguinte.
Agora, navegue até a página de detalhes da fila de trabalho e, na seção de lista de itens da fila de trabalho, selecione Ver tudo.
Filtre o campo Status para mostrar apenas os itens Em processamento e Processados para confirmar que nossas ações Remover da fila e Atualizar funcionaram conforme o esperado.
Parabéns, você acabou de concluir seu primeiro cenário de processamento de fila de trabalho!
Processamento baseado em fluxo na nuvem com suporte a fluxo da área de trabalho
Para este cenário, estendemos o anterior adicionando também uma etapa de processamento de fluxo da área de trabalho.
Volte e edite o Meu primeiro fluxo de fila de trabalho.
Adicione uma nova ação diretamente após a ação Analisar JSON e procure pelo conector Fluxos da área de trabalho e Executar um fluxo criado com o Power Automate para área de trabalho.
No menu suspenso do fluxo da área de trabalho, escolha e edite um fluxo da área de trabalho existente ou selecione + Criar um novo fluxo da área de trabalho e siga as instruções na tela para criar o fluxo da área de trabalho e iniciar o Power Automate para desktop. Se você é novo em fluxos da área de trabalho, pode aprender mais aqui.
Assim que o designer do Power Automate para desktop for aberto, crie duas variáveis de entrada chamadas WorkQueueItemValue e WorkQueueItemName e, em seguida, adicione duas variáveis de saída chamadas ProcessingNotes e ProcessingStatus respectivamente, todas as quais devem ter Texto como tipo de dados.
Forneça um valor padrão para a variável WorkQueueItem para que você possa testar o script localmente posteriormente. Caso tenha seguido o tutorial de importação em massa você deve ter itens da fila de trabalho na fila de faturas do Fornecedor que possuem seus valores no formato JSON. Aqui está um exemplo de um dos valores usados.
{ "InvoiceId": "I-1006", "InvoiceDate": "06/04/2023", "AccountName": "Fabrikam", "ContactEmail": "invoicing@fabrikam.com", "Amount": 1253.78, "Status": "Paid", "WorkQueueKey": "Vendor Invoices", "ComponentState": 0, "OverwriteTime": "1900-01-01T00:00:00" }
Agora, Salve o fluxo.
No painel de ações, abra o grupo de ações Variáveis e clique duas vezes na ação Converter JSON em objeto personalizado para adicioná-lo à tela de design, que abre sua janela de propriedades.
Selecione o ícone da variável no campo JSON e escolha a variável WorkQueueItemValue.
Renomeie a variável de saída produzida de JsonAsCustomObject para VendorInvoice e selecione Salvar.
Em seguida, adicione uma ação If do grupo de Condicionais e configure suas propriedades da seguinte forma:
First operand Operator Second operand %VendorInvoice['Amount']% Menor que (<) 5000 Selecione Salvar.
Adicione outra ação do grupo de Condicionais chamado Else e adicione-a entre If e a ação Terminar.
Agora, adicione mais duas ações do grupo de Variáveis chamado Definir variável e adicione-as dentro de If e Else e defina as variáveis ProcessingNotes e ProcessingStatus para os seguintes valores:
Variável Valor %ProcessingNotes% A fatura foi processada %ProcessingStatus% Processadas Copie as duas ações Definir variável e cole-as entre Else e Terminar e altere seus valores para corresponder a estes:
Variável Valor %ProcessingNotes% Exceção comercial: o valor da fatura é maior que $5000, o que requer aprovação do gerente. %ProcessingStatus% Exceção Seu fluxo deve ser semelhante a este agora.
Salve o fluxo e execute-o para confirmar se a lógica do fluxo de trabalho, conforme esperado.
Volte para editar o Meu primeiro fluxo de fila de trabalho.
Selecione o fluxo da área de trabalho recém-criado (ou editado) na lista e selecione Assistido como seu Modo de Execução.
Preencha os parâmetros Valor do Item da Fila de Trabalho e Nome do Item da Fila de Trabalho, conforme mostrado aqui:
Adicione uma ação Condição antes da ação Atualizar uma linha.
Posicione o mouse no campo Escolher um valor e selecione Status de Processamento na caixa de diálogo da lista de conteúdo dinâmico.
Posicione o mouse no outro campo Escolher um valor e insira Processado como valor de texto.
Arraste e solte a ação Atualizar uma linha na seção Se sim da ação de condição.
Abra os detalhes da ação Atualizar uma linha e substitua os valores para corresponder ao seguinte:
Na caixa vermelha Se não, adicione outra ação Atualizar uma linha e selecione Itens da Fila de Trabalho como o Nome da tabela.
Em seguida, selecione workqueueitemid como ID da Linha e abra a seção Mostrar opções avançadas selecione Processando as Anotações como o valor Processando os Resultados .
Selecione Erro como Status e GenericException para Razão do Status.
Selecione Salvar e Testar para testar a automação geral e observar a saída da ação de fluxo da área de trabalho.
Para confirmar que o item da fila de trabalho foi processado, você pode acessar a página de detalhes da fila de trabalho, selecionar Ver tudo na seção de itens da fila de trabalho e filtrar os itens pelo status Processado.
Muito bem, você acabou de concluir um cenário mais avançado que incluía processamento de fila de trabalho híbrido!