Show Menu
ARGOMENTI×

Esempio per l’integrazione del componente bozze e invii con il database

Panoramica di esempio

Le bozze del portale AEM Forms e il componente di invio consentono agli utenti di salvare i moduli come bozze e di inviarli successivamente da qualsiasi dispositivo. Inoltre, gli utenti possono visualizzare i moduli inviati sul portale. Per abilitare questa funzionalità, i AEM Forms forniscono servizi per dati e metadati che consentono di memorizzare i dati compilati dall'utente nel modulo, nonché i metadati del modulo associati alle bozze e ai moduli inviati. Per impostazione predefinita, questi dati sono memorizzati nell'archivio CRX. Tuttavia, poiché gli utenti interagiscono con i moduli tramite l'istanza di pubblicazione AEM, che in genere si trova all'esterno del firewall aziendale, le organizzazioni possono voler personalizzare l'archiviazione dei dati per renderla più sicura e affidabile.
L’esempio, discusso in questo documento, è un’implementazione di riferimento di servizi di dati e metadati personalizzati per integrare le bozze e i componenti inviati in un database. Il database utilizzato nell'implementazione di esempio è MySQL 5.6.24 . Tuttavia, potete integrare il componente bozze e invii con qualsiasi database di vostra scelta.
  • Gli esempi e le configurazioni illustrati in questo documento sono conformi a MySQL 5.6.24 e devono essere sostituiti in modo appropriato per il sistema di database.
  • Verificate di aver installato la versione più recente del pacchetto del componente aggiuntivo AEM Forms. Per l'elenco dei pacchetti disponibili, consultate l'articolo sui rilasci di AEM Forms .
  • Il pacchetto di esempio funziona solo con le azioni di invio Moduli adattivi.

Configurare e configurare l’esempio

Per installare e configurare l’esempio, eseguite i seguenti passaggi, su tutte le istanze di creazione e pubblicazione:
  1. Scaricate il seguente pacchetto aem-fp-db-integration-sample-pkg-6.1.2.zip nel file system.
    Pacchetto di esempio per l'integrazione del database
  2. Andate a AEM Package Manager all'indirizzo https:// # : # /crx/packmgr/.
  3. Fate clic su Carica pacchetto .
  4. Selezionate il pacchetto aem-fp-db-integration-sample-pkg-6.1.2.zip e fate clic su OK .
  5. Fate clic su Installa accanto al pacchetto per installare il pacchetto.
  6. Andate alla pagina Configurazione della console Web di AEM all'indirizzo https:// # : # /system/console/configMgr.
  7. Fare clic per aprire la configurazione Bozza e Invio di Forms Portal in modalità di modifica.
  8. Specificare i valori delle proprietà come descritto nella tabella seguente:
    Proprietà
    Descrizione
    Valore
    Servizio dati bozza di Forms Portal
    Identificatore per il servizio dati bozza
    formsportal.sampledataservice
    Servizio metadati bozza del portale Forms
    Identificatore per il servizio di metadati bozza
    formsportal.samplemetadataservice
    Servizio di invio dati Forms Portal
    Identificatore per il servizio dati di invio
    formsportal.sampledataservice
    Servizio di invio metadati del portale Forms
    Identificatore per il servizio di invio metadati
    formsportal.samplemetadataservice
    Servizio di firma dati in sospeso di Forms Portal
    Identificatore per il servizio dati Firma in sospeso
    formsportal.sampledataservice
    Servizio metadati firma in sospeso di Forms Portal
    Identificatore per il servizio metadati Firma in sospeso
    formsportal.samplemetadataservice
    I servizi vengono risolti con i relativi nomi indicati come valore per la aem.formsportal.impl.prop chiave come segue:
    @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")
    
    
    È possibile modificare i nomi delle tabelle di dati e metadati.
    Per assegnare un nome diverso alla tabella di metadati:
    • Nella console Web Configuration (Configurazione console Web), individuare e fare clic su Forms Portal Metadata Service Sample Implementation. Potete modificare i valori dell’origine dati, i metadati o il nome della tabella di metadati aggiuntivi.
    Per specificare un nome diverso per la tabella di dati:
    • In Configurazione console Web, individuare e fare clic su Implementazione di esempio del servizio dati di Forms Portal. È possibile modificare i valori dell'origine dati e il nome della tabella dati.
    Se si modificano i nomi delle tabelle, fornirli nella configurazione di Form Portal.
  9. Lasciate invariate le altre configurazioni e fate clic su Salva .
  10. La connessione al database può essere eseguita tramite Apache Sling Connection Pooled Data Source.
  11. Per la connessione Apache Sling, trovare e fare clic per aprire Apache Sling Connection Conpool DataSource in modalità di modifica nella configurazione della console Web. Specificare i valori delle proprietà come descritto nella tabella seguente:
Proprietà Valore
Nome origine dati
Nome origine dati per filtrare i driver dal pool di origini dati
Nota: L'implementazione di esempio utilizza FormsPortal come nome dell'origine dati.
Classe driver JDBC com.mysql.jdbc.Driver
URI connessione JDBC jdbc:mysql://[ host ]:[ porta ]/[ nome _schema]
Nome utente Un nome utente per l'autenticazione e l'esecuzione di azioni sulle tabelle del database
Password Password associata al nome utente
Isolamento transazione READ_COMMTED
Numero massimo di connessioni attive 1000
Numero massimo di connessioni inattive 100
Connessioni con inattività minima 10
Dimensione iniziale 10
Max 100000
Test di credito Selezionato
Test while Idle Selezionato
Query convalida I valori di esempio sono SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server) (validationQuery)
Timeout query di convalida 10000
  • Il driver JDBC per MySQL non è fornito con l'esempio. Assicurarsi di aver effettuato il provisioning e fornire le informazioni necessarie per configurare il pool di connessioni JDBC.
  • Indicate le istanze di creazione e pubblicazione per utilizzare lo stesso database. Il valore del campo URI della connessione JDBC deve essere lo stesso per tutte le istanze di creazione e pubblicazione.
  1. Lasciate invariate le altre configurazioni e fate clic su Salva .
  2. Se nello schema del database è già presente una tabella, passare al passaggio successivo.
    In caso contrario, se nello schema del database non è già presente una tabella, eseguire le seguenti istruzioni SQL per creare tabelle separate per i dati, i metadati e i metadati aggiuntivi nello schema del database:
    Non sono necessari database diversi per le istanze di creazione e pubblicazione. Usate lo stesso database per tutte le istanze di creazione e pubblicazione.
    Istruzione SQL per la tabella di dati
    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;
    
    
    Istruzione SQL per la tabella di metadati
    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;
    
    
    Istruzione SQL per i metadati aggiuntivi
    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;
    
    
    Istruzione SQL per la tabella dei commenti
    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. Se nello schema del database sono già presenti tabelle (dati, metadati e altri metadati), eseguire le seguenti query di modifica della tabella:
    Istruzione SQL per la modifica della tabella di dati
    ALTER TABLE `data` CHANGE `owner` `owner` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
    
    
    Istruzione SQL per la modifica della tabella di metadati
    ALTER TABLE metadata add markedForDeletion varchar(45) DEFAULT NULL
    
    
    La query di aggiunta metadati ALTER TABLE non riesce se è già stata eseguita e la colonna marcata per Deletion è presente nella tabella.
    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;
    
    
    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;
    
    
    Istruzione SQL per la modifica della tabella aggiuntiva metadati
    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;
    
    
L'implementazione di esempio è ora configurata, che consente di elencare le bozze e gli invii durante la memorizzazione di tutti i dati e metadati in un database. Vediamo ora in che modo i servizi di dati e metadati sono configurati nell’esempio.

Installare il file mysql-Connector-java-5.1.39-bin.jar

Per installare il file mysql-Connector-java-5.1.39-bin.jar, eseguite i seguenti passaggi in tutte le istanze di creazione e pubblicazione:
  1. Individuate https://'[server]:[port]'/system/console/depfinder e cercate il pacchetto com.mysql.jdbc.
  2. Nella colonna Esportato da, verificate che il pacchetto sia esportato da un pacchetto qualsiasi.
    Continuate se il pacchetto non viene esportato da alcun bundle.
  3. Andate a https://'[server]:[port]'/system/console/bundles e fate clic su Installa/Aggiorna .
  4. Fate clic su Scegli file e individuate il file mysql-Connector-java-5.1.39-bin.jar. Inoltre, selezionate le caselle di controllo Avvia pacchetto e Aggiorna pacchetti .
  5. Fate clic su Installa o Aggiorna . Al termine, riavviare il server.
  6. (Solo ** Windows) Disattivare il firewall di sistema del sistema operativo in uso.

Codice di esempio per i dati del portale dei moduli e il servizio di metadati

Il file ZIP seguente contiene FormsPortalSampleDataServiceImpl e FormsPortalSampleMetadataServiceImpl (classi di implementazione) per le interfacce di servizi di dati e metadati. Contiene inoltre tutte le classi necessarie per la compilazione delle suddette classi di implementazione.

Verificare la lunghezza del nome del file

L'implementazione del database di Forms Portal utilizza una tabella di metadati aggiuntiva. La tabella presenta una chiave primaria composita basata sulle colonne Key e id della tabella. MySQL consente chiavi primarie fino a un massimo di 255 caratteri. È possibile utilizzare il seguente script di convalida sul lato client per verificare la lunghezza del nome file associato al widget del file. La convalida viene eseguita quando un file viene allegato. Lo script fornito nella procedura seguente visualizza un messaggio, quando il nome del file è maggiore di 150 (inclusa l'estensione). È possibile modificare lo script per verificarne la presenza di un numero diverso di caratteri.
Per creare una libreria client e utilizzare lo script, effettuate le seguenti operazioni:
  1. Accedete a CRXDE e andate a /etc/clientlibs/
  2. Create un nodo di tipo cq:ClientLibraryFolder e fornite il nome del nodo. Esempio, validation .
    Fate clic su Salva tutto .
  3. Fare clic con il pulsante destro del mouse sul nodo, scegliere Crea nuovo file e creare un file con estensione .txt. Ad esempio, js.txt aggiungete il codice seguente al file .txt appena creato e fate clic su Salva tutto .
    #base=util
     util.js
    
    
    Nel codice riportato sopra, util è il nome della cartella e util.js il nome del file nella util cartella. La util cartella e util.js il file vengono creati nei passaggi successivi.
  4. Fate clic con il pulsante destro del mouse sul cq:ClientLibraryFolder nodo creato al punto 2, selezionate Crea > Crea cartella. Create una cartella denominata util . Fate clic su Salva tutto . Fate clic con il pulsante destro del mouse sulla util cartella e scegliete Crea > Crea file. Create un file denominato util.js . Fate clic su Salva tutto .
  5. Aggiungi il codice seguente al file util.js e fai clic su Salva tutto . Lunghezza di convalida del codice per il nome del file.
    /*
     * 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);
            });
        }
    })();
    
    
    Lo script è per il componente widget allegato out (OOTB) fornito con il prodotto. Se avete personalizzato il widget degli allegati OOTB, modificate lo script precedente in modo da includere le rispettive modifiche.
  6. Aggiungete la seguente proprietà alla cartella creata nel passaggio 2 e fate clic su Salva tutto .
    • Nome: category
    • Tipo: Stringa
    • Valore: fp.validation
    • opzione multipla: Abilitato
  7. Spostarsi /libs/fd/af/runtime/clientlibs/guideRuntime e aggiungere il fp.validation valore alla proprietà embed.
  8. Andate a /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA e aggiungete il fp.validation valore alla proprietà embed.
    Se si utilizzano librerie client personalizzate invece delle librerie client guideRuntime e guideRuntimeWithXfa, utilizzare il nome della categoria per incorporare la libreria client creata in questa procedura nelle librerie personalizzate caricate in fase di esecuzione.
  9. Fate clic su Salva tutto. Ora, quando il nome del file è più grande di 150 (inclusa l'estensione) caratteri, viene visualizzato un messaggio.