Esempi ed esempi in questo documento sono disponibili solo per AEM Forms nell'ambiente JEE.
Per le applicazioni basate sul Web che consentono a un utente di compilare moduli interattivi è necessario che i dati vengano inviati nuovamente al server. Il servizio Forms consente di recuperare i dati immessi dall'utente in un modulo interattivo. Dopo aver recuperato i dati, puoi elaborarli per soddisfare i requisiti aziendali. Ad esempio, è possibile memorizzare i dati in un database, inviare i dati a un'altra applicazione, inviare i dati a un altro servizio, unire i dati in una struttura del modulo, visualizzare i dati 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 valori di dati di singoli campi. In altre parole, è possibile estrarre il valore di ciascun campo modulo immesso dall'utente. Un modulo inviato come dati PDF è costituito da dati binari, non da dati XML. È possibile salvare il modulo come file PDF o inviarlo a un altro servizio. Per estrarre i dati da un modulo inviato come XML e quindi utilizzare i dati del modulo per creare un documento PDF, eseguire un'altra operazione AEM Forms. (Vedere 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.
La tabella seguente illustra i passaggi del diagramma.
Incremento |
Descrizione |
---|---|
1 |
Un utente compila un modulo interattivo e fa clic sul pulsante Invia del modulo. |
2 |
I dati vengono inviati a |
3 |
Il servlet |
Quando i dati del modulo vengono inviati come XML, è possibile recuperare dati XML che rappresentano i dati inviati. Tutti i campi modulo vengono visualizzati come nodi in uno schema XML. I valori dei nodi corrispondono ai valori compilati dall'utente. Si consideri un modulo di 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 che l'utente compila. Si supponga che un utente riempia il modulo di prestito con i dati mostrati nel seguente modulo.
L'illustrazione seguente mostra i dati XML corrispondenti recuperati utilizzando l'API client del servizio Forms.
I campi nel modulo di prestito. Questi valori possono essere recuperati
utilizzo di classi Java XML.
La struttura del modulo deve essere configurata correttamente in Designer per l'invio dei dati come dati XML. Per configurare correttamente la struttura del modulo per l'invio di dati XML, assicurarsi che il pulsante Invia, situato nella struttura del modulo, sia impostato per l'invio di dati XML. Per informazioni sull'impostazione del pulsante Invia per l'invio di dati XML, vedere AEM Forms Designer.
Considerate un'applicazione Web che richiama il servizio Forms. Dopo che il servizio Forms ha eseguito il rendering di un modulo PDF interattivo 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, può inviare i dati PDF a un altro servizio o salvarli come file PDF. Il diagramma seguente mostra il flusso logico dell'applicazione.
La tabella seguente descrive i passaggi descritti in questo diagramma.
Incremento |
Descrizione |
---|---|
1 |
Una pagina Web contiene un collegamento che accede a un Servlet Java che richiama il servizio Forms. |
2 |
Il servizio Forms esegue il rendering di un modulo PDF interattivo nel browser Web del client. |
3 |
L'utente compila un modulo interattivo e fa clic su un pulsante di invio. Il modulo viene inviato nuovamente al servizio Forms come dati PDF. Questa opzione è impostata in Designer. |
4 |
Il servizio Forms salva i dati PDF come file PDF. |
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 struttura del modulo contiene un pulsante di invio con dati URL codificati (HTTP Post) e l'opzione di codifica dei dati è UTF-16, la struttura 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à.
Per ulteriori informazioni sul servizio Forms, vedere Guida di riferimento dei servizi per AEM Forms.
Per gestire i moduli inviati, effettuare le seguenti operazioni:
Includi file di progetto
Includete i file necessari nel progetto di sviluppo. Se create un'applicazione client utilizzando Java, includete i file JAR necessari. Se utilizzate i servizi Web, accertatevi di includere i file proxy.
Creare un oggetto Forms Client API
Prima di eseguire un'operazione API client di Forms Service a livello di programmazione, è necessario creare un client di servizi Forms. Se utilizzate l'API Java, create un oggetto FormsServiceClient
. Se utilizzate l'API del servizio Web di Forms, create un oggetto FormsService
.
Recupero dei dati del modulo
Per recuperare i dati del modulo inviati, è necessario richiamare il metodo FormsServiceClient
dell'oggetto processFormSubmission
. 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 del modulo, i dati possono essere inviati come dati XML.
È inoltre possibile recuperare i campi modulo da un modulo inviato come dati PDF impostando le seguenti opzioni di esecuzione:
processFormSubmission
come parametro del tipo di contenuto: CONTENT_TYPE=application/pdf
.RenderOptionsSpec
dell'oggetto PDFToXDP
su true
RenderOptionsSpec
dell'oggetto ExportDataFormat
su XMLData
È possibile specificare il tipo di contenuto del modulo inviato quando si richiama il metodo processFormSubmission
. L'elenco seguente specifica i valori di tipo di contenuto applicabili:
Alla sezione Gestione dell’Forms inviato verranno associati tre avvii rapidi corrispondenti. I PDF forms di gestione inviati come PDF tramite l'introduzione rapida API Java dimostrano come gestire i dati PDF inviati. Il tipo di contenuto specificato in questo avvio rapido è application/pdf
. Il rapido avvio della gestione dei PDF forms inviati come XML tramite l'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, il rapido avvio della gestione dei moduli HTML inviati come XML tramite l'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.
È possibile recuperare i dati del modulo inviati al servizio Forms e determinarne 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, all'utente viene eseguito il rendering del modulo con i risultati del calcolo visualizzati. Prima di elaborare i dati inviati, si consiglia di determinare se il servizio Forms ha completato l'elaborazione dei dati.
Il servizio Forms restituisce i seguenti valori per indicare se l'elaborazione dei dati è terminata:
I calcoli e le convalide devono essere sottoposti a nuovo rendering per l'utente. (Vedere Calcolo dei dati del modulo.
Determinare se l'invio del modulo contiene file allegati
Forms inviato al servizio Forms può contenere file allegati. Ad esempio, utilizzando riquadro allegato integrato di Acrobat, l'utente può selezionare i file allegati da inviare insieme al modulo. Inoltre, un utente può selezionare gli allegati dei file utilizzando una barra degli strumenti HTML di cui viene eseguito il rendering con un file HTML.
Dopo aver determinato se un modulo contiene allegati, è possibile elaborare i dati. Ad esempio, è possibile salvare l'allegato al file system locale.
Il modulo deve essere inviato come dati PDF per recuperare gli allegati del file. Se il modulo viene inviato come dati XML, gli allegati non vengono inviati.
Elaborazione dei dati inviati
A seconda del tipo di contenuto dei dati inviati, è possibile estrarre singoli valori dei campi modulo dai dati XML inviati o salvare i dati PDF inviati come file PDF (o inviarli a un altro servizio). Per estrarre singoli campi del 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 file libreria Java AEM Forms
Impostazione delle proprietà di connessione
Avvio rapido di Forms Service API
Invio di documenti al servizio Forms
Creazione di applicazioni Web per il rendering di Forms
Gestire un modulo inviato utilizzando l'API Forms (Java):
Includi file di progetto
Includete file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java.
Creare un oggetto Forms Client API
ServiceClientFactory
che contiene le proprietà di connessione.FormsServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
.Recupero dei dati del modulo
com.adobe.idp.Document
utilizzando il relativo costruttore e richiamando il metodo javax.servlet.http.HttpServletResponse
dell'oggetto getInputStream
dall'interno del costruttore.RenderOptionsSpec
utilizzando il relativo costruttore. Impostare il valore delle impostazioni internazionali richiamando il metodo setLocale
dell'oggetto RenderOptionsSpec
e passando un valore di stringa che specifica il valore delle impostazioni internazionali.È possibile indicare al servizio Forms di creare dati XDP o XML dal contenuto PDF inviato richiamando il metodo setPDF2XDP
dell'oggetto RenderOptionsSpec
e passando true
, nonché chiamando setXMLData
e passando true
. È quindi possibile richiamare il metodo FormsResult
dell'oggetto getOutputXML
per recuperare i dati XML che corrispondono ai dati XDP/XML. (L'oggetto FormsResult
viene restituito dal metodo processFormSubmission
, illustrato nel passaggio secondario successivo.)
Richiamare il metodo FormsServiceClient
dell'oggetto processFormSubmission
e trasmettere i seguenti valori:
com.adobe.idp.Document
che contiene i dati del modulo.CONTENT_TYPE=text/xml
. Per gestire i dati PDF, specificare il seguente valore di stringa per questo parametro: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
, ad esempio, . Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. Questo valore del parametro è facoltativo.RenderOptionsSpec
che memorizza le opzioni di esecuzione.Il metodo processFormSubmission
restituisce un oggetto FormsResult
contenente i risultati dell'invio del modulo.
Determinare se il servizio Forms ha completato l'elaborazione dei dati del modulo richiamando il metodo FormsResult
dell'oggetto getAction
. Se questo metodo restituisce il valore 0
, i dati sono pronti per essere elaborati.
Determinare se l'invio del modulo contiene file allegati
FormsResult
dell'oggetto getAttachments
. Questo metodo restituisce un oggetto java.util.List
che contiene i file inviati con il modulo.java.util.List
per determinare se sono presenti allegati di file. Se sono presenti allegati, ogni elemento è un'istanza com.adobe.idp.Document
. È possibile salvare gli allegati richiamando il metodo copyToFile
dell'oggetto java.io.File
e passando un oggetto com.adobe.idp.Document
.Questo passaggio è applicabile solo se il modulo viene inviato come PDF.
Elaborazione dei dati inviati
Se il tipo di contenuto dei dati è application/vnd.adobe.xdp+xml
o text/xml
, creare la logica dell'applicazione per recuperare i valori dei dati XML.
com.adobe.idp.Document
richiamando il metodo FormsResult
dell'oggetto getOutputContent
.java.io.InputStream
richiamando il costruttore java.io.DataInputStream
e passando l'oggetto com.adobe.idp.Document
.org.w3c.dom.DocumentBuilderFactory
chiamando il metodo org.w3c.dom.DocumentBuilderFactory
statico dell'oggetto newInstance
.org.w3c.dom.DocumentBuilder
richiamando il metodo org.w3c.dom.DocumentBuilderFactory
dell'oggetto newDocumentBuilder
.org.w3c.dom.Document
richiamando il metodo org.w3c.dom.DocumentBuilder
dell'oggetto parse
e passando l'oggetto java.io.InputStream
.org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce una stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, questo metodo personalizzato è denominato getNodeText
. Viene visualizzato il corpo di questo metodo.Se il tipo di contenuto dei dati è application/pdf
, creare la logica dell'applicazione per salvare i dati PDF inviati come file PDF.
com.adobe.idp.Document
richiamando il metodo FormsResult
dell'oggetto getOutputContent
.java.io.File
utilizzando il relativo costruttore pubblico. Accertatevi di specificare PDF come estensione del nome file.copyToFile
dell'oggetto java.io.File
e passando l'oggetto com.adobe.idp.Document
.Consulta anche
Avvio rapido (modalità SOAP): Gestione dei PDF forms inviati come XML tramite l'API Java
Avvio rapido (modalità SOAP): Gestione dei moduli HTML inviati come XML mediante l'API Java
Avvio rapido (modalità SOAP): Gestione dei PDF forms inviati come PDF tramite l'API Java
Inclusione file libreria Java AEM Forms
Impostazione delle proprietà di connessione
Gestire un modulo inviato utilizzando l'API Forms (servizio Web):
Includi file di progetto
Creare un oggetto Forms Client API
Creare un oggetto FormsService
e impostare i valori di autenticazione.
Recupero dei dati del 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 metodo javax.servlet.http.HttpServletResponse
dell'oggetto getInputStream
.
Creare un oggetto java.io.ByteArrayOutputStream
utilizzando il relativo costruttore e passando la lunghezza dell'oggetto java.io.InputStream
.
Copiare il contenuto dell'oggetto java.io.InputStream
nell'oggetto java.io.ByteArrayOutputStream
.
Creare un array di byte richiamando il metodo java.io.ByteArrayOutputStream
dell'oggetto toByteArray
.
Compilare l'oggetto BLOB
richiamandone il metodo setBinaryData
e passando l'array di byte come argomento.
Creare un oggetto RenderOptionsSpec
utilizzando il relativo costruttore. Impostare il valore delle impostazioni internazionali richiamando il metodo setLocale
dell'oggetto RenderOptionsSpec
e passando un valore di stringa che specifica il valore delle impostazioni internazionali.
Richiamare il metodo FormsService
dell'oggetto processFormSubmission
e trasmettere i seguenti valori:
BLOB
che contiene i dati del modulo.CONTENT_TYPE=text/xml
. Per gestire i dati PDF, specificare il seguente valore di stringa per questo parametro: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
; ad esempio, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
che memorizza le opzioni di esecuzione.BLOBHolder
vuoto compilato dal metodo.javax.xml.rpc.holders.StringHolder
vuoto compilato dal metodo.BLOBHolder
vuoto compilato dal metodo.BLOBHolder
vuoto compilato dal metodo.javax.xml.rpc.holders.ShortHolder
vuoto compilato dal metodo.MyArrayOf_xsd_anyTypeHolder
vuoto compilato dal metodo. Questo parametro viene utilizzato per memorizzare gli allegati inviati insieme al modulo.FormsResultHolder
vuoto compilato dal metodo con il modulo inviato.Il metodo processFormSubmission
popola il parametro FormsResultHolder
con i risultati dell'invio del modulo.
Determinare se il servizio Forms ha completato l'elaborazione dei dati del modulo richiamando il metodo FormsResult
dell'oggetto getAction
. Se questo metodo restituisce il valore 0
, i dati del modulo sono pronti per essere elaborati. È possibile ottenere un oggetto FormsResult
ottenendo il valore del membro di dati FormsResultHolder
dell'oggetto value
.
Determinare se l'invio del modulo contiene file allegati
Ottenere il valore del membro di dati MyArrayOf_xsd_anyTypeHolder
dell'oggetto value
(l'oggetto MyArrayOf_xsd_anyTypeHolder
è stato passato al metodo processFormSubmission
). Questo membro di dati restituisce un array di Objects
. Ogni elemento all'interno dell'array Object
è un elemento Object
che corrisponde ai file inviati insieme al modulo. È possibile ottenere ogni elemento all'interno dell'array e inviarlo a un oggetto BLOB
.
Elaborazione dei dati inviati
Se il tipo di contenuto dei dati è application/vnd.adobe.xdp+xml
o text/xml
, creare la logica dell'applicazione per recuperare i valori dei dati XML.
BLOB
richiamando il metodo FormsResult
dell'oggetto getOutputContent
.BLOB
dell'oggetto getBinaryData
.java.io.InputStream
richiamando il costruttore java.io.ByteArrayInputStream
e passando l'array di byte.org.w3c.dom.DocumentBuilderFactory
chiamando il metodo org.w3c.dom.DocumentBuilderFactory
statico dell'oggetto newInstance
.org.w3c.dom.DocumentBuilder
richiamando il metodo org.w3c.dom.DocumentBuilderFactory
dell'oggetto newDocumentBuilder
.org.w3c.dom.Document
richiamando il metodo org.w3c.dom.DocumentBuilder
dell'oggetto parse
e passando l'oggetto java.io.InputStream
.org.w3c.dom.Document
e il nome del nodo di cui si desidera recuperare il valore. Questo metodo restituisce una stringa che rappresenta il valore del nodo. Nell'esempio di codice che segue questo processo, questo metodo personalizzato è denominato getNodeText
. Viene visualizzato il corpo di questo metodo.Se il tipo di contenuto dei dati è application/pdf
, creare la logica dell'applicazione per salvare i dati PDF inviati come file PDF.
BLOB
richiamando il metodo FormsResult
dell'oggetto getOutputContent
.BLOB
dell'oggetto getBinaryData
.java.io.File
utilizzando il relativo costruttore pubblico. Accertatevi di specificare PDF come estensione del nome file.java.io.FileOutputStream
utilizzando il relativo costruttore e passando l'oggetto java.io.File
.write
dell'oggetto java.io.FileOutputStream
e passando l'array di byte.Consulta anche