Voorbeeld van Dataverse-invoegtoepassingen met weinig code (preview)
[Dit onderwerp maakt deel uit van de voorlopige documentatie en kan nog veranderen.]
Het doel van deze voorbeeldinvoegtoepassingen is om u te helpen aan de slag te gaan door deze in uw apps te integreren. U zult begrijpen dat de ontwerpervaring het ontwerpen van aangepaste API´s voor Microsoft Dataverse omvat ondersteund door Power Fx-expressies waarmee interne of externe acties voor Dataverse kunnen worden geactiveerd.
Belangrijk
- Dit is een preview-functie.
- Preview-functies zijn niet bedoeld voor productiegebruik en bieden mogelijk beperkte functionaliteit. Deze functies zijn beschikbaar vóór een officiële release zodat klanten vroeg toegang kunnen krijgen en feedback kunnen geven.
Vereiste
Om een van de voorbeeld-invoegtoepassingen te kunnen gebruiken voor de gegevensgebeurtenis, moet de Dataverse Accelerator-app in de omgeving zijn geïnstalleerd. Meer informatie: Vereisten voor het maken van een invoegtoepassing met weinig code
Notitie
E-mailsjablonen zijn alleen beschikbaar voor bepaalde tabellen. Meer informatie: Sjablonen maken voor e-mail
Een niet-negatieve waarde retourneren
In dit voorbeeld wordt de functie Abs() gebruikt om de niet-negatieve waarde van het bijbehorende argument te retourneren. Als een getal negatief is, retourneert Abs
het positieve equivalent.
Speel de app Dataverse Accelerator af en selecteer op de opdrachtbalk Nieuwe actie > Directe invoegtoepassing.
Geef een weergavenaam op, zoals de naam van de formule en een beschrijving.
Maak een
Out
-parameter om verwacht gedrag te valideren dat logisch is, zoals een tekenreeks. Gebruik desgewenst invoerparameters om testen gemakkelijker te maken, dat zinvol is voor de formule.Plaats in de formule-editor de
Out
-parameter tussen accolades:{Out: "" }
Voer een expressie in die de formule test:
- Controleer of IntelliSense de formule accepteert (tekst wordt lichtblauw).
- Implementeer een expressie die bijvoorbeeld een uitvoer verschaft om het resultaat te helpen valideren.
{Out: "Abs(-5) = 5: " & Text( Abs(-5) = 5 ) }
Selecteer Volgende en vervolgens Opslaan.
Selecteer Testen om de formule te testen. Gebruik de uitvoerparameter om het resultaat te valideren.
Invoervalidatie en aangepaste fouten
Duplicaatdetectie
Implementeer invoervalidatie aan serverzijde, zoals dubbele foutdetectie, waarmee een aangepast foutbericht wordt gegenereerd.
- Speel de app Dataverse Accelerator af en selecteer op de opdrachtbalk Nieuwe actie > Geautomatiseerde invoegtoepassing.
- Voer in het vak Naam Duplicatencontrole in.
- Selecteer voor Tabel Contactpersoon.
- Selecteer Gemaakt voor Deze invoegtoepassing uitvoeren als de rij is.
- Voer de volgende formule in het vak Formule in:
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")
)
- Selecteer Save.
De invoegtoepassing testen
- Om de invoegtoepassing te testen, maakt u een canvas-app met behulp van de contactpersonentabel door hier de stappen uit te voeren: Een tabel opgeven
- Maak een contactpersoonsrij.
- Maak nog een contactpersoon met dezelfde naam als in de vorige stap.
- Er wordt een bericht weergegeven waarin wordt aangegeven dat er dubbele records zijn gevonden. Selecteer Negeren en opslaan wanneer de foutberichtprompt verschijnt.
Dit aangepaste foutbericht wordt weergegeven: U hebt twee contactpersonen met dezelfde voor- en achternaam.
Gegevensvalidatie
Geef specifieke soorten fouten weer met behulp van de opsomming ErrorKind.
Maak een nieuwe geautomatiseerde invoegtoepassing.
Geef de volgende waarden op:
- Naam: Invoervalidatie
- Beschrijving: hiermee wordt gecontroleerd op geldige datum en wordt een fout gegenereerd als deze ongeldig is
- Tabel: Afspraak
- Deze invoegtoepassing uitvoeren als de rij is: Bijgewerkt
Voer de onderstaande formule in:
If(ThisRecord.'Due Date' < Now(), Error({ Kind: ErrorKind.Validation , Message: "The due date cannot be in the past" }) );
Stel onder Geavanceerde opties Wanneer moet dit worden uitgevoerd in op Vóór bewerking. U wilt deze regel uitvoeren voordat gegevens worden opgeslagen om ongeldige gegevens te voorkomen.
Selecteer Save.
Ga naar de functie Error() voor meer informatie over aangepaste fouten.
E-mail verzenden op basis van een gegevensgebeurtenis
Vereisten:
- Serversynchronisatie inschakelen voor uw omgeving. Meer informatie: Serversynchronisatie van e-mail, afspraken, contactpersonen en taken instellen
- Een e-mailsjabloon hebben.
Voorbeeld van een e-mailsjabloon
Hier is een voorbeeld van een e-mailsjabloon die u kunt maken voor de op SenMail gebaseerde gegevensgebeurtenis:
- Sjabloontype: Algemeen
- Naam: Bedankt voor bestelling
- Beschrijving: gebruik deze sjabloon om een klant te bedanken voor het plaatsen van een bestelling bij u.
- Onderwerp:
Thank you for your order <orderconfirmation-{!salesorder:Order Number; }>
- Hoofdtekst: gebruik deze code.
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
De geautomatiseerde invoegtoepassing maken
- Speel de app Dataverse Accelerator af en selecteer vervolgens +Nieuwe invoegtoepassing onder Geautomatiseerde invoegtoepassingen.
- Voer de volgende informatie in:
Naam: SendEmailUponCreate
Tabel: selecteer de logische tabelnaam van de verkooporders, namelijk SalesOrder. Deze gebeurtenis is gebaseerd op de tabel Verkooporders.
Deze invoegtoepassing uitvoeren als de rij is: Gemaakt
Formule: plak de onderstaande code in het vak Formule. Voor meer informatie over de functie SendEmailFromTemplate gaat u naar SendEmailFromTemplate-actie.
XSendEmailFromTemplate( LookUp('Email Templates',StartsWith(title,"Order Thank You")).'Email Template', ThisRecord, LookUp(Users,'Primary Email'="sampleemail@sample.com"),[ThisRecord.Email] )
- Selecteer Geavanceerd > Na bewerking.
- Selecteer Save.
Het bevestigingsbericht Invoegtoepassing is opgeslagen wordt weergegeven.
In-app-meldingen verzenden op basis van een directe actie
Met in-app-meldingen kunnen makers contextuele, bruikbare meldingen configureren voor gebruikers in modelgestuurde apps.
De invoegtoepassing met weinig code maken waarmee een in-app-melding wordt verzonden
- Speel de Dataverse Accelerator-app af en selecteer vervolgens +Nieuwe invoegtoepassing onder Instant invoegtoepassingen.
- Voer de volgende gegevens in en selecteer Volgende:
- Naam: NotifyTechnican1
- Beschrijving: met deze directe invoegtoepassing wordt de app-gebruiker geïnformeerd.
- Maak op de pagina Definities invoerparameters met de volgende gegevenstypen:
- OrderID: Tekenreeks
- TechnicianEmail: Tekenreeks
- Formule. Plak de volgende code in het vak Formule. Ga voor meer informatie over deze functie naar Actie 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' ) ] )
- Selecteer Volgende.
- Selecteer op de pagina Overzicht Opslaan.
De directe actie voor in-app-meldingen aanroepen
- Selecteer een canvas-app en selecteer vervolgens Bewerken op de opdrachtbalk (of maak een nieuwe).
- Selecteer een scherm in het linkernavigatievenster of maak een nieuw scherm.
- Voeg in het menu Invoegen een Knop toe aan de pagina met behulp van de Tekst Technicus op de hoogte stellen.
- Selecteer de knop en typ het volgende in de fx-formulebalk, waarbij DataCardValue17 de kolom is die het ordernummer bevat, en DataCardValue15 de kolom die het e-mailadres van de technicus bevat. In dit voorbeeld wordt een canvas-app met de naam Serviceorder-app gebruikt.
Environment.cr8b8_Notifytechnician1({ OrderID: DataCardValue17.Text, TechnicianEmail: DataCardValue15.Text }); Notify("The technician was notified!", NotificationType.Success, 2000);
- Selecteer Opslaan en Publiceren voor uw wijzigingen.
Wanneer de actie Technicus op de hoogte stellen is geselecteerd in de app, wordt er een in-app-melding verzonden naar de technicus die is toegewezen aan de serviceorder. Met een actie voor de melding worden de serviceorderdetails in een zijvenster geopend.
Voorbeeld van een instant invoegtoepassing met MSN weer-connector
Deze invoegtoepassing retourneert het huidige weer voor een specifieke locatie met behulp van MSN weer-connector.
Vereisten:
- Vereisten voor het maken van een invoegtoepassing met weinig code
- MSN weer-connector is toegestaan in de omgeving
Maak een verbindingsverwijzing aan voor MSN Weer als deze nog niet beschikbaar is in de omgeving:
Kopieer het fragment:
Voltooi het bewerken van de formule met behulp van IntelliSense en gebruik indien nodig de responseigenschappen van de connector:
Opslaan
Tip
Gebruik de functie With() om de volledige respons van één actie vast te leggen als u toegang wilt krijgen tot verschillende eigenschappen die de respons mogelijk heeft. In het onderstaande voorbeeld ziet u een invoerparameter Location
(tekenreeks) en een uitvoerparameter Out
(tekenreeks).
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."
})
Aanbevolen procedures
Oneindige lus-fouten afhandelen in geautomatiseerde invoegtoepassingen met weinig code
Schrijf geen patch-instructie over een geautomatiseerde invoegtoepassing tijdens de 'Update'-gebeurtenis, waarbij de patch plaatsvindt in dezelfde tabel als de invoegtoepassing. Dit leidt tot oneindige lussen en uitvoeringsfouten van invoegtoepassingen.
Problematisch patroon: het gebruik van de Patch()
-formule activeert een nieuwe update.
Aanbevolen patroon: gebruik in plaats daarvan de Set()
-formule om dit probleem te voorkomen.