Gestione dei Forms inviati handling-submitted-forms
Gli esempi e gli esempi contenuti in questo documento sono solo per AEM Forms in ambiente JEE.
Le applicazioni basate sul Web che consentono a un utente di compilare moduli interattivi richiedono l'invio dei dati al server. Tramite il servizio Forms è possibile recuperare i dati immessi dall'utente in un modulo interattivo. Dopo aver recuperato i dati, è possibile elaborarli per soddisfare i requisiti aziendali. È ad esempio possibile memorizzare i dati in un database, inviarli a un'altra applicazione, inviarli a un altro servizio, unire i dati in una struttura di modulo, visualizzarli in un browser Web e così via.
I dati del modulo vengono inviati al servizio Forms come dati XML o PDF, opzione impostata in Designer. Un modulo inviato come XML consente di estrarre i singoli valori dei dati dei campi. In altre parole, è possibile estrarre il valore di ogni campo modulo immesso dall'utente nel modulo. Un modulo inviato come dati PDF è costituito da dati binari e non da dati XML. È possibile salvare il modulo come file PDF o inviarlo a un altro servizio. Se si desidera estrarre dati da un modulo inviato come XML e quindi utilizzare i dati del modulo per creare un documento PDF, richiamare un'altra operazione AEM Forms. (Vedi Creazione di documenti PDF con dati XML inviati)
Il diagramma seguente mostra i dati inviati a un servlet Java denominato HandleData
da un modulo interattivo visualizzato in un browser Web.
Nella tabella seguente vengono illustrati i passaggi del diagramma.
HandleData
come dati XML.HandleData
contiene la logica dell'applicazione per recuperare i dati.Gestione dei dati XML inviati handling-submitted-xml-data
Quando i dati del modulo vengono inviati come XML, è possibile recuperare i dati XML che rappresentano i dati inviati. Tutti i campi modulo vengono visualizzati come nodi in uno schema XML. I valori del nodo corrispondono ai valori inseriti dall'utente. Considerare un modulo prestito in cui ogni campo del modulo viene visualizzato come un nodo all'interno dei dati XML. Il valore di ciascun nodo corrisponde al valore inserito da un utente. Supponiamo che un utente riempia il modulo del prestito con i dati mostrati nel seguente modulo.
Nella figura seguente vengono illustrati i dati XML corrispondenti recuperati mediante l'API client del servizio Forms.
I campi nel modulo del prestito. Questi valori possono essere recuperati
utilizzo delle classi XML Java.
Gestione dei dati PDF inviati handling-submitted-pdf-data
Considera un’applicazione web che richiama il servizio Forms. Dopo che il servizio Forms esegue il rendering di un modulo interattivo PDF in un browser Web client, l'utente compila il modulo e lo invia nuovamente come dati PDF. Quando il servizio Forms riceve i dati PDF PDF, può inviarli a un altro servizio o salvarli come file PDF. Il diagramma seguente mostra il flusso logico dell’applicazione.
Nella tabella seguente vengono descritti i passaggi del diagramma.
Gestione dei dati URL UTF-16 inviati handling-submitted-url-utf-16-data
Se i dati del modulo vengono inviati come dati URL UTF-16, il computer client richiede Adobe Reader o Acrobat 8.1 o versione successiva. Inoltre, se la progettazione del modulo contiene un pulsante di invio con dati codificati in URL (HTTP Post) e l’opzione di codifica dei dati è UTF-16, la progettazione del modulo deve essere modificata in un editor di testo come Blocco note. È possibile impostare l'opzione di codifica su UTF-16LE
o UTF-16BE
per il pulsante di invio. Designer non fornisce questa funzionalità.
Riepilogo dei passaggi summary-of-steps
Per gestire i moduli inviati, eseguire le operazioni seguenti:
- Includi file di progetto.
- Crea un oggetto API client di Forms.
- Recuperare i dati del modulo.
- Determinare se l'invio del modulo contiene file allegati.
- Elabora i dati inviati.
Includi file di progetto
Includi i file necessari nel progetto di sviluppo. Se stai creando un’applicazione client utilizzando Java, includi i file JAR necessari. Se utilizzi i servizi web, accertati di includere i file proxy.
Creare un oggetto API client di Forms
Prima di poter eseguire a livello di programmazione un'operazione API client del servizio Forms, è necessario creare un client del servizio Forms. Se si utilizza l'API Java, creare un oggetto FormsServiceClient
. Se si utilizza l'API del servizio Web Forms, creare un oggetto FormsService
.
Recupera dati modulo
Per recuperare i dati del modulo inviati, è necessario richiamare il metodo processFormSubmission
dell'oggetto FormsServiceClient
. Quando si richiama questo metodo, è necessario specificare il tipo di contenuto del modulo inviato. Quando i dati vengono inviati da un browser Web client al servizio Forms, possono essere inviati come dati XML o PDF. Per recuperare i dati immessi nei campi modulo, è possibile inviare i dati come dati XML.
È inoltre possibile recuperare i campi modulo da un modulo inviato come dati PDF impostando le seguenti opzioni di runtime:
- Passare il seguente valore al metodo
processFormSubmission
come parametro del tipo di contenuto:CONTENT_TYPE=application/pdf
. - Imposta il valore
PDFToXDP
dell'oggettoRenderOptionsSpec
sutrue
- Imposta il valore
ExportDataFormat
dell'oggettoRenderOptionsSpec
suXMLData
Specificare il tipo di contenuto del modulo inviato quando si richiama il metodo processFormSubmission
. L'elenco seguente specifica i valori dei tipi di contenuto applicabili:
- text/xml: rappresenta il tipo di contenuto da utilizzare quando un modulo di PDF invia i dati del modulo come XML.
- application/x-www-form-urlencoded: rappresenta il tipo di contenuto da utilizzare quando un modulo HTML invia dati come XML.
- application/pdf: rappresenta il tipo di contenuto da utilizzare quando un modulo di PDF invia dati come PDF.
application/pdf
. La sezione Gestione dei PDF forms inviati come XML mediante l'avvio rapido API Java illustra come gestire i dati XML inviati da un modulo PDF. Il tipo di contenuto specificato in questo avvio rapido è text/xml
. Analogamente, la gestione dei moduli HTML inviati come XML mediante l'avvio rapido API Java illustra come gestire i dati XML inviati da un modulo HTML. Il tipo di contenuto specificato in questo avvio rapido è application/x-www-form-urlencoded.Recuperi i dati del modulo pubblicati nel servizio Forms e ne determini lo stato di elaborazione. In altre parole, quando i dati vengono inviati al servizio Forms, non significa necessariamente che il servizio Forms abbia terminato l’elaborazione dei dati e che i dati siano pronti per essere elaborati. Ad esempio, i dati possono essere inviati al servizio Forms in modo da poter eseguire un calcolo. Una volta completato il calcolo, il modulo viene riprodotto all’utente con i risultati del calcolo visualizzati. Prima di elaborare i dati inviati, è consigliabile determinare se il servizio Forms ha completato l'elaborazione dei dati.
Il servizio Forms restituisce i seguenti valori per indicare se ha completato l’elaborazione dei dati:
- 0 (invio): I dati inviati sono pronti per l'elaborazione.
- 1 (calcolo): Il servizio Forms ha eseguito un'operazione di calcolo sui dati e i risultati devono essere restituiti all'utente.
- 2 (Convalida): I dati del modulo convalidati dal servizio Forms e i risultati devono essere restituiti all'utente.
- 3 (successivo): La pagina corrente è stata modificata con risultati che devono essere scritti nell'applicazione client.
- 4 (Precedente): la pagina corrente è cambiata con risultati che devono essere scritti nell'applicazione client.
Determinare se l'invio del modulo contiene file allegati
Forms inviato al servizio Forms può contenere allegati. Ad esempio, utilizzando il riquadro degli allegati integrato di Acrobat, un utente può selezionare i file allegati da inviare insieme al modulo. L’utente può inoltre selezionare i file allegati utilizzando una barra degli strumenti di HTML sottoposta a rendering con un file di HTML.
Dopo aver determinato se un modulo contiene file allegati, è possibile elaborare i dati. È ad esempio possibile salvare l'allegato nel file system locale.
Elabora i dati inviati
A seconda del tipo di contenuto dei dati inviati, è possibile estrarre singoli valori dei campi modulo dai dati XML inviati oppure salvare i dati PDF inviati come file PDF (o inviarli a un altro servizio). Per estrarre singoli campi modulo, convertire i dati XML inviati in un'origine dati XML e quindi recuperare i valori dell'origine dati XML utilizzando le classi org.w3c.dom
.
Consulta anche
Inclusione dei file della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Guida introduttiva all’API di servizio Forms
Gestire i moduli inviati tramite l’API Java handle-submitted-forms-using-the-java-api
Gestisci un modulo inviato utilizzando l’API Forms (Java):
-
Includi file di progetto
Includi i file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java.
-
Creare un oggetto API client di Forms
- Creare un oggetto
ServiceClientFactory
contenente le proprietà di connessione. - Creare un oggetto
FormsServiceClient
utilizzando il relativo costruttore e passando l'oggettoServiceClientFactory
.
- Creare un oggetto
-
Recupera dati modulo
- Per recuperare i dati del modulo inviati a un servlet Java, creare un oggetto
com.adobe.idp.Document
utilizzando il relativo costruttore e richiamando il metodogetInputStream
dell'oggettojavax.servlet.http.HttpServletResponse
dal costruttore. - Creare un oggetto
RenderOptionsSpec
utilizzando il relativo costruttore. Impostare il valore delle impostazioni locali richiamando il metodosetLocale
dell'oggettoRenderOptionsSpec
e passando un valore stringa che specifica il valore delle impostazioni locali.
note note NOTE È possibile indicare al servizio Forms di creare dati XDP o XML dal contenuto PDF inviato richiamando il metodo setPDF2XDP
dell'oggettoRenderOptionsSpec
e passandotrue
, chiamando anchesetXMLData
e passandotrue
. È quindi possibile richiamare il metodogetOutputXML
dell'oggettoFormsResult
per recuperare i dati XML corrispondenti ai dati XDP/XML. (L'oggettoFormsResult
viene restituito dal metodoprocessFormSubmission
, illustrato nel passaggio successivo).-
Richiama il metodo
processFormSubmission
dell'oggettoFormsServiceClient
e passa i seguenti valori:- Oggetto
com.adobe.idp.Document
contenente i dati del modulo. - Valore stringa che specifica le variabili di ambiente, incluse tutte le intestazioni HTTP rilevanti. Specifica il tipo di contenuto da gestire. Per gestire i dati XML, specificare il valore stringa seguente per il parametro:
CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specificare il seguente valore stringa per questo parametro:CONTENT_TYPE=application/pdf
. - Valore stringa che specifica il valore di intestazione
HTTP_USER_AGENT
, ad esempio.Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Il valore di questo parametro è facoltativo. - Un oggetto
RenderOptionsSpec
che memorizza le opzioni di runtime.
Il metodo
processFormSubmission
restituisce un oggettoFormsResult
contenente i risultati dell'invio del modulo. - Oggetto
-
Determinare se il servizio Forms ha terminato l'elaborazione dei dati del modulo richiamando il metodo
getAction
dell'oggettoFormsResult
. Se questo metodo restituisce il valore0
, i dati sono pronti per essere elaborati.
- Per recuperare i dati del modulo inviati a un servlet Java, creare un oggetto
-
Determinare se l'invio del modulo contiene allegati
- Richiama il metodo
getAttachments
dell'oggettoFormsResult
. Questo metodo restituisce un oggettojava.util.List
contenente i file inviati con il modulo. - Scorrere l'oggetto
java.util.List
per determinare se sono presenti allegati. Se sono presenti file allegati, ogni elemento è un'istanzacom.adobe.idp.Document
. È possibile salvare i file allegati richiamando il metodocopyToFile
dell'oggettocom.adobe.idp.Document
e passando un oggettojava.io.File
.
note note NOTE Questo passaggio è applicabile solo se il modulo viene inviato come PDF. - Richiama il metodo
-
Elabora i dati inviati
-
Se il tipo di contenuto dei dati è
application/vnd.adobe.xdp+xml
otext/xml
, creare una logica dell'applicazione per recuperare i valori dei dati XML.- Creare un oggetto
com.adobe.idp.Document
richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Creare un oggetto
java.io.InputStream
richiamando il costruttorejava.io.DataInputStream
e passando l'oggettocom.adobe.idp.Document
. - Creare un oggetto
org.w3c.dom.DocumentBuilderFactory
chiamando il metodonewInstance
dell'oggettoorg.w3c.dom.DocumentBuilderFactory
statico. - Creare un oggetto
org.w3c.dom.DocumentBuilder
richiamando il metodonewDocumentBuilder
dell'oggettoorg.w3c.dom.DocumentBuilderFactory
. - Creare un oggetto
org.w3c.dom.Document
richiamando il metodoparse
dell'oggettoorg.w3c.dom.DocumentBuilder
e passando l'oggettojava.io.InputStream
. - Recuperate il valore di ciascun nodo all'interno del documento XML. Un modo per eseguire questa attività consiste nel creare un metodo personalizzato che accetti due parametri: l'oggetto
org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce un valore stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, il metodo personalizzato è denominatogetNodeText
. Viene visualizzato il corpo di questo metodo.
- Creare un oggetto
-
Se il tipo di contenuto dei dati è
application/pdf
, creare la logica dell'applicazione per salvare i dati PDF inviati come file PDF.- Creare un oggetto
com.adobe.idp.Document
richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Creare un oggetto
java.io.File
utilizzando il relativo costruttore pubblico. Assicurati di specificare PDF come estensione del nome file. - Compilare il file PDF richiamando il metodo
copyToFile
dell'oggettocom.adobe.idp.Document
e passando l'oggettojava.io.File
.
- Creare un oggetto
-
Consulta anche
Quick Start (modalità SOAP): gestione dei PDF forms inviati come XML tramite API Java
Quick Start (modalità SOAP): gestione dei moduli HTML inviati come XML tramite l’API Java
Quick Start (modalità SOAP): gestione dei PDF forms inviati come PDF tramite l’API Java
Gestire i dati PDF inviati tramite l’API del servizio web handle-submitted-pdf-data-using-the-web-service-api
Gestisci un modulo inviato utilizzando l’API Forms (servizio web):
-
Includi file di progetto
- Creare classi proxy Java che utilizzano il servizio Forms WSDL.
- Includi le classi proxy Java nel percorso della classe.
-
Creare un oggetto API client di Forms
Creare un oggetto
FormsService
e impostare i valori di autenticazione. -
Recupera dati modulo
-
Per recuperare i dati del modulo inviati a un servlet Java, creare un oggetto
BLOB
utilizzando il relativo costruttore. -
Creare un oggetto
java.io.InputStream
richiamando il metodogetInputStream
dell'oggettojavax.servlet.http.HttpServletResponse
. -
Creare un oggetto
java.io.ByteArrayOutputStream
utilizzando il relativo costruttore e passando la lunghezza dell'oggettojava.io.InputStream
. -
Copiare il contenuto dell'oggetto
java.io.InputStream
nell'oggettojava.io.ByteArrayOutputStream
. -
Creare una matrice di byte richiamando il metodo
toByteArray
dell'oggettojava.io.ByteArrayOutputStream
. -
Compilare l'oggetto
BLOB
richiamando il relativo metodosetBinaryData
e passando la matrice di byte come argomento. -
Creare un oggetto
RenderOptionsSpec
utilizzando il relativo costruttore. Impostare il valore delle impostazioni locali richiamando il metodosetLocale
dell'oggettoRenderOptionsSpec
e passando un valore stringa che specifica il valore delle impostazioni locali. -
Richiama il metodo
processFormSubmission
dell'oggettoFormsService
e passa i seguenti valori:- Oggetto
BLOB
contenente i dati del modulo. - Valore stringa che specifica le variabili di ambiente, incluse tutte le intestazioni HTTP rilevanti. Specifica il tipo di contenuto da gestire. Per gestire i dati XML, specificare il valore stringa seguente per il parametro:
CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specificare il seguente valore stringa per questo parametro:CONTENT_TYPE=application/pdf
. - Valore stringa che specifica il valore dell'intestazione
HTTP_USER_AGENT
, ad esempioMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Un oggetto
RenderOptionsSpec
che memorizza le opzioni di runtime. - Oggetto
BLOBHolder
vuoto popolato dal metodo. - Oggetto
javax.xml.rpc.holders.StringHolder
vuoto popolato dal metodo. - Oggetto
BLOBHolder
vuoto popolato dal metodo. - Oggetto
BLOBHolder
vuoto popolato dal metodo. - Oggetto
javax.xml.rpc.holders.ShortHolder
vuoto popolato dal metodo. - Oggetto
MyArrayOf_xsd_anyTypeHolder
vuoto popolato dal metodo. Questo parametro viene utilizzato per memorizzare gli allegati dei file inviati insieme al modulo. - Oggetto
FormsResultHolder
vuoto popolato dal metodo con il modulo inviato.
Il metodo
processFormSubmission
compila il parametroFormsResultHolder
con i risultati dell'invio del modulo. - Oggetto
-
Determinare se il servizio Forms ha terminato l'elaborazione dei dati del modulo richiamando il metodo
getAction
dell'oggettoFormsResult
. Se questo metodo restituisce il valore0
, i dati del modulo sono pronti per l'elaborazione. È possibile ottenere un oggettoFormsResult
ottenendo il valore del membro dativalue
dell'oggettoFormsResultHolder
.
-
-
Determinare se l'invio del modulo contiene allegati
Ottiene il valore del membro dati
value
dell'oggettoMyArrayOf_xsd_anyTypeHolder
(l'oggettoMyArrayOf_xsd_anyTypeHolder
è stato passato al metodoprocessFormSubmission
). Questo membro dati restituisce un array diObjects
. Ogni elemento all'interno dell'arrayObject
è unObject
che corrisponde ai file inviati insieme al modulo. È possibile ottenere ogni elemento all'interno dell'array e eseguirne il cast in un oggettoBLOB
. -
Elabora i dati inviati
-
Se il tipo di contenuto dei dati è
application/vnd.adobe.xdp+xml
otext/xml
, creare una logica dell'applicazione per recuperare i valori dei dati XML.- Creare un oggetto
BLOB
richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Creare una matrice di byte richiamando il metodo
getBinaryData
dell'oggettoBLOB
. - Creare un oggetto
java.io.InputStream
richiamando il costruttorejava.io.ByteArrayInputStream
e passando la matrice di byte. - Creare un oggetto
org.w3c.dom.DocumentBuilderFactory
chiamando il metodonewInstance
dell'oggettoorg.w3c.dom.DocumentBuilderFactory
statico. - Creare un oggetto
org.w3c.dom.DocumentBuilder
richiamando il metodonewDocumentBuilder
dell'oggettoorg.w3c.dom.DocumentBuilderFactory
. - Creare un oggetto
org.w3c.dom.Document
richiamando il metodoparse
dell'oggettoorg.w3c.dom.DocumentBuilder
e passando l'oggettojava.io.InputStream
. - Recuperate il valore di ciascun nodo all'interno del documento XML. Un modo per eseguire questa attività consiste nel creare un metodo personalizzato che accetti due parametri: l'oggetto
org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce un valore stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, il metodo personalizzato è denominatogetNodeText
. Viene visualizzato il corpo di questo metodo.
- Creare un oggetto
-
Se il tipo di contenuto dei dati è
application/pdf
, creare la logica dell'applicazione per salvare i dati PDF inviati come file PDF.- Creare un oggetto
BLOB
richiamando il metodogetOutputContent
dell'oggettoFormsResult
. - Creare una matrice di byte richiamando il metodo
getBinaryData
dell'oggettoBLOB
. - Creare un oggetto
java.io.File
utilizzando il relativo costruttore pubblico. Assicurati di specificare PDF come estensione del nome file. - Creare un oggetto
java.io.FileOutputStream
utilizzando il relativo costruttore e passando l'oggettojava.io.File
. - Compilare il file PDF richiamando il metodo
write
dell'oggettojava.io.FileOutputStream
e passando la matrice di byte.
- Creare un oggetto
-
Consulta anche
Richiamare AEM Forms utilizzando la codifica Base64