Partilhar via


Exemplo de plug-ins de low-code do Dataverse (pré-visualização)

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

O objetivo destes plug-ins de exemplo é ajudá-lo a começar a trabalhar integrando-os nas suas aplicações. Vai compreender que a experiência de criação inclui a criação de API personalizadas do Microsoft Dataverse suportadas por expressões do Power Fx, que podem desencadear ações internas ou externas para o Dataverse.

Importante

  • Esta é uma funcionalidade de pré-visualização.
  • As caraterísticas de pré-visualização não se destinam à produção e poderão ter caraterísticas restritas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que os clientes possam ter acesso antecipadamente e enviar comentários.

Pré-requisito

Para utilizar um dos plug-ins de exemplo para o evento de dados, a aplicação de acelerador do Dataverse tem de estar instalada no ambiente. Mais informações: Pré-requisitos para a criação de um plug-in low-code

Nota

Os modelos de e-mail só estão disponíveis para determinadas tabelas. Mais informações: Criar modelos para e-mail

Devolver um valor não negativo

Este exemplo usa a função Abs () para devolver o valor não negativo do seu argumento. Se um número for negativo, Abs devolve o equivalente positivo.

  1. Reproduza a aplicação Dataverse Accelerator, na barra de comandos selecione Nova ação > Plug-in instantâneo.

  2. Forneça um nome a apresentar, como o nome da fórmula e a descrição.

  3. Crie um parâmetro Out para validar o comportamento esperado que faça sentido, como uma cadeia Opcionalmente, utilize parâmetros de entrada para facilitar os testes, que faça sentido com a fórmula.

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

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

    • Valide se o intellisense aceita a fórmula (o texto fica azul claro).
    • Implemente uma expressão que fornece uma saída para ajudar a validar o resultado, por exemplo.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Selecione Seguinte e, em seguida, selecione Guardar.

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

Validação de entrada e erros personalizados

Deteção de duplicados

Implemente a validação de entrada do lado do servidor, como a deteção de erros duplicados, que emite uma mensagem de erro personalizada.

  1. Reproduza a aplicação Dataverse Accelerator, na barra de comandos selecione Nova ação > Plug-in automatizado.
  2. Na caixa Nome, introduza Verificação de duplicados.
  3. Para Tabela, selecione Contacto.
  4. Para Executar este plug-in quando a linha está, selecione Criado.
  5. Na caixa Fórmula, introduza 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 Guardar.

Testar o plug-in

  1. Para testar o plug-in, crie uma aplicação de tela utilizando a tabela de contactos seguindo os passos descritos aqui: Especificar uma tabela
  2. Crie uma linha de contacto.
  3. Crie outro contacto com o mesmo nome que no passo anterior.
  4. É apresentada uma mensagem a indicar os registos duplicados encontrados. Selecione Ignorar e guardar no aviso de mensagem de erro.

Esta mensagem de erro personalizada é apresentada: Tem dois contactos com o mesmos primeiro e último nomes.

Validação de dados

Apresente tipos específicos de erro utilizando 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 a data válida e emite um erro se for inválida
    • Tabela: Compromisso
    • Executar este plug-in quando a linha está: Atualizada
  3. Introduza 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 deve ser executado para Pré-operação; pretende executar esta regra antes de os dados serem guardados para prevenir dados inválidos.

  5. Selecione Guardar.

Aceda a Função de erro () para saber mais sobre erros personalizados.

Enviar e-mail com base num evento de dados

Pré-requisitos:

Exemplo de modelo de e-mail

Eis um exemplo de modelo de e-mail que pode criar para o SenMail com base no evento de dados:

  • Tipo de modelo: Global
  • Nome: Agradecimento da Encomenda
  • Descrição: Utilize este modelo para agradecer a um cliente por feito uma encomenda consigo.
  • Assunto: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corpo: Utilize 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. Reproduza a aplicação Dataverse Accelerator e, em seguida, selecione +Novo plug-in em Plug-in automatizados.
  2. Introduza as informações seguintes:
    • Nome: SendEmailUponCreate

    • Tabela: Selecione o nome da tabela lógica das ordens de venda, que é SalesOrder. Este evento baseia-se na tabela Ordens de Venda.

    • Executar este plug-in com a linha: Criada

    • Fórmula: colar o código abaixo na caixa Fórmula . Para obter mais informações sobre a função SendEmailFromTemplate, para a 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 Guardar.

Aparece a mensagem de confirmação Plug-in guardado com sucesso.

Enviar notificações na aplicação com base numa ação instantânea

As notificações na aplicação permitem que os criadores configurem notificações contextuais acionáveis para os utilizadores em aplicações condicionadas por modelos.

Criar o plug-in low-code que envia uma notificação na aplicação

  1. Reproduza a aplicação de acelerador do Dataverse e, em seguida, selecione +Novo plug-in em Plug-ins instantâneos.
  2. Introduza as seguintes informações, selecione Seguinte:
    • Nome: NotifyTechnican1
    • Descrição: Este plug-in instantâneo notifica o utilizador da aplicação.
  3. Na página Definições, crie parâmetros de entrada com estes tipos de dados:
    • OrderID: Cadeia
    • TechnicianEmail: Cadeia
  4. Fórmula. Cole o seguinte código na caixa Fórmula. Para mais informações sobre esta função, aceda a Ação SendAppNotification.
     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 Seguinte.
  6. Na página Resumo, selecione Guardar.

Invocar a ação instantânea de notificação na aplicação

  1. Selecione uma aplicação de tela e, em seguida, selecione Editar na barra de comandos (ou criar uma nova).
  2. Selecione o ecrã no painel de navegação esquerdo ou crie um novo.
  3. No menu Inserir, adicione um Botão à página, utilizando o Texto Notificar técnico.
  4. Selecione o botão e introduza o seguinte na barra de fórmulas fx, onde DataCardValue17 é a coluna que contém o ID da Encomenda e DataCardValue15 é a coluna que contém o endereço de e-mail do técnico. Neste exemplo, é utilizada uma aplicação de tela denominada Aplicação Ordem de Serviço.
    Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
       TechnicianEmail: DataCardValue15.Text 
    });
    
        Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Adicionar um botão com fórmula do Power Fx para enviar notificação ao técnico
  5. Guarde e Publique as alterações.

Quando a ação notificar técnico é selecionada na aplicação, é enviada uma notificação na aplicação ao técnico que tiver sido atribuído à ordem de serviço. Uma ação na notificação abre os detalhes da ordem de serviço num painel lateral.

Notificação enviada para técnico que recebe na aplicação

Amostra de plug-in instantâneo com o conector MSN Meteorologia

Este plug-in devolve a meteorologia atual de uma localização específica utilizando o conector MSN Meteorologia.

Pré-requisitos:

  1. Criar uma referência de ligação para o MSN Meteorologia, se ainda não estiver disponível no ambiente: Criar uma referência de ligação na aplicação a partir do painel de referências de ligação à direita

  2. Copiar o fragmento de código: Copiar o fragmento de código da ação a partir do painel de ligações

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

  4. Guardar

  5. Testar o plug-in

Dica

Utilize a função With() para capturar a resposta completa a partir de uma ação, se quiser aceder a propriedades diferentes que a resposta poderá ter. No exemplo abaixo, existe um parâmetro de entrada Location (cadeia) e um parâmetro de saída Out (cadeia).

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."
})

Melhores práticas

Tratamento de erros de ciclo infinito em plug-ins low-code automatizados

Não escreva uma instrução de patch num plug-in automatizado após o evento 'Atualizar', onde o patch está a acontecer na mesma tabela que o plug-in. Isso leva a ciclos infinitos e falhas de execução de plug-ins.

Padrão problemático: o uso da fórmula Patch() aciona outra atualização. "Fórmula problemática em plug-ins automatizados"

Padrão recomendado: use a fórmula Set() para evitar este problema. "Fórmula recomendada em plug-ins automatizados"

Consulte também

Plug-ins low-code do Power Fx (pré-visualização)