Il servizio Forms può eseguire il rendering dei moduli basati sui frammenti creati con Designer. Un frammento è una parte riutilizzabile di un modulo e viene salvato come file XDP separato che può essere inserito in più strutture del modulo. Ad esempio, un frammento può contenere un blocco indirizzo o note legali.
Utilizzando i frammenti è possibile creare e gestire in modo semplice e veloce anche grandi quantità di moduli. Durante la creazione di un nuovo modulo, è possibile inserire un riferimento al frammento desiderato e il frammento viene visualizzato nel modulo. Il riferimento al frammento contiene un sottomodulo che punta al file XDP fisico. Per informazioni sulla creazione di strutture del modulo basate sui frammenti, vedere Forms Designer
Un frammento può includere diversi sottomoduli racchiusi in un set sottomodulo selezionato. I set sottomodulo selezionati controllano la visualizzazione dei sottomoduli in base al flusso di dati da una connessione dati. È possibile utilizzare istruzioni condizionali per determinare quale sottomodulo del set visualizzare nel modulo finale. Ad esempio, ogni sottomodulo di un set può includere informazioni relative a una particolare posizione geografica; il sottomodulo visualizzato può essere determinato in base alla posizione dell’utente.
Un frammento di script contiene funzioni o valori JavaScript riutilizzabili che sono memorizzati separatamente da qualsiasi oggetto particolare, ad esempio un parser di date o una chiamata a un servizio Web. Questi frammenti includono un singolo oggetto script visualizzato come elemento secondario delle variabili nella palette Gerarchia. Non è consentito creare frammenti derivati da script di proprietà di altri oggetti, ad esempio script di evento che eseguono operazioni di convalida, calcolo o inizializzazione.
Di seguito sono riportati i vantaggi dell’utilizzo dei frammenti:
È possibile assemblare una struttura del modulo da passare al servizio Forms in base a più frammenti. Per assemblare più frammenti, utilizzare il servizio Assembler. Per visualizzare un esempio di utilizzo del servizio Assemble per creare una struttura del modulo utilizzata da un altro servizio Forms (il servizio Output), vedere Creazione di documenti PDF utilizzando frammenti. Invece di utilizzare il servizio Output, puoi eseguire lo stesso flusso di lavoro utilizzando il servizio Forms.
Quando si utilizza il servizio Assembler, si passa una struttura del modulo assemblata utilizzando i frammenti. La struttura del modulo creata non fa riferimento ad altri frammenti. In questo argomento viene invece discusso il passaggio al servizio Forms di una struttura del modulo che fa riferimento ad altri frammenti. Tuttavia, la struttura del modulo non è stata assemblata da Assembler. È stato creato in Designer.
Per ulteriori informazioni sul servizio Forms, consulta Riferimento servizi per AEM Forms.
Per informazioni sulla creazione di un'applicazione basata sul Web per il rendering di moduli basati sui frammenti, vedere Creazione di applicazioni Web per il rendering di Forms.
Per eseguire il rendering di un modulo basato su frammenti, 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, assicurati di includere i file proxy.
Creare un oggetto API client Forms
Prima di poter eseguire programmaticamente un’operazione API client del servizio Forms, è necessario creare un client di servizio Forms.
Specificare i valori URI
Per eseguire correttamente il rendering di un modulo basato su frammenti, è necessario assicurarsi che il servizio Forms sia in grado di individuare sia il modulo che i frammenti (file XDP) a cui fa riferimento la struttura del modulo. Ad esempio, si supponga che il modulo sia denominato PO.xdp e che in questo modulo siano utilizzati due frammenti denominati FooterUS.xdp e FooterCanada.xdp. In questa situazione, il servizio Forms deve essere in grado di individuare tutti e tre i file XDP.
È possibile organizzare un modulo e i relativi frammenti inserendo il modulo in un’unica posizione e i frammenti in un’altra posizione oppure inserendo tutti i file XDP nella stessa posizione. Ai fini di questa sezione, si supponga che tutti i file XDP si trovino nell’archivio AEM Forms. Per informazioni sul posizionamento di file XDP nell'archivio AEM Forms, consulta Risorse di scrittura.
Quando si esegue il rendering di un modulo basato su frammenti, è necessario fare riferimento solo al modulo stesso e non ai frammenti. Ad esempio, è necessario fare riferimento a PO.xdp e non a FooterUS.xdp o FooterCanada.xdp. Assicurati di posizionare i frammenti in un percorso in cui il servizio Forms possa individuarli.
Rendering del modulo
È possibile eseguire il rendering di un modulo basato su frammenti allo stesso modo dei moduli non frammentati. In altre parole, è possibile eseguire il rendering del modulo in formato PDF, HTML o Guide modulo (obsoleto). Nell’esempio riportato in questa sezione viene eseguito il rendering di un modulo basato sui frammenti come modulo PDF interattivo. (Vedere Rendering di PDF forms interattivi.)
Scrivere il flusso di dati del modulo sul browser Web client
Quando il servizio Forms esegue il rendering di un modulo, restituisce un flusso di dati del modulo che è necessario scrivere nel browser Web client. Una volta scritto nel browser Web client, il modulo è visibile all’utente.
Consulta anche
Rendering di moduli basati su frammenti utilizzando l’API Java
Rendering di moduli basati su frammenti utilizzando l’API del servizio Web
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Avvio rapido API di Forms Service
Rendering di PDF forms interattivi
Creazione di applicazioni Web per il rendering di Forms
Eseguire il rendering di un modulo basato su frammenti utilizzando l’API Forms (Java):
Includi file di progetto
Includi file JAR client, come adobe-forms-client.jar, nel percorso di classe del progetto Java.
Creare un oggetto API client Forms
ServiceClientFactory
contenente le proprietà di connessione.FormsServiceClient
utilizzando il relativo costruttore e passando l'oggetto ServiceClientFactory
.Specificare i valori URI
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore.setApplicationWebRoot
dell'oggetto URLSpec
e passa un valore stringa che rappresenta la radice Web dell'applicazione.setContentRootURI
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore URI della directory principale del contenuto. Verificare che la struttura del modulo e i frammenti si trovino nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento al repository, specifica repository://
.setTargetURL
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se si definisce l’URL di destinazione nella struttura del modulo, è possibile passare una stringa vuota. È inoltre possibile specificare l’URL a cui viene inviato un modulo per eseguire i calcoli.Rendering del modulo
Richiama il metodo renderPDFForm
dell'oggetto FormsServiceClient
e passa i seguenti valori:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
contenente i dati da unire al modulo. Se non si desidera unire i dati, passare un oggetto com.adobe.idp.Document
vuoto.PDFFormRenderSpec
che memorizza le opzioni di esecuzione.URLSpec
contenente valori URI richiesti dal servizio Forms per il rendering di un modulo basato su frammenti.java.util.HashMap
che memorizza gli allegati di file. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera allegare file al modulo.Il metodo renderPDFForm
restituisce un oggetto FormsResult
contenente un flusso di dati del modulo che deve essere scritto nel browser Web client.
Scrivere il flusso di dati del modulo sul browser Web client
com.adobe.idp.Document
richiamando il metodo FormsResult
object ‘s getOutputContent
.com.adobe.idp.Document
richiamandone il metodo getContentType
.javax.servlet.http.HttpServletResponse
richiamandone il metodo setContentType
e passando il tipo di contenuto dell'oggetto com.adobe.idp.Document
.javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodo javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
.java.io.InputStream
richiamando il metodo com.adobe.idp.Document
dell'oggetto getInputStream
.read
dell'oggetto InputStream
e passando l'array di byte come argomento.write
dell’oggetto javax.servlet.ServletOutputStream
per inviare il flusso di dati del modulo al browser Web client. Passa l'array di byte al metodo write
.Consulta anche
Rendering di Forms basato su frammenti
Avvio rapido (modalità SOAP): Rendering di un modulo basato su frammenti utilizzando l’API Java
Inclusione dei file libreria Java di AEM Forms
Impostazione delle proprietà di connessione
Eseguire il rendering di un modulo basato su frammenti utilizzando l’API Forms (servizio Web):
Includi file di progetto
Creare un oggetto API client Forms
Creare un oggetto FormsService
e impostare i valori di autenticazione.
Specificare i valori URI
URLSpec
che memorizza i valori URI utilizzando il relativo costruttore.setApplicationWebRoot
dell'oggetto URLSpec
e passa un valore stringa che rappresenta la radice Web dell'applicazione.setContentRootURI
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore URI della directory principale del contenuto. Verificare che la struttura del modulo si trovi nell’URI della directory principale del contenuto. In caso contrario, il servizio Forms genera un'eccezione. Per fare riferimento al repository, specifica repository://
.setTargetURL
dell'oggetto URLSpec
e passa un valore stringa che specifica il valore dell'URL di destinazione in cui vengono inviati i dati del modulo. Se si definisce l’URL di destinazione nella struttura del modulo, è possibile passare una stringa vuota. È inoltre possibile specificare l’URL a cui viene inviato un modulo per eseguire i calcoli.Rendering del modulo
Richiama il metodo renderPDFForm
dell'oggetto FormsService
e passa i seguenti valori:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
contenente i dati da unire al modulo. Se non desideri unire i dati, passa null
.PDFFormRenderSpec
che memorizza le opzioni di esecuzione. L’opzione PDF con tag non può essere impostata se il documento di input è un documento PDF. Se il file di input è un file XDP, è possibile impostare l’opzione PDF con tag.URLSpec
che contiene i valori URI richiesti dal servizio Forms.java.util.HashMap
che memorizza gli allegati di file. Questo è un parametro facoltativo ed è possibile specificare null
se non si desidera allegare file al modulo.com.adobe.idp.services.holders.BLOBHolder
vuoto compilato dal metodo . Questo parametro viene utilizzato per memorizzare il modulo di cui è stato effettuato il rendering.javax.xml.rpc.holders.LongHolder
vuoto compilato dal metodo . Questo argomento memorizza il numero di pagine nel modulo.javax.xml.rpc.holders.StringHolder
vuoto compilato dal metodo . Questo argomento memorizza il valore delle impostazioni internazionali.com.adobe.idp.services.holders.FormsResultHolder
vuoto che conterrà i risultati dell'operazione.Il metodo renderPDFForm
popola l'oggetto com.adobe.idp.services.holders.FormsResultHolder
passato come ultimo valore dell'argomento con un flusso di dati del modulo che deve essere scritto nel browser Web client.
Scrivere il flusso di dati del modulo sul browser Web client
FormResult
ottenendo il valore del membro dati com.adobe.idp.services.holders.FormsResultHolder
dell'oggetto value
.BLOB
che contiene dati del modulo richiamando il metodo FormsResult
dell'oggetto getOutputContent
.BLOB
richiamandone il metodo getContentType
.javax.servlet.http.HttpServletResponse
richiamandone il metodo setContentType
e passando il tipo di contenuto dell'oggetto BLOB
.javax.servlet.ServletOutputStream
utilizzato per scrivere il flusso di dati del modulo nel browser Web client richiamando il metodo javax.servlet.http.HttpServletResponse
dell'oggetto getOutputStream
.getBinaryData
dell'oggetto BLOB
. Questa attività assegna il contenuto dell'oggetto FormsResult
all'array di byte.write
dell’oggetto javax.servlet.http.HttpServletResponse
per inviare il flusso di dati del modulo al browser Web client. Passa l'array di byte al metodo write
.Consulta anche
Rendering di Forms basato su frammenti
Richiamo di AEM Forms con codifica Base64