Power Fx em fluxos da área de trabalho
Power Fx é a linguagem de baixo código para expressar a lógica no Microsoft Power Platform. É uma linguagem de programação de uso geral, fortemente tipada, declarativa e funcional.
Power Fx é expresso em texto de fácil leitura. É uma linguagem de pouco código com a qual os criadores podem trabalhar diretamente em uma barra de fórmulas semelhante ao Excel ou uma janela de texto do Visual Studio Code. O "pouco" no pouco código é devido à natureza concisa e simples da linguagem, tornando as tarefas de programação comuns fáceis para criadores e desenvolvedores.
O Power Fx permite todo o espectro de desenvolvimento, desde criadores sem código, sem qualquer conhecimento de programação, até código pró-código para desenvolvedores profissionais. Ele permite que diversas equipes colaborem e economizem tempo e esforços.
Usando o Power Fx no fluxo da área de trabalho
Para usar o Power Fx como uma linguagem de expressão em um fluxo da área de trabalho, você deve criar um fluxo da área de trabalho e ativar o respectivo botão de alternância ao criar o fluxo através Power Automate para o console da área de trabalho.
Diferenças nos fluxos habilitados do Power Fx
Observação
Cada expressão do Power Fx deve começar com "=" (sinal de igual).
Se você estiver fazendo a transição de fluxos onde o Power Fx está desabilitado, poderá notar algumas diferenças. Para simplificar sua experiência ao criar novos fluxos da área de trabalho, aqui estão alguns conceitos-chave a serem considerados:
Da mesma forma que as fórmulas do Excel, os fluxos da área de trabalho que usam o Power Fx como linguagem de expressão usam a indexação de matriz baseada em 1 (um) em vez da indexação baseada em 0 (zero). Por exemplo, a expressão
=Index(numbersArray, 1)
retorna o primeiro elemento da matriznumbersArray
.Os nomes de variáveis diferenciam maiúsculas de minúsculas em fluxos da área de trabalho com o Power Fx. Por exemplo, NewVar é diferente de newVar.
Quando o Power Fx está habilitado em um fluxo da área de trabalho, a inicialização da variável é necessária antes do uso. A tentativa de usar uma variável não inicializada em expressões do Power Fx resulta em um erro.
A ação If aceita uma única expressão condicional. Anteriormente, aceitava vários operandos.
Enquanto os fluxos que não têm o Power Fx habilitado têm o termo "Valor geral" para denotar um tipo de objeto desconhecido, o Power Fx gira em torno de um sistema de tipo estrito. Nos fluxos habilitados do Power Fx, há uma distinção entre variáveis dinâmicas (variáveis cujo tipo ou valor pode ser alterado durante o runtime) e valores dinâmicos (valores cujo tipo ou esquema é determinado no runtime). Para entender melhor essa distinção, considere o exemplo a seguir. A
dynamicVariable
altera seu tipo durante o runtime de um valorNumeric
paraBoolean
, enquantodynamicValue
é determinado durante o runtime para ser um objeto sem tipo, com seu tipo real sendo umCustom object
:Os valores que são tratados como valores dinâmicos são:
- Tabelas de dados
- Objetos personalizados com esquema desconhecido
- Saídas de ação dinâmica (por exemplo, a ação "Executar script .NET")
- Saídas da ação "Executar fluxo da área de trabalho"
- Qualquer saída de ação sem um esquema predefinido (por exemplo, "Ler da planilha do Excel" ou "Criar Nova Lista")
Os valores dinâmicos são tratados de forma semelhante ao Objeto Sem Tipo do Power Fx e normalmente exigem que funções explícitas sejam convertidas no tipo necessário (por exemplo,
Bool()
eText()
). Para simplificar sua experiência, há uma conversão implícita ao usar um valor dinâmico como uma entrada de ação ou como parte de uma expressão do Power Fx. Não há validação durante a criação, mas dependendo do valor real durante o tempo de execução, ocorrerá um erro de runtime, se a conversão falhar.Sempre que uma variável dinâmica é usada, é apresentada uma mensagem de aviso informando "Tipo diferido fornecido". Esses avisos surgem devido ao requisito restrito do Power Fx para esquemas de tipo forte (tipos estritamente definidos). Variáveis dinâmicas não são permitidas em listas, tabelas ou como propriedade para valores de Registro.
Ao combinar a ação Executar expressão do Power Fx com expressões usando as funções Collect, Clear, ClearCollect e Patch, você pode emular o comportamento encontrado nas ações Adicionar item à lista e Inserir linha na tabela de dados que anteriormente não estavam disponíveis para fluxos da área de trabalho do Power Fx habilitados. Embora ambas as ações ainda estejam disponíveis, use a função Collect ao trabalhar com listas altamente tipadas (por exemplo, uma lista de arquivos). Essa função garante que a lista permaneça digitada, pois o uso da ação Adicionar Item à Lista converte a lista em um objeto não tipado.
Exemplos
- A
=1
em um campo de entrada é equivalente ao valor numérico 1. - A
= variableName
é igual ao valor da variável variableName. - A expressão
= {'prop':"value"}
retorna um valor de registro equivalente a um objeto personalizado. - A expressão
= Table({'prop':"value"})
retorna uma tabela do Power Fx equivalente a uma lista de objetos personalizados. - A expressão -
= [1,2,3,4]
cria uma lista de valores numéricos. - Para acessar o valor de uma Lista, use a função
Index(var, number)
, onde var é o nome da Lista e número é a posição do valor a ser recuperado. - Para acessar uma célula da tabela de dados usando um índice de coluna, use a função
Index()
.=Index(Index(DataTableVar, 1), 2)
recupera o valor da célula na linha 1 dentro da coluna 2.=Index(DataRowVar, 1)
recupera o valor da célula na linha 1. - Para incluir um valor interpolado em uma entrada ou em um seletor de elementos da interface do usuário/da Web, use a seguinte sintaxe:
Text before ${variable / expression} text after
- Exemplo:
The total number is ${Sum(10, 20)}
- Exemplo:
Observação
Se você quiser usar o cifrão ($) ($
) seguido por um sinal de chave de abertura ({
) dentro de uma expressão do Power Fx ou na sintaxe de um seletor de elemento da IU/Web e o Power Automate para desktop não o trata como a sintaxe de interpolação de string, certifique-se de seguir esta sintaxe: $${
(o primeiro cifrão atuará como um caractere de escape)
Funções do Power Fx disponíveis
Para obter a lista completa de todas as funções disponíveis nos fluxos Power Automate para desktop, acesse Referência de fórmula – fluxos da área de trabalho.
Limitações e problemas conhecidos
- As seguintes ações da biblioteca padrão de ações de automação não têm suporte atualmente:
- Switch
- Case
- Default case
- Algumas funções do Power Fx apresentadas por meio do IntelliSense não têm suporte atualmente em fluxos da área de trabalho. Essas funções exibem o seguinte erro de tempo de design quando usadas: "Parâmetro 'Valor': o tipo PowerFx 'OptionSetValueType' não é suportado."
Novidades
Esta seção lista o que mudou em cada atualização.
2.48
Na versão de Setembro de 2024:
- Reative as ações de manipulação de lista e tabela de dados sem suporte anteriormente na categoria Variáveis.
- Suporte nativo a objetos sem tipo, para objetos personalizados, listas e tabelas de dados. Saiba mais sobre objetos sem tipo em Tipo de dados de objeto sem tipo.
- Essa alteração foi feita para reduzir os avisos de tempo de design e o uso de tipos adiados. Objeto sem tipo é uma maneira de manipular tipos com esquema desconhecido em tempo de design.
- Nas versões anteriores, as variáveis dinâmicas (variáveis cujo tipo ou valor pode ser alterado durante o runtime) e os valores dinâmicos (valores cujo tipo ou valor pode ser alterado durante o runtime) eram tratados da mesma forma. Quando um valor dinâmico ou uma variável dinâmica era usado em uma expressão do Power Fx, um aviso era disparado: "Tipo diferido fornecido". Esses avisos ocorreram porque o Power Fx impõe esquemas de tipo estrito (tipos fortemente definidos). A partir dessa versão, distinguimos esses dois casos. Enquanto as variáveis dinâmicas continuam a gerar o aviso de "tipo diferido", os valores dinâmicos agora são tratados como objetos sem tipo.
- Todas as variáveis da tabela de dados não são tipadas, enquanto os objetos personalizados resultantes da ação Converter JSON em um objeto personalizado são sem tipo. As listas ficarão sem tipo depois de manipulá-las com as ações do Power Automate para desktop da categoria Variáveis.
- Anteriormente, determinadas ações de automação da biblioteca padrão de ações, como Ler do Excel, Ler do CSV, Extrair dados de uma Web, Extrair dados da janela , Executar instrução SQL e Converter JSON em um objeto personalizado produziriam uma variável dinâmica, juntamente com um aviso de "tipo diferido". Agora produzem uma tabela de dados sem tipo ou uma variável de objeto personalizada sem tipo.
- A função Set do Power Fx agora está habilitada, mas ainda não tem suporte total. Embora não possa ser usado para modificar o valor de uma variável diretamente, ele pode ser usado com as estruturas acima para também atualizar propriedades de objetos personalizados e valores de listas em índices específicos (por exemplo,
=Set(Index(Index(DataTable, 1), 1), 42)
ou=Set(customObject.property, 17)
). - Corrigido um problema com o acesso às propriedades de lista aninhada de um objeto em fluxos habilitados pelo Power Fx.
Cuidado
Na versão 2.48 do Power Automate para desktop, houve atualizações para fluxos de área de trabalho habilitados para o Power Fx que podem afetar a execução de fluxos habilitados para o Power Fx criados com versões anteriores. É aconselhável testar completamente esta versão com seus fluxos do Power Fx existentes.
- Saídas de fluxo filho: tenha cuidado ao usar variáveis de saída de fluxos filho em um fluxo da área de trabalho habilitado para o Power Fx. Isso envolve variáveis de saída de tipos de lista, objeto personalizado e tabela de dados.
- Matrizes de colunas de valor único: uma matriz criada usando uma expressão como
=[1, 2, 3]
resulta em uma matriz de colunas de valor único em fluxos habilitados pelo Power Fx, cujos itens são objetos com uma única propriedade:{Value: 1}
. A tentativa de acessar a propriedadeValue
desse item, depois de modificar a primeira matriz com uma ação, resulta em um erro de criação. - Uso da função do Power Fx: em determinas funções do Power Fx, como
IsEmpty()
, as versões anteriores aceitavam uma variável dinâmica como argumento e não lançavam um erro de validação. Com a versão 2.48, o uso de uma variável que é tratada como uma variável dinâmica resulta em um erro de validação e uma falha na execução de fluxos existentes. A solução para isso é aplicar a conversão adequada ao valor dinâmico (sem tipo). Saiba mais sobre funções de conversão em Tipo de dados de objeto sem tipo. Você pode encontrar esse problema ao editar um fluxo e receber uma mensagem de erro como "Tipo de argumento inválido (UntypedObject). Esperando um valor de tabela." Para resolver esse problema, siga as mensagens de erro para converter sua expressão em uma válida.- Outros exemplos de funções que podem gerar um erro de validação ao usar uma combinação de variáveis dinâmicas e tipadas são
Sum()
,Filter()
,Concatenate()
e operadores comoin
(por exemplo,"string" in DynamicValueObject
).
- Outros exemplos de funções que podem gerar um erro de validação ao usar uma combinação de variáveis dinâmicas e tipadas são
- Comparação de variáveis: semelhante ao problema mencionado anteriormente, pode haver incompatibilidades de tipo quando você aplica operadores de comparação (
=
,<>
,>
,<
etc.) em expressões envolvendo valores dinâmicos. Tenha cuidado e aplique a transmissão adequada antes de comparar valores dinâmicos.
2.43
Na versão de abril de 2024:
- Diferencia maiúsculas de minúsculas. Por exemplo, NewVar é uma variável diferente de newVar.
- A ação Executar expressão do Power Fx está disponível no grupo de ações de Variáveis. A ação Executar expressão do Power Fx permite que você execute expressões diretamente nas origens de dados.
- Há suporte para as funçõesCollect, Clear, ClearCollect do Power Fx nos fluxos da área de trabalho.
- Há suporte para as funções de Patch do Power Fx nos fluxos da área de trabalho.
- As variáveis e expressões do Power Fx podem ser usadas no elemento da Interface de usuário ou na sintaxe do seletor da Web.
- Valores interpolados agora podem ser incluídos na sintaxe de um seletor de elemento UI/Web. Para cadeias de caracteres interpoladas, é possível usar esta sintaxe: ${ expressão do Power Fx }.
Importante
Na versão 2.43 do Power Automate para desktop, houve atualizações para fluxos da área de trabalho ativados por Power Fx que poderiam impactar a execução de fluxos da área de trabalho ativada pelo Power Fx criados com versões anteriores. Especificamente:
- Nomes de variáveis que diferenciam maiúsculas de minúsculas: nomes de variáveis dentro de fluxos da área de trabalho habilitados pelo Power Fx criados com o Power Automate para desktop, versão 2.43 e posterior diferenciam maiúsculas de minúsculas. Os fluxos da área de trabalho do Power Fx criados com o Power Automate para desktop, versão 2.42 e posterior permitidos para nomes de variáveis que não diferenciam maiúsculas e minúsculas. Por exemplo, NewVar e newVAR fazem referência à mesma variável. Para fluxos da área de trabalho ativados por Power Fx criados com o Power Automate para desktop, versão 2.42 e anterior, certifique-se de revisar e verificar se as variáveis produzidas são as esperadas.
2.42
Na versão de março de 2024:
- Os recursos do IntelliSense agora estão disponíveis para fluxos da área de trabalho habilitados pelo Power Fx.
- Colorização da sintaxe
- Funcionalidade de preenchimento automático durante a digitação com sugestões em tempo real
- Auxiliares de assinatura para as funções do Power Fx
Observação
Os recursos do IntelliSense estão disponíveis para expressões. Para inserir uma expressão, use o sinal de igual (= sua expressão ) no início da respectiva entrada ou a notação de interpolação de cadeia de caracteres ( ${ sua expressão } ).
- Seletor de função
- Você pode acessar o seletor de funções usando o botão fx no marcador ao interagir com as respectivas entradas. Todas as funções do Power Fx atualmente com suporte para fluxos da área de trabalho estão disponíveis lá.
2.41
Na versão de fevereiro de 2024:
- A partir de agora, entradas que não começam com o sinal de igual (=) são consideradas valores de tipo de texto. As entradas numéricas e boolianas devem sempre começar com o sinal de igual.
- As entradas agora oferecem suporte a cadeias de caracteres interpoladas. Para incluir um valor interpolado em uma entrada, usa a seguinte sintaxe:
Text before ${variable/ expression} text after
.- Exemplo:
The total number is ${Sum(10, 20)}
- Exemplo:
Observação
Para usar a sintaxe de cadeia de caracteres interpolada, omita o sinal de igual (=) no início da entrada.
2.39
Na versão de dezembro de 2023:
- Se a entrada fornecida não começar com o sinal de igual, as seguintes regras serão aplicadas:
- Valores numéricos sem espaços são interpretados como valores numéricos.
- Verdadeiro/Falso como entrada, independentemente de maiúsculas e minúsculas e sem espaços são interpretados como valores boolianos.
- Todas as outras entradas são consideradas valores de tipo de texto.