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

Panoramica del campione

componente bozze del portale AEM Forms e invii consente 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à, AEM Forms fornisce servizi per i dati e i metadati che consentono di memorizzare i dati compilati da un utente nel modulo e 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 AEM'istanza di pubblicazione, 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.

NOTA
  • 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 componente aggiuntivo di AEM Forms. Per l'elenco dei pacchetti disponibili, consultate l'articolo rilasci di AEM Forms.
  • Il pacchetto di esempio funziona solo con le azioni di invio per Forms adattive.

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

    Ottieni file

  2. Andate a AEM gestore pacchetti all'indirizzo https://[host]:[port]/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. Vai a AEM configurazione della console Web
    pagina all'indirizzo https://[host]:[port]/system/console/configMgr.

  7. Fare clic per aprire 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 di Forms Portal 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 Forms Portal Identificatore per il servizio di invio metadati formsportal.samplemetadataservice
    Servizio dati di firma 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
    NOTA

    I servizi vengono risolti con i relativi nomi indicati come valore per la chiave aem.formsportal.impl.prop 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:

    • In Configurazione console Web, trovate e fate clic su Implementazione di esempio del servizio metadati di Forms Portal. 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, trova e fai clic su Implementazione di esempio del servizio dati di Forms Portal. È possibile modificare i valori dell'origine dati e il nome della tabella dati.
    NOTA

    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
NOTA
  • 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:

    NOTA

    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
    

    [!NOTE]

    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. Andate a 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. Passare a https://[server]:[port]/system/console/bundles e fare clic su Installa/Aggiorna.

  4. Fare clic su Scegli file e individuare il file mysql-Connector-java-5.1.39-bin.jar. Selezionare anche le caselle di controllo Avvia pacchetto e Aggiorna pacchetti.

  5. Fare 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 dei servizi di dati e metadati. Contiene inoltre tutte le classi necessarie per la compilazione delle suddette classi di implementazione.

Ottieni file

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, procedere come segue:

  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.

    Fare 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.txtAggiungi il codice seguente al file .txt appena creato e fai clic su Salva tutto.

    #base=util 
     util.js
    

    Nel codice precedente, util è il nome della cartella e util.js il nome del file nella cartella util. La cartella util e il file util.js vengono creati nei passaggi successivi.

  4. Fare clic con il pulsante destro del mouse sul nodo cq:ClientLibraryFolder creato nel passaggio 2, selezionare Crea > Crea cartella. Create una cartella denominata util. Fare clic su Salva tutto. Fare clic con il pulsante destro del mouse sulla cartella util, quindi selezionare Crea > Crea file. Create un file denominato util.js. Fare 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);
            });
        }
    })();
    
    NOTA

    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 al punto 2 e fate clic su Salva tutto.

    • Nome: categorie

    • Tipo: Stringa

    • Valore: fp.validation

    • multi, opzione: Enabled

  7. Passare a /libs/fd/af/runtime/clientlibs/guideRuntimee aggiungere il valore fp.validation alla proprietà embed.

  8. Andate a /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA e aggiungete il valore fp.validation alla proprietà embed.

    NOTA

    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. Fare clic su Salva tutto. Ora, quando il nome del file è più grande di 150 (inclusa l'estensione) caratteri, viene visualizzato un messaggio.

In questa pagina

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free