Show Menu
ARGOMENTI×

Gestione dei moduli inviati

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. Se si desidera estrarre dati da un modulo inviato come XML e quindi utilizzare i dati del modulo per creare un documento PDF, è necessario richiamare 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 HandleData Java Servlet come dati XML.
3
Il servlet HandleData Java contiene la logica dell'applicazione per recuperare i dati.

Gestione dei dati XML inviati

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.
Nell'illustrazione seguente sono visualizzati i dati XML corrispondenti recuperati utilizzando l'API client del servizio Forms.
I campi nel modulo di prestito. Questi valori possono essere recuperati utilizzando le 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 .

Gestione dei dati PDF inviati

Prendere in considerazione 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ò inviarli 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 Moduli salva i dati PDF come file PDF.

Gestione dei dati URL UTF-16 inviati

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, consultate Riferimento servizi per AEM Forms .

Riepilogo dei passaggi

Per gestire i moduli inviati, effettuare le seguenti operazioni:
  1. Includere i file di progetto.
  2. Creare un oggetto API client Forms.
  3. Recuperare i dati del modulo.
  4. Determinare se l'invio del modulo contiene file allegati.
  5. Elabora i dati inviati.
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 API client Forms
Prima di eseguire un'operazione API client del servizio Forms a livello di programmazione, è necessario creare un client del servizio Forms. Se utilizzate l'API Java, create un FormsServiceClient oggetto. Se si utilizza l'API del servizio Web Forms, creare un FormsService oggetto.
Recupero dei dati del modulo
Per recuperare i dati del modulo inviati, è necessario richiamare il FormsServiceClient metodo processFormSubmission dell'oggetto. 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:
  • Passate il seguente valore al processFormSubmission metodo come parametro del tipo di contenuto: CONTENT_TYPE=application/pdf .
  • Impostare il valore dell' RenderOptionsSpec oggetto PDFToXDP su true
  • Impostare il valore dell' RenderOptionsSpec oggetto ExportDataFormat su XMLData
È possibile specificare il tipo di contenuto del modulo inviato quando si richiama il processFormSubmission metodo. L'elenco seguente specifica i valori di tipo di contenuto applicabili:
  • text/xml : Rappresenta il tipo di contenuto da utilizzare quando un modulo PDF invia 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 PDF invia dati come PDF.
Nella sezione Gestione dei moduli inviati sono associati tre avvii rapidi corrispondenti. La gestione dei moduli PDF inviati come PDF tramite l'avvio rapido dell'API Java illustra come gestire i dati PDF inviati. Il tipo di contenuto specificato in questo avvio rapido è application/pdf . La gestione dei moduli PDF inviati come XML tramite l'avvio rapido dell'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, è possibile inviare i dati al servizio Forms per 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 terminato l'elaborazione dei dati.
Il servizio Forms restituisce i seguenti valori per indicare se ha completato l'elaborazione dei dati:
  • 0 (Invia): I dati inviati sono pronti per essere elaborati.
  • 1 (Calcola): 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 è cambiata con risultati che devono essere scritti nell'applicazione client.
  • 4 (precedente ): La pagina corrente è cambiata con risultati che devono essere scritti nell'applicazione client.
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
I moduli inviati al servizio Forms possono contenere file allegati. Ad esempio, utilizzando il riquadro allegato integrato di Acrobat, l'utente può selezionare assieme al modulo i file allegati da inviare. 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 org.w3c.dom le classi.
Consulta anche

Gestire i moduli inviati tramite l'API Java

Gestire un modulo inviato utilizzando l'API Forms (Java):
  1. Includi file di progetto
    Includete file JAR client, ad esempio adobe-forms-client.jar, nel percorso di classe del progetto Java.
  2. Creare un oggetto API client Forms
    • Creare un ServiceClientFactory oggetto che contenga proprietà di connessione.
    • Creare un FormsServiceClient oggetto utilizzando il relativo costruttore e passando l' ServiceClientFactory oggetto.
  3. Recupero dei dati del modulo
    • Per recuperare i dati del modulo inviati a un Servlet Java, creare un com.adobe.idp.Document oggetto utilizzando il relativo costruttore e richiamando il javax.servlet.http.HttpServletResponse metodo dell'oggetto getInputStream dall'interno del costruttore.
    • Creare un RenderOptionsSpec oggetto utilizzando il relativo costruttore. Impostare il valore delle impostazioni internazionali richiamando il metodo dell' RenderOptionsSpec oggetto setLocale 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 dell' RenderOptionsSpec oggetto e passando setPDF2XDP nonché chiamando true e passando setXMLData true . È quindi possibile richiamare il metodo dell' FormsResult oggetto getOutputXML per recuperare i dati XML che corrispondono ai dati XDP/XML. (L' FormsResult oggetto viene restituito dal processFormSubmission metodo illustrato nel passaggio secondario successivo.)
    • Richiama il metodo dell’ FormsServiceClient oggetto processFormSubmission e passa i seguenti valori:
      • L' com.adobe.idp.Document oggetto che contiene i dati del modulo.
      • Valore stringa che specifica le variabili di ambiente, comprese tutte le intestazioni HTTP rilevanti. Specificate il tipo di contenuto da gestire. Per gestire i dati XML, specificate il seguente valore di stringa per questo parametro: CONTENT_TYPE=text/xml . Per gestire i dati PDF, specificare il seguente valore di stringa per questo parametro: CONTENT_TYPE=application/pdf .
      • Un valore di stringa che specifica il valore dell' HTTP_USER_AGENT intestazione, ad esempio, . Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) . Questo valore del parametro è facoltativo.
      • Un RenderOptionsSpec oggetto che memorizza le opzioni di esecuzione.
      Il processFormSubmission metodo restituisce un FormsResult oggetto contenente i risultati dell'invio del modulo.
    • Determinare se il servizio Forms ha completato l'elaborazione dei dati del modulo richiamando il FormsResult metodo dell'oggetto getAction . Se questo metodo restituisce il valore, 0 i dati sono pronti per essere elaborati.
  4. Determinare se l'invio del modulo contiene file allegati
    • Richiama il metodo dell’ FormsResult oggetto getAttachments . Questo metodo restituisce un java.util.List oggetto che contiene i file inviati con il modulo.
    • Eseguire un'iterazione sull' java.util.List oggetto per determinare se sono presenti allegati di file. In presenza di allegati, ogni elemento è un' com.adobe.idp.Document istanza. È possibile salvare gli allegati richiamando il com.adobe.idp.Document metodo dell'oggetto copyToFile e passando un java.io.File oggetto.
    Questo passaggio è applicabile solo se il modulo viene inviato come PDF.
  5. 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.
      • Creare un com.adobe.idp.Document oggetto richiamando il FormsResult metodo dell' getOutputContent oggetto.
      • Creare un java.io.InputStream oggetto richiamando il java.io.DataInputStream costruttore e passando l' com.adobe.idp.Document oggetto.
      • Creare un org.w3c.dom.DocumentBuilderFactory oggetto chiamando il org.w3c.dom.DocumentBuilderFactory metodo dell' newInstance oggetto statico.
      • Creare un org.w3c.dom.DocumentBuilder oggetto richiamando il org.w3c.dom.DocumentBuilderFactory metodo dell' newDocumentBuilder oggetto.
      • Creare un org.w3c.dom.Document oggetto richiamando il org.w3c.dom.DocumentBuilder metodo dell' parse oggetto e passando l' java.io.InputStream oggetto.
      • Recuperare il valore di ciascun nodo all'interno del documento XML. Un modo per eseguire questa attività è creare un metodo personalizzato che accetta due parametri: l' org.w3c.dom.Document oggetto 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, viene chiamato questo metodo personalizzato 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.
      • Creare un com.adobe.idp.Document oggetto richiamando il FormsResult metodo dell' getOutputContent oggetto.
      • Creare un java.io.File oggetto utilizzando il relativo costruttore pubblico. Accertatevi di specificare PDF come estensione del nome file.
      • Compilare il file PDF richiamando il metodo dell' com.adobe.idp.Document oggetto copyToFile e passando l' java.io.File oggetto.
Consulta anche

Gestione dei dati PDF inviati tramite l'API del servizio Web

Gestire un modulo inviato utilizzando l'API Forms (servizio Web):
  1. Includi file di progetto
    • Creare classi proxy Java che utilizzano il WSDL del servizio Forms.
    • Includete le classi proxy Java nel percorso della classe.
  2. Creare un oggetto API client Forms
    Creare un FormsService oggetto e impostare i valori di autenticazione.
  3. Recupero dei dati del modulo
    • Per recuperare i dati del modulo inviati a un Servlet Java, creare un BLOB oggetto utilizzando il relativo costruttore.
    • Creare un java.io.InputStream oggetto richiamando il javax.servlet.http.HttpServletResponse metodo dell' getInputStream oggetto.
    • Creare un java.io.ByteArrayOutputStream oggetto utilizzando il relativo costruttore e passando la lunghezza dell' java.io.InputStream oggetto.
    • Copiare il contenuto dell' java.io.InputStream oggetto nell' java.io.ByteArrayOutputStream oggetto.
    • Creare un array di byte richiamando il metodo dell' java.io.ByteArrayOutputStream oggetto toByteArray .
    • Compilare l' BLOB oggetto richiamandone il setBinaryData metodo e passando l'array di byte come argomento.
    • Creare un RenderOptionsSpec oggetto utilizzando il relativo costruttore. Impostare il valore delle impostazioni internazionali richiamando il metodo dell' RenderOptionsSpec oggetto setLocale e passando un valore di stringa che specifica il valore delle impostazioni internazionali.
    • Richiama il metodo dell’ FormsService oggetto processFormSubmission e passa i seguenti valori:
      • L' BLOB oggetto che contiene i dati del modulo.
      • Valore stringa che specifica le variabili di ambiente, comprese tutte le intestazioni HTTP rilevanti. Specificate il tipo di contenuto da gestire. Per gestire i dati XML, specificate il seguente valore di stringa per questo parametro: CONTENT_TYPE=text/xml . Per gestire i dati PDF, specificare il seguente valore di stringa per questo parametro: CONTENT_TYPE=application/pdf .
      • Un valore di stringa che specifica il valore dell' HTTP_USER_AGENT intestazione; ad esempio, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) .
      • Un RenderOptionsSpec oggetto che memorizza le opzioni di esecuzione.
      • Un oggetto vuoto BLOBHolder compilato dal metodo.
      • Un oggetto vuoto javax.xml.rpc.holders.StringHolder compilato dal metodo.
      • Un oggetto vuoto BLOBHolder compilato dal metodo.
      • Un oggetto vuoto BLOBHolder compilato dal metodo.
      • Un oggetto vuoto javax.xml.rpc.holders.ShortHolder compilato dal metodo.
      • Un oggetto vuoto MyArrayOf_xsd_anyTypeHolder compilato dal metodo. Questo parametro viene utilizzato per memorizzare gli allegati inviati insieme al modulo.
      • Un FormsResultHolder oggetto vuoto compilato dal metodo con il modulo inviato.
      Il processFormSubmission metodo compila il FormsResultHolder parametro con i risultati dell'invio del modulo.
    • Determinare se il servizio Forms ha completato l'elaborazione dei dati del modulo richiamando il FormsResult metodo dell'oggetto getAction . Se questo metodo restituisce il valore, 0 i dati del modulo sono pronti per essere elaborati. È possibile ottenere un FormsResult oggetto ottenendo il valore del membro FormsResultHolder dati value dell'oggetto.
  4. Determinare se l'invio del modulo contiene file allegati
    Ottenere il valore del membro MyArrayOf_xsd_anyTypeHolder dati dell' value oggetto (l' MyArrayOf_xsd_anyTypeHolder oggetto è stato passato al processFormSubmission metodo). Questo membro di dati restituisce un array di Objects . Ogni elemento all'interno dell' Object array corrisponde Object ai file inviati insieme al modulo. È possibile ottenere ogni elemento all'interno della matrice e inviarlo a un BLOB oggetto.
  5. 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.
      • Creare un BLOB oggetto richiamando il FormsResult metodo dell' getOutputContent oggetto.
      • Creare un array di byte richiamando il metodo dell' BLOB oggetto getBinaryData .
      • Creare un java.io.InputStream oggetto richiamando il java.io.ByteArrayInputStream costruttore e passando l'array di byte.
      • Creare un org.w3c.dom.DocumentBuilderFactory oggetto chiamando il org.w3c.dom.DocumentBuilderFactory metodo dell' newInstance oggetto statico.
      • Creare un org.w3c.dom.DocumentBuilder oggetto richiamando il org.w3c.dom.DocumentBuilderFactory metodo dell' newDocumentBuilder oggetto.
      • Creare un org.w3c.dom.Document oggetto richiamando il org.w3c.dom.DocumentBuilder metodo dell' parse oggetto e passando l' java.io.InputStream oggetto.
      • Recuperare il valore di ciascun nodo all'interno del documento XML. Un modo per eseguire questa attività è creare un metodo personalizzato che accetta due parametri: l' org.w3c.dom.Document oggetto 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, viene chiamato questo metodo personalizzato 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.
      • Creare un BLOB oggetto richiamando il FormsResult metodo dell' getOutputContent oggetto.
      • Creare un array di byte richiamando il metodo dell' BLOB oggetto getBinaryData .
      • Creare un java.io.File oggetto utilizzando il relativo costruttore pubblico. Accertatevi di specificare PDF come estensione del nome file.
      • Creare un java.io.FileOutputStream oggetto utilizzando il relativo costruttore e passando l' java.io.File oggetto.
      • Compilare il file PDF richiamando il metodo dell' java.io.FileOutputStream oggetto write e passando l'array di byte.
Consulta anche