Esempio di plug-in con poco codice di Dataverse (anteprima)

[Questo argomento fa parte della documentazione non definitiva, pertanto è soggetto a modifiche.]

L'obiettivo di questi plug-in di esempio è aiutarti a nelle attività iniziali integrandoli nelle tue app. Scoprirai che l'esperienza di creazione include la creazione di API personalizzate di Microsoft Dataverse supportate da espressioni Power Fx, che possono attivare azioni interne o esterne a Dataverse.

Importante

  • Questa è una funzionalità di anteprima.
  • Le funzionalità di anteprima non sono destinate ad essere utilizzate per la produzione e sono soggette a restrizioni. Queste funzionalità sono disponibili prima di una versione ufficiale di modo che i clienti possano ottenere un accesso prioritario e fornire dei commenti.

Prerequisito

Per utilizzare uno dei plug-in di esempio per l'evento di dati, l'app Acceleratore Dataverse deve essere installata nell'ambiente. Ulteriori informazioni: Prerequisiti per la creazione di un plug-in con uso limitato di codice

Nota

I modelli di messaggio e-mail sono disponibili solo per determinate tabelle. Maggiori informazioni: Creare modelli per la posta elettronica

Restituire un valore non negativo

Questo esempio utilizza la funzione Abs per restituire il valore non negativo del relativo argomento. Se un numero è negativo, Abs restituisce l'equivalente positivo.

  1. Riproduci l'app Dataverse Accelerator, sulla barra dei comandi seleziona Nuova azione > Plug-in istantaneo.

  2. Fornisci un nome visualizzato, ad esempio il nome della formula, e la descrizione.

  3. Crea un parametro Out per verificare che il comportamento previsto abbia senso, ad esempio una stringa È possibile utilizzare i parametri di input per semplificare il test, che abbia senso con la formula.

  4. Nell'editor di formule inserisci il parametro Out tra parentesi graffe:

    {Out: "" }
    
  5. Inserisci un'espressione che verifica la formula:

    • Verifica che IntelliSense accetti la formula (il testo diventa azzurro).
    • Ad esempio, implementa un'espressione che fornisca un output per contribuire a convalidare il risultato.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Seleziona Avanti, quindi seleziona Salva.

  7. Seleziona Test per testare la formula. Utilizza il parametro di output per convalidare il risultato.

Convalida dell'input ed errori personalizzati

Rilevamento duplicati

Implementa la convalida dell'input lato server, come il rilevamento di errori duplicati, che genera un messaggio di errore personalizzato.

  1. Riproduci l'app Dataverse Accelerator, sulla barra dei comandi seleziona Nuova azione > Plug-in automatico.
  2. Nella casella Nome inserisci Controllo duplicati.
  3. Per Tabella, seleziona Contatto.
  4. Per Esegui questo plug-in quando la riga è, seleziona Creata.
  5. Nella casella Formula inserisci questa formula:
 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. Seleziona Salva.

Testare il plug-in

  1. Per testare il plug-in, crea un'app canvas utilizzando la tabella dei contatti seguendo i passaggi seguenti: Specificare una tabella
  2. Crea una riga di contatto.
  3. Crea un altro contatto con lo stesso nome del passaggio precedente.
  4. Viene visualizzato un messaggio che indica i record duplicati trovati. Seleziona Ignora e salva sul prompt del messaggio di errore.

Viene visualizzato questo messaggio di errore personalizzato: Hai due contatti con lo stesso nome e cognome.

Convalida dei dati

Visualizza tipi specifici di errori utilizzando l'enumerazione ErrorKind.

  1. Crea un nuovo plug-in automatico.

  2. Specificare i valori seguenti:

    • Nome: Convalida dell'input
    • Descrizione: Controlla la data valida e genera un errore se non valida
    • Tabella: Appuntamento
    • Esegui questo plug-in quando la riga è: Aggiornata
  3. Immetti la formula seguente:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. Sotto Opzioni avanzate imposta Quando dovrebbe essere eseguito su Operazione preliminare; si desidera eseguire questa regola prima che i dati vengano salvati per evitare dati non validi.

  5. Seleziona Salva.

Vai alla Funzione errore per ulteriori informazioni sugli errori personalizzati.

Inviare e-mail in base a un evento di dati

Prerequisiti:

Esempio di modello di messaggio e-mail

Ecco un esempio di modello di messaggio e-mail che puoi creare per l'evento di dati basato su SenMail:

  • Tipo di modello: Globale
  • Nome: Grazie dell'ordine
  • Descrizione: Utilizza questo modello per ringraziare un cliente per aver effettuato un ordine.
  • Oggetto: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corpo: Utilizza questo codice.
   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 

Creare il plug-in automatico

  1. Riproduci l'app Dataverse Accelerator, quindi seleziona +Nuovo plug-in in Plugin automatici.
  2. Immettere le informazioni seguenti:
    • Nome: SendEmailUponCreate

    • Tabella: seleziona il nome della tabella logica degli ordini di vendita, ovvero SalesOrder. Questo evento è basato sulla tabella Ordini vendita.

    • Esegui questo plug-in quando la riga è: Creata

    • Formula: incolla il codice qui sotto nella casella Formula. Per ulteriori informazioni sulla funzione SendEmailFromTemplate, vai all'Azione SendEmailFromTemplate.

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. Seleziona Avanzato > Operazione successiva.
  4. Seleziona Salva.

Viene visualizzato il messaggio di conferma Plug-in salvato.

Inviare notifiche in-app basate su un'azione istantanea

Le notifiche in-app consentono ai produttori di configurare notifiche contestuali e utilizzabili per gli utenti nelle app basate su modello.

Creare il plug-in con uso limitato di codice che invia una notifica in-app

  1. Avvia l'app Acceleratore Dataverse, quindi seleziona +Nuovo plug-in in Plugin istantanei.
  2. Immetti le seguenti informazioni, seleziona Avanti:
    • Name: NotifyTechnican1
    • Descrizione: Questo plug-in istantaneo avvisa l'utente dell'app.
  3. Nella pagina Definizioni crea parametri di input con questi tipi di dati:
    • OrderID: Stringa
    • TechnicianEmail: Stringa
  4. Formula. Incolla il codice seguente nella casella Formula. Per altre informazioni su questa funzione, vai ad Azione 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. Seleziona Avanti.
  6. Nella pagina Riepilogo, seleziona Salva.

Richiamare l'azione istantanea di notifica in-app

  1. Seleziona un'app canvas, quindi seleziona Modifica sulla barra dei comandi (o creane una nuova).
  2. Seleziona la schermata nel riquadro di spostamento a sinistra o creane una nuova.
  3. Nel menu Inserisci aggiungi un Pulsante alla pagina utilizzando il Testo Avvisa tecnico.
  4. Seleziona il pulsante e inserisci quanto segue nella barra della formula fx, dove DataCardValue17 è la colonna che contiene l'ID ordine e DataCardValue15 è la colonna che contiene l'indirizzo e-mail del tecnico. In questo esempio viene utilizzata un'app canvas denominata App ordine di servizio.
    Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
       TechnicianEmail: DataCardValue15.Text 
    });
    
        Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Aggiungi un pulsante con la formula Power Fx per inviare una notifica al tecnico
  5. Salva e Pubblica le tue modifiche.

Quando nell'app viene selezionata l'azione di notifica al tecnico, viene inviata una notifica in-app al tecnico che è stato assegnato all'ordine di assistenza. Un'azione sulla notifica apre i dettagli dell'ordine di assistenza in un riquadro laterale.

Notifica inviata al tecnico che riceve in app

Esempio di plug-in istantaneo con connettore MSN Weather

Questo plugin restituisce il meteo corrente per una posizione specifica utilizzando il connettore MSN Meteo.

Prerequisiti:

  1. Crea un riferimento a una connessione per MSN Weather se non ancora disponibile nell'ambiente: Crea un riferimento a una connessione nell'app dal riquadro dei riferimenti di connessione a destra

  2. Copia frammento di codice: Copia il frammento di codice dell'azione dal riquadro delle connessioni

  3. Completa la modifica della formula utilizzando IntelliSense e utilizza le proprietà della risposta del connettore secondo necessità: Completa la definizione del plug-in nell'editor

  4. Salva

  5. Testare il plug-in

Suggerimento

Utilizza la funzione With() per acquisire l'intera risposta da un'azione se desideri accedere a diverse proprietà che la risposta potrebbe avere. Nell'esempio seguente, c'è un parametro di input Location (stringa) e un parametro di output Out (stringa).

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

Procedure consigliate

Gestione degli errori in cicli infiniti nei plug-in automatizzati con poco codice

Non scrivere una dichiarazione di patch su un plug-in automatizzato all'evento "Aggiornamento", in cui la patch si trova sulla stessa tabella del plug-in. Ciò porta a cicli infiniti e errori di esecuzione del plug-in.

Criterio problematico: l'utilizzo della formula Patch() attiva un altro aggiornamento. "Formula problematica nei plug-in automatizzati"

Criterio consigliato: utilizza la formula Set() per evitare questo problema. "Formula consigliata nei plug-in automatizzati"

Vedi anche

Plug-in con uso limitato di codice Power Fx (anteprima)