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.
Reproduza a aplicação Dataverse Accelerator, na barra de comandos selecione Nova ação > Plug-in instantâneo.
Forneça um nome a apresentar, como o nome da fórmula e a descrição.
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.No editor de fórmulas, coloque o parâmetro
Out
entre chavetas:{Out: "" }
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 ) }
Selecione Seguinte e, em seguida, selecione Guardar.
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.
- Reproduza a aplicação Dataverse Accelerator, na barra de comandos selecione Nova ação > Plug-in automatizado.
- Na caixa Nome, introduza Verificação de duplicados.
- Para Tabela, selecione Contacto.
- Para Executar este plug-in quando a linha está, selecione Criado.
- 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")
)
- Selecione Guardar.
Testar o plug-in
- Para testar o plug-in, crie uma aplicação de tela utilizando a tabela de contactos seguindo os passos descritos aqui: Especificar uma tabela
- Crie uma linha de contacto.
- Crie outro contacto com o mesmo nome que no passo anterior.
- É 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.
Crie um novo plug-in automatizado.
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
Introduza a fórmula abaixo:
If(ThisRecord.'Due Date' < Now(), Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" }) );
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.
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:
- Sincronização do lado do servidor configurada para o seu ambiente. Mais informações: Configurar a sincronização do lado do servidor de e-mail, compromissos, contactos e tarefas
- Um modelo de e-mail.
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
- Reproduza a aplicação Dataverse Accelerator e, em seguida, selecione +Novo plug-in em Plug-in automatizados.
- 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] )
- Selecione Avançado > Pós-operação.
- 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
- Reproduza a aplicação de acelerador do Dataverse e, em seguida, selecione +Novo plug-in em Plug-ins instantâneos.
- Introduza as seguintes informações, selecione Seguinte:
- Nome: NotifyTechnican1
- Descrição: Este plug-in instantâneo notifica o utilizador da aplicação.
- Na página Definições, crie parâmetros de entrada com estes tipos de dados:
- OrderID: Cadeia
- TechnicianEmail: Cadeia
- 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' ) ] )
- Selecione Seguinte.
- Na página Resumo, selecione Guardar.
Invocar a ação instantânea de notificação na aplicação
- Selecione uma aplicação de tela e, em seguida, selecione Editar na barra de comandos (ou criar uma nova).
- Selecione o ecrã no painel de navegação esquerdo ou crie um novo.
- No menu Inserir, adicione um Botão à página, utilizando o Texto Notificar técnico.
- 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);
- 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.
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:
- Pré-requisitos para criar um plug-in low-code
- O conector MSN Meteorologia é permitido no ambiente
Criar uma referência de ligação para o MSN Meteorologia, se ainda não estiver disponível no ambiente:
Copiar o fragmento de código:
Concluir a edição da fórmula utilizando a intellisense e consumir as propriedades de resposta do conector conforme necessário:
Guardar
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.
Padrão recomendado: use a fórmula Set()
para evitar este problema.