Exempel för att integrera komponent för utkast och inlämning med databas sample-for-integrating-drafts-submissions-component-with-database

CAUTION
AEM 6.4 har nått slutet på den utökade supporten och denna dokumentation är inte längre uppdaterad. Mer information finns i teknisk supportperiod. Hitta de versioner som stöds här.

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.

NOTE
  • 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 AEM Forms artikel.
  • 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:

  1. Hämta följande aem-fp-db-integration-sample-pkg-6.1.2.zip till filsystemet.

    Exempelpaket för databasintegrering

Hämta fil

  1. Gå till AEM på https://[värd]:[port]/crx/packmgr/.

  2. Klicka på Upload Package.

  3. Bläddra för att välja aem-fp-db-integration-sample-pkg-6.1.2.zip paketera och klicka på OK.

  4. Klicka Install till bredvid paketet för att installera paketet.

  5. Gå till AEM Web Console Configuration
    på https://[värd]:[port]/system/console/configMgr.

  6. Klicka för att öppna Forms Portal Draft and Submission Configuration i redigeringsläge.

  7. 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 löses av deras namn som anges som värde för 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.
  8. Låt andra konfigurationer vara som de är och klicka på Save.

  9. Databasanslutningen kan göras via den poolade datakällan för Apache Sling-anslutningen.

  10. 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:

Egenskap
Värde
Datakällans namn

Ett datakällnamn för filtrering av drivrutiner från datakällpoolen

Obs! I exempelimplementeringen används FormsPortal som datakällnamn.

JDBC-drivrutinsklass
com.mysql.jdbc.Driver
URI för JDBC-anslutning
jdbc//[värd]:[port]/[schema_name]
Användarnamn
Ett användarnamn för att autentisera och utföra åtgärder på databastabeller
Lösenord
Lösenord som är kopplat till användarnamnet
Transaktionsisolering
READ_COMMTED
Maximalt antal aktiva anslutningar
1000
Maximalt antal inaktiva anslutningar
100
Minsta antal inaktiva anslutningar
10
Inledande storlek
10
Max. väntan
100000
Testa om Born
Markerad
Testa vid inaktivitet
Markerad
Valideringsfråga
Exempelvärden är SELECT 1(mysql), välj 1 från dual(oracle), SELECT 1(MS Sql Server) (validationQuery)
Timeout för verifieringsfråga
10000
NOTE
  • 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.
  1. Låt andra konfigurationer vara som de är och klicka på Save.

  2. 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 metadata

    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);
    
  3. 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:

  1. Navigera till https://[server]:[port]/system/console/depfinder och söka efter paketet com.mysql.jdbc.

  2. I kolumnen Exporterad av kontrollerar du om paketet exporteras av något paket.

    Fortsätt om paketet inte exporteras av något paket.

  3. Navigera till https://[server]:[port]/system/console/bundles och klicka Install/Update.

  4. Klicka Choose File och bläddra till filen mysql-connector-java-5.1.39-bin.jar. Välj även Start Bundle och Refresh Packages kryssrutor.

  5. Klicka på Install or Update. Starta om servern när du är klar.

  6. (Endast Windows) Stäng av operativsystemets brandvägg.

Exempelkod för formulärportaldata och metadatatjänst sample-code-for-forms-portal-data-and-metadata-service

Följande ZIP 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.

Hämta fil

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änd skriptet:

  1. Logga in på CRXDE och navigera till /etc/clientlibs/

  2. Skapa en nod av typen cq:ClientLibraryFolder och ange nodens namn. Till exempel, validation.

    Klicka på Save All.

  3. Högerklicka på noden och klicka på create new file och skapa en fil med tillägget .txt. Till exempel: js.txtLägg till följande kod i den nyligen skapade TXT-filen och klicka på Save All.

    code language-none
    #base=util
     util.js
    

    I ovanstående kod util är namnet på mappen och util.js filens namn i util mapp. The util mapp och util.js filen skapas i följande steg.

  4. Högerklicka på cq:ClientLibraryFolder som skapades i steg 2 väljer du Skapa > Skapa mapp. Skapa en mapp med namnet util. Klicka på Save All. Högerklicka på util väljer du Skapa > Skapa fil. Skapa en fil med namnet util.js. Klicka på Save All.

  5. Lägg till följande kod i filen util.js och klicka på Save All. Koden verifierar längden på filnamnet.

    code language-none
    /*
     * 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 OTB-fil. Om du har anpassat widgeten för bifogade OTB-filer ändrar du skriptet ovan så att respektive ändringar införs.
  6. 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: Aktiverad

  7. Navigera till /libs/fd/af/runtime/clientlibs/guideRuntimeoch lägg till fp.validation värdet till embed -egenskap.

  8. Navigera till /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA och lägg till fp.validation värde till embed -egenskap.

    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.
  9. Klicka Save All. När filnamnet är större än 150 tecken (inklusive filtillägg) visas nu ett meddelande.

recommendation-more-help
a6ebf046-2b8b-4543-bd46-42a0d77792da