Exempel för att integrera komponent för utkast och inlämning med databas sample-for-integrating-drafts-submissions-component-with-database
Exempelöversikt sample-overview
Med AEM Forms portalutkast och skicka-komponenter kan användarna spara sina formulär som utkast och skicka dem senare från vilken enhet som helst. Användarna kan även se de inskickade formulären på portalen. För att aktivera den här funktionen tillhandahåller AEM Forms data- och metadatatjänster för att lagra data som fyllts i av en användare i formuläret och de formulärmetadata som är kopplade till utkast och skickade formulär. Dessa data lagras som standard i CRX-databasen. När användarna interagerar med blanketterna via AEM publiceringsinstans, som vanligtvis ligger utanför företagets brandvägg, kan det vara bra att anpassa datalagringen så att den blir säkrare och tillförlitligare.
Exemplet, som behandlas i det här dokumentet, är en referensimplementering av anpassade data- och metadatatjänster för att integrera komponenter för utkast och inskickning med en databas. Databasen som används i exempelimplementeringen är MySQL 5.6.24. Du kan emellertid integrera komponenterna för utkast och inskickning med valfri databas.
- De exempel och konfigurationer som beskrivs i det här dokumentet är enligt MySQL 5.6.24 och du måste ersätta dem på lämpligt sätt för ditt databassystem.
- Kontrollera att du har installerat den senaste versionen av AEM Forms tilläggspaket. En lista över tillgängliga paket finns i artikeln AEM Forms-utgåvor.
- Exempelpaketet fungerar bara med adaptiva Forms-sändningsåtgärder.
Konfigurera och konfigurera exemplet set-up-and-configure-the-sample
Utför följande steg på alla författare- och publiceringsinstanser för att installera och konfigurera exemplet:
-
Hämta följande aem-fp-db-integration-sample-pkg-6.1.2.zip -paket till filsystemet.
Exempelpaket för databasintegrering
-
Gå till AEM på https://[host]:[port]/crx/packmgr/.
-
Klicka på Upload Package.
-
Bläddra till paketet aem-fp-db-integration-sample-pkg-6.1.2.zip och klicka på OK.
-
Klicka på Install bredvid paketet för att installera paketet.
-
Gå till AEM Web Console Configuration
på https://[host]:[port]/system/console/configMgr. -
Klicka för att öppna Forms Portal Draft and Submission Configuration i redigeringsläge.
-
Ange värdena för egenskaperna enligt följande tabell:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 Egenskap Beskrivning Värde Forms Portal Draft Data Service Identifierare för datatjänsten för utkast formsportal.sampledataservice Forms Portal Draft Metadata Service Identifierare för metadatatjänsten för utkast formsportal.samplemetadataservice Forms Portal Submit Data Service Identifierare för Skicka datatjänst formsportal.sampledataservice Forms Portal Submit Metadata Service Identifierare för tjänsten Skicka metadata formsportal.samplemetadataservice Datatjänst för Forms Portal som väntar på signering Identifierare för datatjänsten för väntande signering formsportal.sampledataservice Metadatatjänst för Forms Portal som väntar på signering Identifierare för metadatatjänsten för väntande signering formsportal.samplemetadataservice note note NOTE Tjänsterna matchas av deras namn som anges som värde för nyckeln aem.formsportal.impl.prop
enligt följande:code language-java @Service(value = {SubmitDataService.class, DraftDataService.class}) @Property(name = "aem.formsportal.impl.prop", value = "formsportal.sampledataservice") @Service(value = { SubmitMetadataService.class, DraftMetadataService.class }) @Property(name = "aem.formsportal.impl.prop", value = "formsportal.samplemetadataservice")
Du kan ändra namn på data- och metadatatabellerna.
Så här anger du ett annat namn för metadatatabellen:
- I Web Console Configuration söker du efter och klickar på Exempel på implementering av Forms Portal Metadata Service. Du kan ändra värdena för datakälla, metadata eller ytterligare metadatatabellnamn.
Så här anger du ett annat namn för datatabellen:
- I Web Console Configuration söker du efter och klickar på Exempel på implementering av Forms Portal Data Service. Du kan ändra värdena för datakällan och datatabellnamnet.
note note NOTE Om du ändrar tabellnamnen anger du dem i formulärportalskonfigurationen. -
Låt andra konfigurationer vara som de är och klicka på Save.
-
Databasanslutningen kan göras via Apache Sling Connection Pooled Data Source.
-
För Apache Sling-anslutningen söker du efter och klickar för att öppna Apache Sling Connection Pooled DataSource i redigeringsläge i webbkonsolkonfigurationen. Ange värdena för egenskaperna enligt följande tabell:
- JDBC-drivrutinen för MySQL ingår inte i exemplet. Se till att du har etablerat dig för den och ange den information som krävs för att konfigurera JDBC-anslutningspoolen.
- Peka författaren och publicera instanser för att använda samma databas. Värdet för URI-fältet för JDBC-anslutningen måste vara samma för alla författare- och publiceringsinstanser.
-
Låt andra konfigurationer vara som de är och klicka på Save.
-
Om du redan har en tabell i databasschemat går du vidare till nästa steg.
Om du inte redan har en tabell i databasschemat kör du följande SQL-satser för att skapa separata tabeller för data, metadata och ytterligare metadata i databasschemat:
note note NOTE Du behöver inte olika databaser för författare och publiceringsinstanser. Använd samma databas på alla författare- och publiceringsinstanser. SQL-sats för datatabell
code language-sql CREATE TABLE `data` ( `owner` varchar(255) DEFAULT NULL, `data` longblob, `metadataId` varchar(45) DEFAULT NULL, `id` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL-sats för metadatatabell
code language-sql CREATE TABLE `metadata` ( `formPath` varchar(1000) DEFAULT NULL, `formType` varchar(100) DEFAULT NULL, `description` text, `formName` varchar(255) DEFAULT NULL, `owner` varchar(255) DEFAULT NULL, `enableAnonymousSave` varchar(45) DEFAULT NULL, `renderPath` varchar(1000) DEFAULT NULL, `nodeType` varchar(45) DEFAULT NULL, `charset` varchar(45) DEFAULT NULL, `userdataID` varchar(45) DEFAULT NULL, `status` varchar(45) DEFAULT NULL, `formmodel` varchar(45) DEFAULT NULL, `markedForDeletion` varchar(45) DEFAULT NULL, `showDorClass` varchar(255) DEFAULT NULL, `sling:resourceType` varchar(1000) DEFAULT NULL, `attachmentList` longtext, `draftID` varchar(45) DEFAULT NULL, `submitID` varchar(45) DEFAULT NULL, `id` varchar(60) NOT NULL, `profile` varchar(255) DEFAULT NULL, `submitUrl` varchar(1000) DEFAULT NULL, `xdpRef` varchar(1000) DEFAULT NULL, `agreementId` varchar(255) DEFAULT NULL, `nextSigners` varchar(255) DEFAULT NULL, `eSignStatus` varchar(45) DEFAULT NULL, `pendingSignID` varchar(45) DEFAULT NULL, `agreementDataId` varchar(255) DEFAULT NULL, `enablePortalSubmit` varchar(45) DEFAULT NULL, `submitType` varchar(45) DEFAULT NULL, `dataType` varchar(45) DEFAULT NULL, `jcr:lastModified` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ID_UNIQUE` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL-sats för ytterligare metadatakan
code language-sql CREATE TABLE `additionalmetadatatable` ( `value` text, `key` varchar(255) NOT NULL, `id` varchar(60) NOT NULL, PRIMARY KEY (`id`,`key`), CONSTRAINT 'additionalmetadatatable_fk' FOREIGN KEY (`id`) REFERENCES `metadata` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL-sats för kommentartabell
code language-sql CREATE TABLE `commenttable` ( `commentId` varchar(255) DEFAULT NULL, `comment` text DEFAULT NULL, `ID` varchar(255) DEFAULT NULL, `commentowner` varchar(255) DEFAULT NULL, `time` varchar(255) DEFAULT NULL);
-
Om du redan har tabellerna (data, metadata och ytterligare metadata) i databasschemat kör du följande ändringsfrågor:
SQL-sats för att ändra datatabellen
code language-sql ALTER TABLE `data` CHANGE `owner` `owner` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
SQL-sats för att ändra metadatatabellen
code language-sql ALTER TABLE metadata add markedForDeletion varchar(45) DEFAULT NULL
note note NOTE ALTER TABLE-metadatatilläggsfrågan misslyckas om du redan har kört den och kolumnen markedforDeletion finns i tabellen. code language-sql ALTER TABLE metadata add agreementId varchar(255) DEFAULT NULL, add nextSigners varchar(255) DEFAULT NULL, add eSignStatus varchar(45) DEFAULT NULL, add pendingSignID varchar(45) DEFAULT NULL, add agreementDataId varchar(255) DEFAULT NULL, add enablePortalSubmit varchar(45) DEFAULT NULL, add submitType varchar(45) DEFAULT NULL, add dataType varchar(45) DEFAULT NULL;
code language-sql ALTER TABLE `metadata` CHANGE `formPath` `formPath` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `formType` `formType` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `description` `description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `formName` `formName` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `owner` `owner` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `renderPath` `renderPath` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `showDorClass` `showDorClass` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `sling:resourceType` `sling:resourceType` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `profile` `profile` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `submitUrl` `submitUrl` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `xdpRef` `xdpRef` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
SQL-sats för att ändra tabellen med ytterligare metadata
code language-sql ALTER TABLE `additionalmetadatatable` CHANGE `value` `value` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, CHANGE `key` `key` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
Exempelimplementeringen är nu konfigurerad, som du kan använda för att lista dina utkast och överföringar medan du lagrar alla data och metadata i en databas. Nu ska vi se hur data och metadatatjänster är konfigurerade i exemplet.
Installera filen mysql-connector-java-5.1.39-bin.jar install-mysql-connector-java-bin-jar-file
Utför följande steg på alla författare- och publiceringsinstanser för att installera filen mysql-connector-java-5.1.39-bin.jar:
-
Navigera till
https://'[server]:[port]'/system/console/depfinder
och sök efter paketet com.mysql.jdbc. -
I kolumnen Exporterad av kontrollerar du om paketet exporteras av något paket.
Fortsätt om paketet inte exporteras av något paket.
-
Navigera till
https://'[server]:[port]'/system/console/bundles
och klicka på Install/Update. -
Klicka på Choose File och bläddra till filen mysql-connector-java-5.1.39-bin.jar. Markera även kryssrutorna Start Bundle och Refresh Packages.
-
Klicka på Install or Update. Starta om servern när du är klar.
-
(Endast Windows) Inaktivera systemets brandvägg för ditt operativsystem.
Exempelkod för formulärportaldata och metadatatjänst sample-code-for-forms-portal-data-and-metadata-service
Följande ZIP-adress innehåller FormsPortalSampleDataServiceImpl
och FormsPortalSampleMetadataServiceImpl
(implementeringsklasser) för gränssnitt för data- och metadatatjänster. Dessutom innehåller den alla klasser som krävs för kompilering av ovannämnda implementeringsklasser.
Verifiera längden på filnamnet verify-length-of-the-file-name
Databasimplementeringen av Forms Portal använder ytterligare metadatatabell. Tabellen har en sammansatt primärnyckel baserad på kolumnerna Key och id i tabellen. MySQL tillåter primärnycklar upp till 255 tecken. Du kan använda följande valideringsskript på klientsidan för att kontrollera längden på filnamnet som är kopplat till filwidgeten. Valideringen körs när en fil bifogas. Skriptet som ges i följande procedur visar ett meddelande när filnamnet är större än 150 (inklusive filtillägg). Du kan ändra skriptet för att kontrollera om det innehåller ett annat antal tecken.
Utför följande steg för att skapa ett klientbibliotek och använda skriptet:
-
Logga in på CRXDE och navigera till /etc/clientlibs/
-
Skapa en nod av typen cq:ClientLibraryFolder och ange namnet på noden. Exempel:
validation
.Klicka på Save All.
-
Högerklicka på noden, klicka på create new file och skapa en fil med tillägget .txt.
js.txt
Lägg till exempel till följande kod i den nyligen skapade TXT-filen och klicka på Save All.code language-javascript #base=util util.js
I ovanstående kod är
util
namnet på mappen ochutil.js
namnet på filen i mappenutil
. Mappenutil
och filenutil.js
skapas i följande steg. -
Högerklicka på noden
cq:ClientLibraryFolder
som skapades i steg 2 och välj Skapa > Skapa mapp. Skapa en mapp med namnetutil
. Klicka på Save All. Högerklicka på mappenutil
och välj Skapa > Skapa fil. Skapa en fil med namnetutil.js
. Klicka på Save All. -
Lägg till följande kod i filen util.js och klicka på Save All. Koden verifierar längden på filnamnet.
code language-javascript /* * ADOBE CONFIDENTIAL * ___________________ * * Copyright 2016 Adobe Systems Incorporated * All Rights Reserved. * * NOTICE: All information contained herein is, and remains * the property of Adobe Systems Incorporated and its suppliers, * if any. The intellectual and technical concepts contained * herein are proprietary to Adobe Systems Incorporated and its * suppliers and may be covered by U.S. and Foreign Patents, * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Adobe Systems Incorporated. * */ (function () { var connectWithGuideBridge = function (gb) { gb.connect(function () { //For first time load window.guideBridge.on("elementValueChanged" , function(event, payload) { var component = payload.target; // Field whose value has changed if(component.name == 'fileAttachment' && component.parent) { var fileItems = $('#'+payload.target.parent.id).find(".guide-fu-fileItem"); for (i = 0;i<fileItems.length;i++) { var filename = $(fileItems[i]).find(".guide-fu-fileName").text(); //check whether it is previously attached file or a newly attached one if(filename.length > 150 && filename.indexOf("fp.attach.jsp") < 0) { window.alert("filename is larger than 150 : "+filename); $(fileItems[i]).find(".guide-fu-fileClose.close").click(); } } } }); }); }; if (window.guideBridge) { connectWithGuideBridge(window.guideBridge); } else { window.addEventListener("bridgeInitializeStart", function (event) { connectWithGuideBridge(event.detail.guideBridge); }); } })();
note note NOTE Skriptet är avsett för widgetkomponenten för bifogad fil som inte finns i kartongen. Om du har anpassat den färdiga widgeten för bifogade filer ändrar du skriptet ovan så att respektive ändringar införs. -
Lägg till följande egenskap i mappen som skapades i steg 2 och klicka på Save All.
-
Name: kategorier
-
Type:-sträng
-
Value: fp.validation
-
multi option: har aktiverats
-
-
Navigera till
/libs/fd/af/runtime/clientlibs/guideRuntime
och lägg till värdetfp.validation
till egenskapen embed. -
Navigera till /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA och lägg till värdet
fp.validation
för att bädda in egenskapen.note note NOTE Om du använder anpassade klientbibliotek i stället för klientbiblioteken guideRuntime och guideRuntimeWithXfa använder du kategorinamnet för att bädda in klientbiblioteket som skapas i den här proceduren i dina anpassade bibliotek som läses in vid körning. -
Klicka på Save All.. När filnamnet är större än 150 tecken (inklusive filtillägg) visas ett meddelande.