Gli esempi e gli esempi contenuti in questo documento sono solo per l’ambiente AEM Forms su 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, un'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. (vedere Creazione di documenti PDF con i 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.
Passaggio |
Descrizione |
---|---|
1 |
Un utente compila un modulo interattivo e fa clic sul pulsante Invia del modulo. |
2 |
I dati vengono inviati al |
3 |
Il |
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 utilizzando le classi XML Java.
La struttura del modulo deve essere configurata correttamente in Designer affinché i dati vengano inviati come dati XML. Per configurare correttamente la struttura del modulo per l'invio di dati XML, verificare che il pulsante Invia disponibile nella struttura del modulo sia impostato per l'invio di dati XML. Per informazioni sull'impostazione del pulsante Invia per inviare dati XML, vedere AEM Forms Designer.
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.
Passaggio |
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 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 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 Invia. La finestra di progettazione non fornisce questa funzionalità.
Per ulteriori informazioni sul servizio Forms, consulta Guida di riferimento dei servizi per AEM Forms.
Per gestire i moduli inviati, eseguire le operazioni seguenti:
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 utilizzi l’API Java, crea un’ FormsServiceClient
oggetto. Se utilizzi l’API del servizio web Forms, crea un’ FormsService
oggetto.
Recupera dati modulo
Per recuperare i dati del modulo inviati, è necessario richiamare FormsServiceClient
dell'oggetto processFormSubmission
metodo. 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:
processFormSubmission
come parametro del tipo di contenuto: CONTENT_TYPE=application/pdf
.RenderOptionsSpec
dell'oggetto PDFToXDP
valore per true
RenderOptionsSpec
dell'oggetto ExportDataFormat
valore per XMLData
È possibile specificare il tipo di contenuto del modulo inviato quando si richiama processFormSubmission
metodo. L'elenco seguente specifica i valori dei tipi di contenuto applicabili:
Nella sezione Gestione degli invii di Forms sono disponibili tre avvii rapidi corrispondenti. La sezione Gestione dei PDF forms inviati come PDF con la Guida introduttiva all’API Java illustra come gestire i dati PDF inviati. Il tipo di contenuto specificato in questo avvio rapido è 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:
È necessario restituire all’utente i calcoli e le convalide. (vedere Calcolo dati modulo.
Determinare se l'invio del modulo contiene 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.
Il modulo deve essere inviato come dati PDF per recuperare gli allegati. Se il modulo viene inviato come dati XML, gli allegati non vengono inviati.
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 org.w3c.dom
classi.
Consulta anche
Inclusione dei file della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Guida introduttiva all’API di servizio Forms
Trasmissione di documenti al servizio Forms
Creazione di applicazioni Web per il rendering di Forms
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
ServiceClientFactory
oggetto che contiene proprietà di connessione.FormsServiceClient
mediante il costruttore e passando il ServiceClientFactory
oggetto.Recupera dati modulo
com.adobe.idp.Document
mediante il costruttore e richiamando l'oggetto javax.servlet.http.HttpServletResponse
dell'oggetto getInputStream
metodo dall'interno del costruttore.RenderOptionsSpec
mediante il costruttore. Impostare il valore locale richiamando RenderOptionsSpec
dell'oggetto setLocale
e passando un valore stringa che specifica il valore locale.È possibile indicare al servizio Forms di creare dati XDP o XML dal contenuto PDF inviato richiamando il RenderOptionsSpec
dell'oggetto setPDF2XDP
metodo e passaggio true
e anche chiamando setXMLData
e superamento true
. È quindi possibile richiamare FormsResult
dell'oggetto getOutputXML
per recuperare i dati XML corrispondenti ai dati XDP/XML. (Il FormsResult
l'oggetto viene restituito da processFormSubmission
che viene spiegato nel passaggio successivo.)
Richiama FormsServiceClient
dell'oggetto processFormSubmission
e trasmettere i seguenti valori:
com.adobe.idp.Document
oggetto che contiene i dati del modulo.CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specifica il seguente valore stringa per questo parametro: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
valore dell’intestazione, 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.RenderOptionsSpec
oggetto che memorizza le opzioni di runtime.Il processFormSubmission
il metodo restituisce un FormsResult
oggetto contenente i risultati dell’invio del modulo.
Determinare se il servizio Forms ha terminato l'elaborazione dei dati del modulo richiamando FormsResult
dell'oggetto getAction
metodo. Se questo metodo restituisce il valore 0
, i dati sono pronti per l’elaborazione.
Determinare se l'invio del modulo contiene allegati
FormsResult
dell'oggetto getAttachments
metodo. Questo metodo restituisce un java.util.List
oggetto contenente i file inviati con il modulo.java.util.List
per determinare se sono presenti allegati. Se sono presenti file allegati, ogni elemento è un com.adobe.idp.Document
dell'istanza. È possibile salvare i file allegati richiamando com.adobe.idp.Document
dell'oggetto copyToFile
e il passaggio di un java.io.File
oggetto.Questo passaggio è applicabile solo se il modulo viene inviato come PDF.
Elabora i dati inviati
Se il tipo di contenuto dei dati è application/vnd.adobe.xdp+xml
o text/xml
, crea una logica di applicazione per recuperare i valori dei dati XML.
com.adobe.idp.Document
oggetto richiamando il FormsResult
dell'oggetto getOutputContent
metodo.java.io.InputStream
oggetto richiamando il java.io.DataInputStream
costruttore e passaggio com.adobe.idp.Document
oggetto.org.w3c.dom.DocumentBuilderFactory
oggetto chiamando l'oggetto statico org.w3c.dom.DocumentBuilderFactory
dell'oggetto newInstance
metodo.org.w3c.dom.DocumentBuilder
oggetto richiamando il org.w3c.dom.DocumentBuilderFactory
dell'oggetto newDocumentBuilder
metodo.org.w3c.dom.Document
oggetto richiamando il org.w3c.dom.DocumentBuilder
dell'oggetto parse
e passando il java.io.InputStream
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, questo metodo personalizzato viene chiamato getNodeText
. Viene visualizzato il corpo di questo metodo.Se il tipo di contenuto dei dati è application/pdf
, crea una logica di applicazione per salvare i dati PDF inviati come file PDF.
com.adobe.idp.Document
oggetto richiamando il FormsResult
dell'oggetto getOutputContent
metodo.java.io.File
mediante il costruttore pubblico. Assicurati di specificare PDF come estensione del nome file.com.adobe.idp.Document
dell'oggetto copyToFile
e passando il java.io.File
oggetto.Consulta anche
Quick Start (modalità SOAP): gestione dei PDF forms inviati come XML tramite l’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
Inclusione dei file della libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Gestisci un modulo inviato utilizzando l’API Forms (servizio web):
Includi file di progetto
Creare un oggetto API client di Forms
Creare un FormsService
e impostare i valori di autenticazione.
Recupera dati modulo
Per recuperare i dati del modulo inviati a un servlet Java, crea un BLOB
mediante il costruttore.
Creare un java.io.InputStream
oggetto richiamando il javax.servlet.http.HttpServletResponse
dell'oggetto getInputStream
metodo.
Creare un java.io.ByteArrayOutputStream
dell'oggetto utilizzando il relativo costruttore e passando la lunghezza del java.io.InputStream
oggetto.
Copia il contenuto del java.io.InputStream
oggetto in java.io.ByteArrayOutputStream
oggetto.
Creare una matrice di byte richiamando java.io.ByteArrayOutputStream
dell'oggetto toByteArray
metodo.
Popolare il BLOB
oggetto richiamando il relativo setBinaryData
e passando la matrice di byte come argomento.
Creare un RenderOptionsSpec
mediante il costruttore. Impostare il valore locale richiamando RenderOptionsSpec
dell'oggetto setLocale
e passando un valore stringa che specifica il valore locale.
Richiama FormsService
dell'oggetto processFormSubmission
e trasmettere i seguenti valori:
BLOB
oggetto che contiene i dati del modulo.CONTENT_TYPE=text/xml
. Per gestire i dati di PDF, specifica il seguente valore stringa per questo parametro: CONTENT_TYPE=application/pdf
.HTTP_USER_AGENT
valore intestazione; ad esempio, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
.RenderOptionsSpec
oggetto che memorizza le opzioni di runtime.BLOBHolder
oggetto popolato dal metodo.javax.xml.rpc.holders.StringHolder
oggetto popolato dal metodo.BLOBHolder
oggetto popolato dal metodo.BLOBHolder
oggetto popolato dal metodo.javax.xml.rpc.holders.ShortHolder
oggetto popolato dal metodo.MyArrayOf_xsd_anyTypeHolder
oggetto popolato dal metodo. Questo parametro viene utilizzato per memorizzare gli allegati dei file inviati insieme al modulo.FormsResultHolder
oggetto popolato dal metodo con il modulo inviato.Il processFormSubmission
il metodo compila FormsResultHolder
con i risultati dell'invio del modulo.
Determinare se il servizio Forms ha terminato l'elaborazione dei dati del modulo richiamando FormsResult
dell'oggetto getAction
metodo. Se questo metodo restituisce il valore 0
, i dati del modulo sono pronti per l’elaborazione. Puoi ottenere un FormsResult
dell'oggetto ottenendo il valore del FormsResultHolder
dell'oggetto value
membro dati.
Determinare se l'invio del modulo contiene allegati
Ottieni il valore di MyArrayOf_xsd_anyTypeHolder
dell'oggetto value
membro dati (il MyArrayOf_xsd_anyTypeHolder
l'oggetto è stato passato al processFormSubmission
metodo). Questo membro dati restituisce un array di Objects
. Ogni elemento all’interno del Object
array è un Object
che corrisponde ai file inviati insieme al modulo. È possibile ottenere ogni elemento all’interno dell’array ed eseguirne il cast in un BLOB
oggetto.
Elabora i dati inviati
Se il tipo di contenuto dei dati è application/vnd.adobe.xdp+xml
o text/xml
, crea una logica di applicazione per recuperare i valori dei dati XML.
BLOB
oggetto richiamando il FormsResult
dell'oggetto getOutputContent
metodo.BLOB
dell'oggetto getBinaryData
metodo.java.io.InputStream
oggetto richiamando il java.io.ByteArrayInputStream
costruttore e il passaggio della matrice di byte.org.w3c.dom.DocumentBuilderFactory
oggetto chiamando l'oggetto statico org.w3c.dom.DocumentBuilderFactory
dell'oggetto newInstance
metodo.org.w3c.dom.DocumentBuilder
oggetto richiamando il org.w3c.dom.DocumentBuilderFactory
dell'oggetto newDocumentBuilder
metodo.org.w3c.dom.Document
oggetto richiamando il org.w3c.dom.DocumentBuilder
dell'oggetto parse
e passando il java.io.InputStream
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, questo metodo personalizzato viene chiamato getNodeText
. Viene visualizzato il corpo di questo metodo.Se il tipo di contenuto dei dati è application/pdf
, crea una logica di applicazione per salvare i dati PDF inviati come file PDF.
BLOB
oggetto richiamando il FormsResult
dell'oggetto getOutputContent
metodo.BLOB
dell'oggetto getBinaryData
metodo.java.io.File
mediante il costruttore pubblico. Assicurati di specificare PDF come estensione del nome file.java.io.FileOutputStream
mediante il costruttore e passando il java.io.File
oggetto.java.io.FileOutputStream
dell'oggetto write
e passando la matrice di byte.Consulta anche