Compartilhar via


Exemplo de plug-ins low-code do Dataverse (versão preliminar)

[Este tópico faz parte da documentação de pré-lançamento e está sujeito a alterações.]

O objetivo destes exemplos de plug-ins é ajudar você a integrá-los aos seus aplicativos. Você vai entender que a experiência inclui criação de APIs personalizadas do Microsoft Dataverse com respaldo de expressões do Power Fx, que podem disparar ações internas ou externas no Dataverse.

Importante

  • Os plug-ins instantâneos de low-code não são priorizados e não estão sendo entregues como um recurso. Os plug-ins instantâneos de low-code são substituídos por funções. Mais informações: Funções no Microsoft Dataverse (versão preliminar)
  • Este é um recurso em versão preliminar.
  • Os recursos de versão preliminar não foram criados para uso em ambientes de produção e podem ter funcionalidade restrita. Esses recursos são disponibilizados antes de um lançamento oficial para que os clientes possam ter acesso antecipado e forneçam comentários.

Pré-requisito

Para usar um dos exemplos de plug-ins para o evento de dados, o aplicativo de acelerador do Dataverse deve estar instalado no ambiente. Mais informações: Pré-requisitos para criar um plug-in low-code

Observação

Os modelos de email estão disponíveis apenas para determinadas tabelas. Mais informações: Criar modelos para email

Retornar um valor não negativo

Este exemplo usa a função Abs para retornar o valor não negativo de seu argumento. Se o número for negativo, a função Abs retorna o equivalente positivo.

  1. Execute aplicativo de acelerador do Dataverse, na barra de comandos, e selecione Nova ação>Plug-in instantâneo.

  2. Dê um nome de exibição, como o nome da fórmula e a descrição.

  3. Criar um parâmetro Out para validar o comportamento esperado mais apropriado, como uma string. Como opção, use parâmetros de entrada para facilitar o teste, algo que combine com a fórmula.

  4. No editor de fórmulas, coloque o parâmetro Out entre chaves:

    {Out: "" }
    
  5. Insira uma expressão que teste a fórmula:

    • Valide se o Intellisense aceita a fórmula (o texto ficará azul claro).
    • Implemente uma expressão que forneça uma saída para ajudar a validar o resultado, por exemplo.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Selecione Próximo e Salvar.

  7. Selecione Testar para testar a fórmula. Use o parâmetro de saída para validar o resultado.

Validação de entrada e erros de personalização

Detecção de duplicidades

Implemente a validação de entrada no servidor, como detecção de erro de duplicidade, que gera uma mensagem de erro personalizada.

  1. Execute aplicativo de acelerador do Dataverse, na barra de comandos, e selecione Nova ação>Plug-in automatizado.
  2. Na caixa Nome, insira Verificação de duplicidade.
  3. Em Tabela, selecione Contato.
  4. Em Executar este plug-in quando a linha for, selecione Criada.
  5. Na caixa Fórmula, insira esta fórmula:
 If( !IsBlank(LookUp([@Contacts],'Last Name'=ThisRecord.'Last Name' && 'First Name'=ThisRecord.'First Name')),
    Error("You have existing contacts with the same first name and last name")
)
  1. Selecione Salvar.

Testar o plug-in

  1. Para testar o plug-in, crie um aplicativo de tela usando a tabela de contatos seguindo as etapas aqui: Especificar uma tabela.
  2. Crie uma linha de contato.
  3. Crie outro contato com o mesmo nome da etapa anterior.
  4. Uma mensagem é exibida indicando registros duplicados encontrados. Selecione Ignorar e salvar no prompt da mensagem de erro.

Esta mensagem de erro personalizada é exibida: Você tem dois contatos com nome e sobrenome iguais.

Validação de dados

Exiba tipos específicos de erros usando a enumeração ErrorKind.

  1. Crie um novo plug-in automatizado.

  2. Forneça os seguintes valores:

    • Nome: validação de entrada
    • Descrição: verifica se a data é válida e gera um erro se for inválida
    • Tabela: Compromisso
    • Executar este plug-in quando a linha for: Atualizada
  3. Insira a fórmula abaixo:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. Em Opções avançadas, defina Quando executar como Pré-operação; você vai executar essa regra antes que os dados sejam salvos para evitar dados inválidos.

  5. Selecione Salvar.

Acesse Error() function para saber mais sobre erros de personalização.

Enviar email com base em um evento de dados

Pré-requisitos:

Exemplo de modelo de email

Aqui está um exemplo de modelo de email que você pode criar para o evento de dados baseado em SenMail:

  • Tipo de modelo: Global
  • Nome: Agradecimento pelo pedido
  • Descrição: Use este modelo para agradecer a um cliente por fazer um pedido com você.
  • Assunto: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corpo: use este código.
   Hello {!Sales Order:First Name;},
   Order Type: {! Sales Order: Order Type;},
   Location Type: {! Sales Order: Location Type;},
   Address1: {! Sales Order: Address 1;},
   Address2: {! Sales Order: Address 2;},
   Preferred Service Start Date 1: {! Sales Order: Preferred Service Start Date;},
   Next Step- We take upto 48 hrs to schedule an in-person and will notify you as soon as we have a In-person Technician allocated at your site. For any questions, please contact us at 1-800-CON-SOLAR
   Yours Sincerely, 
   Contoso Sales 

Criar o plug-in automatizado

  1. Execute o aplicativo de acelerador do Dataverse e selecione +Novo plug-in em Plug-ins automatizados.
  2. Digite as seguintes informações:
    • Nome: SendEmailUponCreate

    • Tabela: selecione o nome lógica da tabela dos pedidos de venda, que é SalesOrder. Este evento é baseado na tabela Pedidos de venda.

    • Executar este plug-in quando a linha for: Criada

    • Fórmula: cole o código abaixo na caixa Fórmula. Para obter mais informações sobre a função SendEmailFromTemplate, consulte Ação SendEmailFromTemplate.

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. Selecione Avançado>Pós-operação.
  4. Selecione Salvar.

A mensagem de confirmação Plug-in salvo com sucesso aparece.

Enviar notificações no aplicativo com base em uma ação instantânea

As notificações no aplicativo permitem que os desenvolvedores configurem notificações contextuais e acionáveis para os usuários em aplicativos baseados em modelo.

Criar o plug-in low-code que envia uma notificação no aplicativo

  1. Execute o aplicativo acelerador do Dataverse e selecione +Novo plug-in em Plug-ins instantâneos.
  2. Insira as seguintes informações e selecione Próximo:
    • Nome: NotifyTechnican1
    • Descrição: Este plug-in instantâneo notifica o usuário do aplicativo.
  3. Na página Definições , crie parâmetros de entrada com estes tipos de dados:
    • OrderID: Cadeia de caracteres
    • TechnicalEmail: Cadeia de caracteres
  4. Fórmula. Na caixa Fórmula, cole o seguinte código. Para obter mais informações sobre essa função, acesse SendAppNotification Action.
     XSendAppNotification(
     	"New service",
     	LookUp(Users,'Primary Email'=TechnicianEmail),
     	"You have a new solar panel installation scheduled on "& LookUp('Scheduling Results','OrderId'=OrderID).'ServiceDate'&" in "& LookUp('Service Orders','Order Number'=OrderID).City &". Contact the coordinator with any questions.",
     [
     	XCreateSidePaneActionForEntity(
         		"View order",
     		OrderID,
     		"Sales Order",
     		"cr8b8_serviceorder1",
     		LookUp('Service Orders','Order Number'=OrderID).'Service Order'
         	)
     	]
     )
    
  5. Selecione Avançar.
  6. Selecione Salvar na página Resumo.

Chamar a ação instantânea de notificação no aplicativo

  1. Selecione um aplicativo de tela e, depois, a opção Editar na barra de comando (ou crie uma).
  2. Selecione a tela no painel de navegação esquerdo ou crie uma nova.
  3. No menu Inserir, adicione um Botão à página usando o TextoNotificar técnico.
  4. Selecione o botão e digite o seguinte na barra de fórmulas fx, onde DataCardValue17 é a coluna que contém o ID do pedido e DataCardValue15 é a coluna que contém o endereço de email do técnico. Neste exemplo, um aplicativo de tela chamado Service Order App é usado.
     Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
        TechnicianEmail: DataCardValue15.Text 
     });
    
       	Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Adicione um botão com a fórmula do Power Fx para enviar uma notificação ao técnico
  5. Salve e publique suas alterações.

Quando a ação de notificar técnico é selecionada no aplicativo, uma notificação no aplicativo é enviada ao técnico atribuído à ordem de serviço. Uma ação na notificação abre os detalhes da ordem de serviço em um painel lateral.

Notificação enviada ao técnico que recebe no aplicativo

Exemplo de plug-in instantâneo com conector MSN Weather

Este plug-in retorna o clima atual de um local específico usando o conector MSN Weather.

Pré-requisitos:

  1. Crie uma referência de conexão para o MSN Clima, se ainda não estiver disponível no ambiente: Crie uma referência de conexão no aplicativo a partir do painel de referências de conexão à direita

  2. Copiar trecho: Copiar o trecho de ação do painel de conexões

  3. Conclua a edição da fórmula usando o intellisense e consuma as propriedades de resposta do conector, conforme necessário: Concluir a definição de plug-in no editor

  4. Salvar

  5. Testar o plug-in

Dica

Use a função With() para capturar a resposta inteira de uma ação se você quiser acessar propriedades diferentes que a resposta possa ter. No exemplo abaixo, há um parâmetro de entrada Location (cadeia de caracteres) e um parâmetro de saída Out (cadeia de caracteres).

With({ /* Capture current weather response from connector */
c: new_MsnWeather.CurrentWeather( Location, "Imperial" ).responses.weather.current
},{	/* Return concatenated weather details */
Out: "Current temp: " & c.temp & " degrees. Feels like " & c.feels & " degrees. Wind speed is " & c.windSpd & " mph."
})

Práticas recomendadas

Lidando com erros de loop infinito em plug-ins low-code automatizados

Não escreva uma instrução de patch em um plug-in automatizado no evento 'Atualizar', em que o patch está acontecendo na mesma tabela do plug-in. Isso leva a loops infinitos e falhas na execução do plug-in.

Padrão problemático: o uso da fórmula Patch() desencadeia outra atualização.

Padrão recomendado: use a fórmula Set() para evitar esse problema.

Confira também

Plug-ins low-code do Power Fx (versão preliminar)