Esempio per integrare il componente Bozze e invii con il database sample-for-integrating-drafts-submissions-component-with-database

Panoramica di esempio sample-overview

Il componente Bozze e invii del portale AEM Forms consente agli utenti di salvare i moduli come bozze e inviarli successivamente da qualsiasi dispositivo. Gli utenti possono inoltre visualizzare i moduli inviati nel portale. Per abilitare questa funzionalità, AEM Forms fornisce servizi di dati e metadati per 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 vengono memorizzati nell’archivio di CRX. Tuttavia, poiché gli utenti interagiscono con i moduli tramite l’istanza di pubblicazione dell’AEM, che in genere si trova al di fuori del firewall aziendale, le organizzazioni potrebbero 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 bozze e componenti di invio con un database. Il database utilizzato nell'implementazione di esempio è MySQL 5.6.24. Tuttavia, è possibile integrare il componente Bozze e invii con qualsiasi database desiderato.

NOTE
  • Gli esempi e le configurazioni illustrate in questo documento sono conformi a MySQL 5.6.24 e devono essere sostituiti in modo appropriato per il sistema di database.
  • Verifica di aver installato la versione più recente del pacchetto del componente aggiuntivo AEM Forms. Per un elenco dei pacchetti disponibili, consulta l'articolo Versioni di AEM Forms.
  • Il pacchetto di esempio funziona solo con azioni di invio Adaptive Forms.

Impostare e configurare l’esempio set-up-and-configure-the-sample

Per installare e configurare l’esempio in tutte le istanze di authoring e pubblicazione, effettua le seguenti operazioni:

  1. Scarica 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

  1. Vai a Gestione pacchetti AEM all'indirizzo https://[host]:[porta]/crx/packmgr/.

  2. Fare clic su Carica pacchetto.

  3. Individua il pacchetto aem-fp-db-integration-sample-pkg-6.1.2.zip e fai clic su OK.

  4. Fai clic su Installa accanto al pacchetto per installarlo.

  5. Vai a Configurazione console Web AEM
    pagina all'indirizzo https://[host]:[porta]/system/console/configMgr.

  6. Fare clic per aprire Configurazione bozza e invio portale Forms in modalità di modifica.

  7. Specificare i valori per le proprietà come descritto nella tabella seguente:

    table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3
    Proprietà Descrizione Valore
    Servizio dati bozza portale Forms Identificatore per bozza di servizio dati formsportal.sampledataservice
    Servizio metadati bozza portale Forms Identificatore per bozza servizio metadati formsportal.samplemetadataservice
    Servizio di invio dati per Forms Portal Identificatore per il servizio dati di invio formsportal.sampledataservice
    Servizio metadati invio portale Forms Identificatore per il servizio di invio metadati formsportal.samplemetadataservice
    Servizio dati di firma in sospeso di Forms Portal Identificatore per il servizio dati di firma in sospeso formsportal.sampledataservice
    Servizio metadati firma in sospeso di Forms Portal Identificatore per il servizio metadati di firma in sospeso formsportal.samplemetadataservice
    note note
    NOTE
    I servizi vengono risolti dai nomi indicati come valore per la chiave aem.formsportal.impl.prop nel modo seguente:
    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")
    

    È possibile modificare i nomi delle tabelle di dati e metadati.

    Per specificare un nome diverso per la tabella dei metadati:

    • Nella configurazione della console Web, trovare e fare clic su Implementazione di esempio del servizio metadati di Forms Portal. È possibile modificare i valori dell'origine dati, dei metadati o del nome di tabelle di metadati aggiuntive.

    Per specificare un nome diverso per la tabella dati:

    • Nella configurazione della console Web, trovare e fare clic su Implementazione di esempio del servizio dati di Forms Portal. È possibile modificare i valori dell'origine dati e del nome della tabella dati.
    note note
    NOTE
    Se si modificano i nomi delle tabelle, specificarli nella configurazione del portale moduli.
  8. Lascia invariate le altre configurazioni e fai clic su Salva.

  9. La connessione al database può essere effettuata tramite Apache Sling Connection Pooled Data Source.

  10. Per la connessione Apache Sling, individua e fai clic per aprire Origine dati in pool di connessione Apache Sling in modalità di modifica nella configurazione della console Web. Specificare i valori per le proprietà come descritto nella tabella seguente:

Proprietà
Valore
Nome origine dati

Nome di 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//[host]:[porta]/[nome_schema]
Nome utente
Un nome utente per autenticare ed eseguire azioni sulle tabelle del database
Password
Password associata al nome utente
Isolamento transazione
READ_COMMIT
Numero massimo connessioni attive
1000
Numero massimo di connessioni inattive
100
Connessioni inattive minime
10
Dimensione iniziale
10
Attesa massima
100000
Test su prestito
Selezionato
Test durante inattività
Selezionato
Query di 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
NOTE
  • Il driver JDBC per MySQL non viene fornito con l'esempio. Verificare di aver eseguito il provisioning e fornire le informazioni necessarie per configurare il connection pool JDBC.
  • Indirizza le istanze di authoring e pubblicazione per utilizzare lo stesso database. Il valore del campo URI connessione JDBC deve essere lo stesso per tutte le istanze di authoring e pubblicazione.
  1. Lascia invariate le altre configurazioni e fai clic su Salva.

  2. Se nello schema del database è già presente una tabella, andare al passaggio successivo.

    In caso contrario, se nello schema del database non è già presente una tabella, eseguire le istruzioni SQL seguenti per creare tabelle separate per dati, metadati e metadati aggiuntivi nello schema del database:

    note note
    NOTE
    Non sono necessari database diversi per le istanze di authoring e pubblicazione. Utilizza lo stesso database su tutte le istanze di authoring e pubblicazione.

    Istruzione SQL per la tabella dati

    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;
    

    Istruzione SQL per la tabella dei metadati

    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;
    

    Istruzione SQL per additionalmetadatatable

    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;
    

    Istruzione SQL per la tabella dei commenti

    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. Se nello schema del database sono già presenti le tabelle (dati, metadati e metadati aggiuntivi), eseguire le query di modifica seguenti:

    Istruzione SQL per la modifica della tabella dati

    code language-sql
    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 dei metadati

    code language-sql
    ALTER TABLE metadata add markedForDeletion varchar(45) DEFAULT NULL
    
    note note
    NOTE
    La query di aggiunta dei metadati ALTER TABLE ha esito negativo se è già stata eseguita e la colonna markedforDeletion è presente nella tabella.
    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;
    

    Istruzione SQL per la modifica della tabella additionalmetadatatable

    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;
    

L’implementazione di esempio è ora configurata e può essere utilizzata per elencare le bozze e gli invii durante la memorizzazione di tutti i dati e i metadati in un database. Vediamo ora come sono configurati i servizi dati e metadati nell’esempio.

Installare il file mysql-connector-java-5.1.39-bin.jar install-mysql-connector-java-bin-jar-file

Per installare il file mysql-connector-java-5.1.39-bin.jar, effettua le seguenti operazioni su tutte le istanze di authoring e pubblicazione:

  1. Passare a https://'[server]:[port]'/system/console/depfinder e cercare il pacchetto com.mysql.jdbc.

  2. Nella colonna Esportato da, controlla se il pacchetto viene esportato da un bundle.

    Procedi 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 selezionare il file mysql-connector-java-5.1.39-bin.jar. Selezionare inoltre le caselle di controllo Avvia bundle e Aggiorna pacchetti.

  5. Fare clic su Installa o Aggiorna. Al termine, riavviare il server.

  6. (Solo Windows) Disattivare il firewall di sistema per il sistema operativo.

NOTE
Per riavviare l'SDK, si consiglia di utilizzare il comando 'Ctrl + C'. Il riavvio dell’SDK dell’AEM con metodi alternativi, ad esempio l’arresto dei processi Java, può causare incongruenze nell’ambiente di sviluppo dell’AEM.

Codice di esempio per il servizio metadati e i dati del portale Forms sample-code-for-forms-portal-data-and-metadata-service

Il seguente file zip contiene FormsPortalSampleDataServiceImpl e FormsPortalSampleMetadataServiceImpl (classi di implementazione) per le interfacce del servizio dati e metadati. Inoltre, contiene tutte le classi richieste per la compilazione delle classi di implementazione sopra menzionate.

Ottieni file

Verifica la lunghezza del nome del file verify-length-of-the-file-name

L’implementazione del database di Forms Portal utilizza una tabella di metadati aggiuntiva. La tabella dispone di una chiave primaria composita basata sulle colonne Chiave e ID della tabella. MySQL consente chiavi primarie fino a una lunghezza di 255 caratteri. Puoi utilizzare il seguente script di convalida lato client per verificare la lunghezza del nome file associato al widget 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 verificare la presenza di un numero diverso di caratteri.

Per creare una libreria client e utilizzare lo script, effettuare le seguenti operazioni:

  1. Accedi a CRXDE e passa a /etc/clientlibs/

  2. Creare un nodo di tipo cq:ClientLibraryFolder e fornire 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.

    code language-javascript
    #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 seguenti.

  4. Fare clic con il pulsante destro del mouse sul nodo cq:ClientLibraryFolder creato nel passaggio 2, selezionare Crea > Crea cartella. Creare una cartella denominata util. Fare clic su Salva tutto. Fare clic con il pulsante destro del mouse sulla cartella util, selezionare Crea > Crea file. Creare 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 del nome file.

    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
    Lo script è per il componente widget di allegati predefinito. Se avete personalizzato il widget di allegati predefinito, modificate lo script precedente per incorporare le rispettive modifiche.
  6. Aggiungi la seguente proprietà alla cartella creata al passaggio 2 e fai clic su Salva tutto.

    • Nome: categorie

    • Tipo: Stringa

    • Valore: fp.validation

    • opzione multipla: abilitata

  7. Passa a /libs/fd/af/runtime/clientlibs/guideRuntime e aggiungi il valore fp.validation alla proprietà di incorporamento.

  8. Passa a /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA e aggiungi il valore fp.validation alla proprietà di incorporamento.

    note note
    NOTE
    Se utilizzi librerie client personalizzate invece delle librerie client guideRuntime e guideRuntimeWithXfa, utilizza 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 supera i 150 caratteri (inclusa l'estensione) viene visualizzato un messaggio.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2