Skapa en anpassad funktion för ett adaptivt formulär baserat på kärnkomponenter
Adaptiv Forms baserad på kärnkomponenter ger dynamiska användarupplevelser genom att justera innehåll och beteende baserat på användarindata. Med anpassade funktioner kan utvecklare utöka funktionaliteten och säkerställa att formulären uppfyller specifika krav. Genom att integrera anpassade funktioner kan utvecklare implementera komplex logik, automatisera processer och införa unika interaktioner som passar specifika affärskrav eller användarförväntningar. Det säkerställer att blanketterna inte bara anpassar sig till olika förhållanden utan också ger en mer exakt och effektiv lösning för olika användningsområden.
I den här artikeln får du hjälp med att skapa anpassade funktioner för Adaptive Forms med hjälp av kärnkomponenter.
Överväganden
-
parameter typeochreturn typestöder inteNone. -
De funktioner som inte stöds i den anpassade funktionslistan är:
- Generatorfunktioner
- Async-/Await-funktioner
- Metoddefinitioner
- Klassmetoder
- Standardparametrar
- Restparametrar
-
De senaste ECMAScript-funktionerna är tillgängliga som tidig åtkomst (EA), medan upp till ECMAScript 2019 stöds i allmänhet.
Krav för att skapa en anpassad funktion
Innan du börjar lägga till en anpassad funktion i din adaptiva Forms måste du se till att du har följande:
Programvara:
-
Vanlig textredigerare (IDE): En integrerad utvecklingsmiljö (IDE), som Microsoft Visual Studio Code, har avancerade funktioner för enklare redigering, även om en vanlig textredigerare kan fungera.
-
Git: Versionskontrollsystemet krävs för att hantera kodändringar. Om du inte har det installerat hämtar du det från https://git-scm.com.
Skapa en anpassad funktion
Skapa ett klientbibliotek för att anropa anpassade funktioner i regelredigeraren. Mer information finns i Använda klientbibliotek.
Steg för att skapa anpassade funktioner är:
Skapa ett klientbibliotek create-client-library
Du kan lägga till anpassade funktioner genom att lägga till ett klientbibliotek. Så här skapar du ett klientbibliotek:
Klona databasen
Klona din AEM Forms as a Cloud Service-databas:
-
Öppna kommandoraden eller terminalfönstret.
-
Navigera till önskad plats på datorn där du vill lagra databasen.
-
Kör följande kommando för att klona databasen:
git clone [Git Repository URL]
Det här kommandot hämtar databasen och skapar en lokal mapp för den klonade databasen på din dator. I hela den här handboken ser vi den här mappen som [AEMaaCS-projektkatalog].
Lägg till en klientbiblioteksmapp
Så här lägger du till en ny biblioteksmapp för klienten i [AEMaaCS-projektkatalogen]:
-
Öppna [AEMaaCS-projektkatalogen] i en redigerare.
-
Sök efter
ui.apps. -
Lägg till ny mapp. Lägg till exempel till en mapp med namnet
experience-league. -
Navigera till mappen
/experience-league/och lägg till enClientLibraryFolder. Skapa till exempel en klientbiblioteksmapp med namnetcustomclientlibs.Location is: [AEMaaCS project directory]/ui.apps/src/main/content/jcr_root/apps/
Lägg till filer och mappar i mappen Klientbibliotek
Lägg till följande i den tillagda klientbiblioteksmappen:
- .content.xml-fil
- js.txt, fil
- js-mapp
Location is: [AEMaaCS project directory]/ui.apps/src/main/content/jcr_root/apps/experience-league/customclientlibs/
-
Lägg till följande kodrader i
.content.xml:code language-javascript <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" jcr:primaryType="cq:ClientLibraryFolder" categories="[customfunctionscategory]"/>note note NOTE Du kan välja vilket namn som helst för egenskapen client library folderochcategories. -
Lägg till följande kodrader i
js.txt:code language-javascript #base=js function.js -
Lägg till javascript-filen som
jsi mappenfunction.jssom innehåller de anpassade funktionerna:code language-javascript /** * Calculates Age * @name calculateAge * @param {object} field * @return {string} */ function calculateAge(field) { var dob = new Date(field); var now = new Date(); var age = now.getFullYear() - dob.getFullYear(); var monthDiff = now.getMonth() - dob.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) { age--; } return age; } -
Spara filerna.
Inkludera den nya mappen i filter.xml:
-
Navigera till filen
/ui.apps/src/main/content/META-INF/vault/filter.xmli [AEMaaCS-projektkatalogen]. -
Öppna filen och lägg till följande rad i slutet:
<filter root="/apps/experience-league" /> -
Spara filen.
Distribuera den nyligen skapade biblioteksmappen för klient till din AEM-miljö
Distribuera AEM as a Cloud Service, [AEMaaCS-projektkatalogen], till din Cloud Service-miljö. Så här distribuerar du till din Cloud Service-miljö:
-
Verkställ ändringarna
- Lägg till, implementera och skicka ändringarna i databasen med följande kommandon:
code language-javascript git add . git commit -a -m "Adding custom functions" git push -
Distribuera den uppdaterade koden:
- Utlösa en distribution av koden via den befintliga pipeline-funktionen för hela stackar. Detta skapar och distribuerar automatiskt den uppdaterade koden.
Om du inte redan har konfigurerat en pipeline kan du läsa guiden Konfigurera en pipeline för AEM Forms as a Cloud Service.
När pipeline har körts blir den anpassade funktion som lagts till i klientbiblioteket tillgänglig i regelredigeraren Adaptiv form.
Lägga till klientbibliotek i ett adaptivt formulär use-custom-function
När du har distribuerat klientbiblioteket till Forms CS-miljön kan du använda funktionerna i ditt adaptiva formulär. Lägga till klientbiblioteket i ditt adaptiva formulär
-
Öppna formuläret i redigeringsläge. Om du vill öppna ett formulär i redigeringsläge markerar du ett formulär och väljer Edit.
-
Öppna innehållsläsaren och markera komponenten Guide Container i det adaptiva formuläret.
-
Klicka på ikonen för egenskaper för stödlinjebehållaren
. Dialogrutan Adaptiv formulärbehållare öppnas. -
Öppna fliken Basic och välj namnet på client library category i listrutan (välj i det här fallet
customfunctionscategory).
note note NOTE Du kan lägga till flera kategorier genom att ange en kommaavgränsad lista i fältet Client library category. -
Klicka på Done.
Du kan använda den anpassade funktionen i regelredigeraren för ett adaptivt formulär med JavaScript-anteckningar.
Använda en anpassad funktion i ett adaptivt formulär
I ett anpassat formulär kan du använda anpassade funktioner i regelredigeraren. Låt oss lägga till följande kod i JavaScript-filen (Function.js) för att beräkna ålder baserat på födelsedatum (ÅÅÅÅ-MM-DD). Skapa en anpassad funktion som calculateAge() som tar födelsedatumet som indata och returnerar ålder:
/**
* Calculates Age
* @name calculateAge
* @param {object} field
* @return {string}
*/
function calculateAge(field) {
var dob = new Date(field);
var now = new Date();
var age = now.getFullYear() - dob.getFullYear();
var monthDiff = now.getMonth() - dob.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) {
age--;
}
return age;
}
I ovanstående exempel anropas den anpassade funktionen calculateAge när användaren anger födelsedatumet i formatet (ÅÅÅÅ-MM-DD) och sedan returnerar ålder.
Låt oss förhandsgranska formuläret för att se hur de anpassade funktionerna implementeras via regelredigeraren:
Funktioner för anpassade funktioner
Anpassade funktioner i AEM-blanketter är en robust lösning för att utöka och personalisera funktionaliteten i era blanketter. Du kan använda anpassade funktioner för att tillgodose organisationens specifika behov.
Dessa funktioner har stöd för olika funktioner, bland annat att arbeta med specifika fält, använda globala fält och asynkrona åtgärder samt att införliva cachningsmekanismer. Tack vare den här flexibiliteten kan blanketterna anpassas efter komplexa krav och ge en effektiv, skräddarsydd användarupplevelse. Genom att utnyttja dessa avancerade funktioner kan ni förbättra interaktionen med blanketterna och optimera prestandan, så att era AEM-blanketter blir både mer funktionella och lättillgängliga.
Låt oss dyka upp i funktionerna för anpassade funktioner.
Asynkront stöd i anpassade funktioner support-of-async-functions
Du kan implementera asynkrona funktioner i regelredigeraren med anpassade funktioner. Mer information om hur du gör detta finns i artikeln Använda asynkrona funktioner i ett adaptivt formulär.
Field- och Global scope-objekt har stöd för anpassade funktioner support-field-and-global-objects
Fältobjekt refererar till de enskilda komponenterna eller elementen i ett formulär, t.ex. textfält och kryssrutor. Globals-objektet innehåller skrivskyddade variabler som formulärinstans, målfältsinstans och metoder för att göra formulärändringar i anpassade funktioner.
param {scope} globals måste vara den sista parametern och visas inte i regelredigeraren för ett anpassat formulär.Mer information om omfångsobjekt finns i artikeln Omfångsobjekt i anpassade funktioner.
Cachelagring stöds i anpassad funktion
Adaptiv Forms implementerar cachning för anpassade funktioner för att förbättra svarstiden samtidigt som den anpassade funktionslistan hämtas i regelredigeraren. Ett meddelande som Fetched following custom functions list from cache visas i filen error.log.
Om de anpassade funktionerna ändras blir cachningen ogiltig och den tolkas.
Felsökning
-
Om det uppstår ett fel i JavaScript-filen som innehåller kod för anpassade funktioner visas inte de anpassade funktionerna i regelredigeraren i ett anpassat formulär. Om du vill kontrollera listan med anpassade funktioner kan du navigera till filen
error.logför felet. Om ett fel uppstår visas listan med anpassade funktioner tom:
Om det inte finns något fel hämtas den anpassade funktionen och visas i filen
error.log. Ett meddelande somFetched following custom functions listvisas i filenerror.log:
Nästa steg
Låt oss nu se olika exempel på anpassade funktioner för ett adaptivt formulär baserat på kärnkomponenter.
Se även
- Introduktion till regelredigeraren för adaptiv Forms baserat på kärnkomponenter
- Operatortyper och händelser i regelredigeraren för ett adaptivt formulär baserat på kärnkomponenter
- Regelredigerarens användargränssnitt för adaptiv Forms baserat på kärnkomponenter
- Olika användningsområden för regelredigeraren för ett adaptivt formulär baserat på kärnkomponenter
- Skillnader i olika utgåvor av regelredigeraren
- Använda asynkrona funktioner i ett adaptivt formulär
- Anropa tjänstförbättringar i Visual Rule Editor för formulär som baseras på kärnkomponenter
- Introduktion till anpassade funktioner för adaptiv Forms baserat på kärnkomponenter
- Skapa en anpassad funktion för ett adaptivt formulär baserat på kärnkomponenter
- Omfångsobjekt i anpassade funktioner
- Exempel på utveckling och användning av en anpassad funktion