Partajați prin


Exemplu Dataverse pluginuri low-code (previzualizare)

[Acest subiect este documentație de prelansare și poate suferi modificări.]

Scopul acestor exemple de plug-in-uri este să vă ajute să începeți prin integrarea acestora în aplicațiile dvs. Veți înțelege că experiența de creație include crearea de Microsoft Dataverse API-uri personalizate susținute de Power Fx expresii, care pot declanșa acțiuni interne sau externe Dataverse.

Important

  • Plug-inurile instantanee low-code au prioritate și nu sunt livrate ca o funcție. Pluginurile instantanee low-code sunt înlocuite cu funcții. Mai multe informații: Funcții în Microsoft Dataverse (previzualizare)
  • Aceasta este o caracteristică de previzualizare.
  • Caracteristicile în regim de previzualizare nu sunt destinate utilizării în producție și pot avea funcționalitate restricționată. Aceste caracteristici sunt disponibile înainte de lansarea oficială, astfel încât clienții să poată obține acces din timp și să poată oferi feedback.

Cerințe preliminare

Pentru a utiliza unul dintre exemplele de plug-in-uri pentru evenimentul de date, aplicația Dataverse accelerator trebuie să fie instalată în mediu. Mai multe informații: Condiții preliminare pentru crearea unui plug-in low-code

Notă

Șabloanele de e-mail sunt disponibile numai pentru anumite tabele. Mai multe informații: Creați șabloane pentru e-mail

Returnează o valoare nenegativă

Acest exemplu folosește funcția Abs() pentru a returna valoarea nenegativă a argumentului său. Dacă un număr este negativ, Abs returnează echivalentul pozitiv.

  1. Redați Dataverse aplicația Accelerator, pe bara de comandă selectați Acțiune nouă>Plugin instant.

  2. Furnizați un nume afișat, cum ar fi numele formulei și descrierea.

  3. Creați un Out parametru pentru a valida comportamentul așteptat care are sens, cum ar fi un șir Opțional, utilizați parametrii de intrare pentru a ușura testarea, ceea ce are sens cu formula.

  4. În editorul de formule, împachetați parametrul Out în paranteze:

    {Out: "" }
    
  5. Introduceți o expresie care testează formula:

    • Validați că intellisense acceptă formula (textul devine albastru deschis).
    • Implementați o expresie care oferă o ieșire pentru a ajuta la validarea rezultatului, de exemplu.
    {Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 )  }
    
  6. Selectați Înainte, apoi selectați Salvați.

  7. Selectați Test pentru a testa formula. Utilizați parametrul de ieșire pentru a valida rezultatul.

Validarea intrărilor și erori personalizate

Detectarea duplicatelor

Implementați validarea intrărilor pe partea de server, cum ar fi detectarea erorilor duplicate care aruncă un mesaj de eroare personalizat.

  1. Redați Dataverse aplicația Accelerator, pe bara de comandă selectați Acțiune nouă>Plugin automatizat.
  2. În caseta Nume, introduceți Verificare dublură.
  3. Pentru Tabel, selectați Contact.
  4. Pentru Rulați acest plugin când rândul este, selectați Creat.
  5. În caseta Formulă , introduceți această formulă:
 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. Selectați Salvați.

Testați plug-in-ul

  1. Pentru a testa pluginul, creați o aplicație canvas folosind tabelul de contacte urmând pașii de aici: Specificați un tabel.
  2. Creați un rând de contact.
  3. Creați un alt contact cu același nume ca în pasul anterior.
  4. Este afișat un mesaj care indică înregistrările duplicate găsite. Selectați Ignorați și salvați în promptul mesaj de eroare.

Este afișat acest mesaj de eroare personalizat: Aveți două persoane de contact cu același nume și același nume.

Validarea datelor

Afișați anumite tipuri de erori utilizând enumerarea ErrorKind .

  1. Creați un nou plug-in automat.

  2. Furnizați următoarele valori:

    • Nume: Validare de intrare
    • Descriere: Verifică data validă și afișează o eroare dacă nu este validă
    • Tabel: Numire
    • Rulați acest plugin când rândul este : Actualizat
  3. Introduceți formula de mai jos:

    If(ThisRecord.'Due Date' < Now(), 
     Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" })
    );
    
  4. Sub Opțiuni avansate, setați Când ar trebui să ruleze la Pre-operare; doriți să executați această regulă înainte ca datele să fie salvate pentru a preveni datele nevalide.

  5. Selectați Salvați.

Accesați funcția Error() pentru a afla mai multe despre erorile personalizate.

Trimite e-mail pe baza unui eveniment de date

Cerințe preliminare:

Exemplu de șablon de e-mail

Iată un exemplu de șablon de e-mail pe care îl puteți crea pentru evenimentul de date bazat pe SenMail:

  • Tip șablon: Global
  • Nume: Comanda Vă mulțumim
  • Descriere: Utilizați acest șablon pentru a mulțumi unui client pentru că a plasat o comandă cu dvs.
  • Subiect: Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
  • Corp: utilizați acest cod.
   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 

Creați plug-in-ul automat

  1. Redați Dataverse aplicația Accelerator, apoi selectați +Plugin nou sub Pluginuri automate.
  2. Introduceți următoarele informații:
    • Nume: SendEmailUponCreate

    • Tabel: selectați numele tabelului logic al comenzilor de vânzare, care este Comandă de vânzări. Acest eveniment se bazează pe tabelul comenzi de vânzări.

    • Rulați acest plugin cu rândul este: Creat

    • Formula: inserați codul de mai jos în caseta Formulă . Pentru mai multe informații despre funcția SendEmailFromTemplate, la SendEmailFromTemplate Action.

      XSendEmailFromTemplate(
          LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template',
      ThisRecord,
      LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email]
      )
      
  3. Selectați Avansat>Postă operare.
  4. Selectați Salvați.

Apare mesajul de confirmare Plugin-ul a fost salvat cu succes .

Trimiteți notificări în aplicație pe baza unei acțiuni instantanee

Notificările în aplicație le permit producătorilor să configureze notificări contextuale și acționabile pentru utilizatorii din aplicațiile bazate pe model.

Creați pluginul low-code care trimite o notificare în aplicație

  1. Redați Dataverse aplicația accelerator, apoi selectați +Plugin nou sub Pluginuri instantanee.
  2. Introduceți următoarele informații, selectați Următorul:
    • Nume: NotifyTechnican1
    • Descriere: Acest plug-in instant notifică utilizatorul aplicației.
  3. Pe pagina Definiții , creați parametrii de intrare cu aceste tipuri de date:
    • OrderID: Șir
    • TechnicianEmail: Șir
  4. Formula. Lipiți următorul cod în caseta Formulă . Pentru mai multe informații despre această funcție, accesați 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. Selectați Următorul.
  6. Pe pagina Rezumat , selectați Salvare.

Invocați acțiunea instantanee de notificare în aplicație

  1. Selectați o aplicație canvas și apoi selectați Editați în bara de comandă (sau creați una nouă).
  2. Selectați ecranul din panoul de navigare din stânga sau creați unul nou.
  3. În meniul Inserare , adăugați un Buton la pagină utilizând TextNotificați tehnicianul.
  4. Selectați butonul și introduceți următoarele în fx bara de formule, unde DataCardValue17 este coloana care conține ID-ul comenzii și DataCardValue15 este coloana care conține adresa de e-mail a tehnicianului. În acest exemplu, este utilizată o aplicație canvas numită Aplicația de comandă de servicii .
     Environment.cr8b8_Notifytechnician1({
           OrderID: DataCardValue17.Text,
        TechnicianEmail: DataCardValue15.Text 
     });
    
       	Notify("The technician was notified!", NotificationType.Success, 2000);
    
    
    Adăugați un buton cu Power Fx formula pentru a trimite o notificare tehnicianului
  5. Salvați și publicați modificările dvs.

Când acțiunea de notificare a tehnicianului este selectată în aplicație, o notificare în aplicație este trimisă tehnicianului care a fost atribuit comenzii de service. O acțiune asupra notificării deschide detaliile comenzii de servicii într-un panou lateral.

Notificare trimisă tehnicianului care primește în aplicație

Exemplu de plug-in instant cu conector MSN Weather

Acest plugin returnează vremea curentă pentru o anumită locație utilizând Conector MSN Weather.

Cerințe preliminare:

  1. Creați o referință de conexiune pentru MSN Weather dacă nu este încă disponibilă în mediu: Creați o referință de conexiune în aplicație din panoul referințe de conexiune din dreapta

  2. Copiați fragmentul: Copiați fragmentul de acțiune din panoul de conexiuni

  3. Finalizați editarea formulei utilizând intellisense și consumați proprietățile de răspuns ale conectorului după cum este necesar: Completați definiția plug-in-ului în editor

  4. Salvați

  5. Testați plug-in-ul

Sfat

Utilizați funcția With() pentru a captura întregul răspuns dintr-o singură acțiune dacă doriți să accesați diferite proprietăți pe care le-ar putea avea răspunsul. În exemplul de mai jos, există un parametru de intrare Location (șir) și un parametru de ieșire Out (șir).

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

Cele mai bune practici

Gestionarea erorilor de buclă infinite în pluginuri automate low-code

Nu scrieți o declarație de corecție pe un plugin automat la evenimentul „Actualizare”, în care patch-ul are loc pe același tabel cu pluginul. Acest lucru duce la bucle infinite și eșecuri de execuție a pluginurilor.

Model problematic: utilizarea Patch() formula declanșează o altă actualizare. „Formulă problematică în pluginuri automate”

Model recomandat: utilizați în schimb formula Set() pentru a evita această problemă. „Formulă recomandată în pluginuri automate”

Consultați și

Pluginuri cu cod redus Power Fx (previzualizare)