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.
Per installare e configurare l’esempio, eseguite i seguenti passaggi, su tutte le istanze di creazione e pubblicazione:
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
Andate a AEM gestore pacchetti all'indirizzo https://[host]:[port]/crx/packmgr/.
Fate clic su Carica pacchetto.
Selezionate il pacchetto aem-fp-db-integration-sample-pkg-6.1.2.zip e fate clic su OK.
Fate clic su Installa accanto al pacchetto per installare il pacchetto.
Vai a AEM configurazione della console Web
pagina all'indirizzo https://[host]:[port]/system/console/configMgr.
Fare clic per aprire Configurazione bozza e invio di Forms Portal in modalità di modifica.
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 |
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:
Per specificare un nome diverso per la tabella di dati:
Se si modificano i nomi delle tabelle, fornirli nella configurazione di Form Portal.
Lasciate invariate le altre configurazioni e fate clic su Salva.
La connessione al database può essere eseguita tramite Apache Sling Connection Pooled Data Source.
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 |
Lasciate invariate le altre configurazioni e fate clic su Salva.
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);
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.
Per installare il file mysql-Connector-java-5.1.39-bin.jar, eseguite i seguenti passaggi in tutte le istanze di creazione e pubblicazione:
Andate a https://[server]:[port]/system/console/depfinder
e cercate il pacchetto com.mysql.jdbc.
Nella colonna Esportato da, verificate che il pacchetto sia esportato da un pacchetto qualsiasi.
Continuate se il pacchetto non viene esportato da alcun bundle.
Passare a https://[server]:[port]/system/console/bundles
e fare clic su Installa/Aggiorna.
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.
Fare clic su Installa o Aggiorna. Al termine, riavviare il server.
(Solo Windows) Disattivare il firewall di sistema del sistema operativo in uso.
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.
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:
Accedete a CRXDE e andate a /etc/clientlibs/
Create un nodo di tipo cq:ClientLibraryFolder e fornite il nome del nodo. Esempio, validation
.
Fare clic su Salva tutto.
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
Aggiungi 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.
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.
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.
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
Passare a /libs/fd/af/runtime/clientlibs/guideRuntime
e aggiungere il valore fp.validation
alla proprietà embed.
Andate a /libs/fd/af/runtime/clientlibs/guideRuntimeWithXFA e aggiungete il valore fp.validation
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.
Fare clic su Salva tutto. Ora, quando il nome del file è più grande di 150 (inclusa l'estensione) caratteri, viene visualizzato un messaggio.