Exemplos e exemplos neste documento são apenas para o AEM Forms no ambiente JEE.
O serviço Forms pode renderizar formulários baseados em fragmentos criados com o Designer. Um fragmento é uma parte reutilizável de um formulário e é salvo como um arquivo XDP separado que pode ser inserido em vários designs de formulário. Por exemplo, um fragmento pode incluir um bloco de endereço ou texto legal.
O uso dos fragmentos simplifica e acelera a criação e manutenção de uma grande quantidade de formulários. Ao criar um novo formulário, você insere uma referência ao fragmento necessário e o fragmento aparece no formulário. A referência do fragmento contém um subformulário que aponta para o arquivo XDP físico. Para obter informações sobre como criar designs de formulário com base em fragmentos, consulte Forms Designer
Um fragmento pode incluir vários subformulários que estão vinculados em um conjunto de subformulários de escolha. Os conjuntos de subformulários de escolha controlam a exibição de subformulários com base no fluxo de dados de uma conexão de dados. Instruções condicionais são usadas para determinar qual subformulário do conjunto aparece no formulário apresentado. Por exemplo, cada subformulário em um conjunto pode incluir informações para uma localização geográfica específica e o subformulário exibido pode ser determinado com base na localização do usuário.
Um fragmento de script contém funções ou valores JavaScript reutilizáveis armazenados separadamente de qualquer objeto específico, como analisador de data ou uma chamada de serviço da Web. Esses fragmentos incluem um único objeto de script que aparece como um filho de variáveis na paleta Hierarquia. Os fragmentos não podem ser criados a partir de scripts que são propriedades de outros objetos, por exemplo, scripts de evento, como validar, calcular ou inicializar.
Estas são as vantagens de usar fragmentos:
Você pode reunir um design de formulário para passar para o serviço Forms com base em vários fragmentos. Para montar vários fragmentos, use o serviço Assembler. Para ver um exemplo de uso do serviço Assemble para criar um design de formulário usado por outros serviços do Forms (o serviço Saída), consulte Criação de documentos PDF usando fragmentos. Em vez de usar o serviço de Saída, você pode executar o mesmo fluxo de trabalho usando o serviço Forms.
Ao usar o serviço Assembler, você está transmitindo um design de formulário que foi montado usando fragmentos. O design de formulário criado não faz referência a outros fragmentos. Por outro lado, esse tópico discute a transmissão de um design de formulário que faça referência a outros fragmentos para o serviço Forms. No entanto, o design de formulário não foi montado pelo Assembler. Ele foi criado no Designer.
Para obter mais informações sobre o serviço Forms, consulte Referência de serviços para AEM Forms.
Para obter informações sobre como criar um aplicativo baseado na Web que renderize formulários com base em fragmentos, consulte Criação de aplicativos Web que renderiza Forms.
Para renderizar um formulário com base em fragmentos, execute as seguintes tarefas:
Incluir arquivos de projeto
Inclua os arquivos necessários no projeto de desenvolvimento. Se você estiver criando um aplicativo cliente usando Java, inclua os arquivos JAR necessários. Se você estiver usando serviços da Web, certifique-se de incluir os arquivos proxy.
Criar um objeto de API do cliente do Forms
Antes de executar programaticamente uma operação de API do cliente de serviço do Forms, é necessário criar um cliente de serviço do Forms.
Especificar valores de URI
Para renderizar com êxito um formulário com base em fragmentos, é necessário garantir que o serviço Forms possa localizar o formulário e os fragmentos (os arquivos XDP) que o design de formulário faz referência. Por exemplo, suponha que o formulário seja chamado PO.xdp e que esse formulário use dois fragmentos chamados FooterUS.xdp e FooterCanada.xdp. Nessa situação, o serviço Forms deve ser capaz de localizar todos os três arquivos XDP.
Você pode organizar um formulário e seus fragmentos colocando o formulário em um local e os fragmentos em outro local, ou pode colocar todos os arquivos XDP no mesmo local. Para os fins desta seção, suponha que todos os arquivos XDP estejam localizados no repositório AEM Forms. Para obter informações sobre como colocar arquivos XDP no repositório AEM Forms, consulte Gravando recursos.
Ao renderizar um formulário com base em fragmentos, é necessário fazer referência somente ao próprio formulário e não aos fragmentos. Por exemplo, você deve referenciar PO.xdp e não FooterUS.xdp ou FooterCanada.xdp. Certifique-se de colocar os fragmentos em um local onde o serviço Forms possa localizá-los.
Renderizar o formulário
Um formulário baseado em fragmentos pode ser renderizado da mesma maneira que formulários não fragmentados. Ou seja, você pode renderizar o formulário como PDF, HTML ou Guias do formulário (obsoleto). O exemplo nesta seção renderiza um formulário com base em fragmentos como um formulário PDF interativo. (Consulte Renderização de PDF forms interativos.)
Gravar o fluxo de dados do formulário no navegador da Web cliente
Quando o serviço Forms renderiza um formulário, ele retorna um fluxo de dados de formulário que deve ser gravado no navegador da Web cliente. Quando gravado no navegador da Web do cliente, o formulário fica visível para o usuário.
Consulte também:
Renderizar formulários com base em fragmentos usando a API Java
Renderizar formulários com base em fragmentos usando a API do serviço da Web
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Início rápido da API do Forms Service
Renderização de PDF forms interativos
Criação de aplicativos Web que renderizam o Forms
Renderize um formulário com base em fragmentos usando a API do Forms (Java):
Incluir arquivos de projeto
Inclua arquivos JAR do cliente, como adobe-forms-client.jar, no caminho de classe do seu projeto Java.
Criar um objeto de API do cliente do Forms
ServiceClientFactory
que contenha propriedades de conexão.FormsServiceClient
usando seu construtor e transmitindo o objeto ServiceClientFactory
.Especificar valores de URI
URLSpec
que armazene valores de URI usando seu construtor.URLSpec
do objeto setApplicationWebRoot
e transmita um valor de string que representa a raiz da Web do aplicativo.URLSpec
do objeto e transmita um valor de string que especifica o valor do URI da raiz do conteúdo. setContentRootURI
Verifique se o design de formulário e os fragmentos estão localizados no URI raiz do conteúdo. Caso contrário, o serviço Forms acionará uma exceção. Para fazer referência ao repositório, especifique repository://
.URLSpec
do objeto e transmita um valor de string que especifica o valor do URL de destino para onde os dados do formulário são publicados. setTargetURL
Se você definir o URL de destino no design de formulário, poderá passar uma string vazia. Também é possível especificar a URL para a qual um formulário é enviado para executar cálculos.Renderizar o formulário
Chame o método FormsServiceClient
do objeto renderPDFForm
e passe os seguintes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.com.adobe.idp.Document
que contém dados para mesclar com o formulário. Se não quiser mesclar dados, passe um objeto com.adobe.idp.Document
vazio.PDFFormRenderSpec
que armazena opções de tempo de execução.URLSpec
que contém valores de URI necessários para o serviço Forms renderizar um formulário com base em fragmentos.java.util.HashMap
que armazena anexos de arquivo. Esse é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.O método renderPDFForm
retorna um objeto FormsResult
que contém um fluxo de dados de formulário que deve ser gravado no navegador da Web do cliente.
Gravar o fluxo de dados do formulário no navegador da Web cliente
com.adobe.idp.Document
chamando o método FormsResult
object 's getOutputContent
.com.adobe.idp.Document
chamando seu método getContentType
.javax.servlet.http.HttpServletResponse
chamando seu método setContentType
e passando o tipo de conteúdo do objeto com.adobe.idp.Document
.javax.servlet.ServletOutputStream
usado para gravar o fluxo de dados do formulário no navegador da Web cliente, chamando o método javax.servlet.http.HttpServletResponse
do objeto getOutputStream
.java.io.InputStream
chamando o método com.adobe.idp.Document
getInputStream
do objeto.InputStream
do objeto e passando a matriz de bytes como um argumento.read
javax.servlet.ServletOutputStream
do objeto write
para enviar o fluxo de dados do formulário para o navegador da Web cliente. Passe a matriz de bytes para o método write
.Consulte também:
Renderização do Forms com base em fragmentos
Início rápido (modo SOAP): Renderização de um formulário com base em fragmentos usando a API Java
Inclusão de arquivos da biblioteca Java do AEM Forms
Configuração das propriedades de conexão
Renderize um formulário com base em fragmentos usando a API do Forms (serviço da Web):
Incluir arquivos de projeto
Criar um objeto de API do cliente do Forms
Crie um objeto FormsService
e defina os valores de autenticação.
Especificar valores de URI
URLSpec
que armazene valores de URI usando seu construtor.URLSpec
do objeto setApplicationWebRoot
e transmita um valor de string que representa a raiz da Web do aplicativo.URLSpec
do objeto e transmita um valor de string que especifica o valor do URI da raiz do conteúdo. setContentRootURI
Verifique se o design de formulário está localizado no URI raiz do conteúdo. Caso contrário, o serviço Forms acionará uma exceção. Para fazer referência ao repositório, especifique repository://
.URLSpec
do objeto e transmita um valor de string que especifica o valor do URL de destino para onde os dados do formulário são publicados. setTargetURL
Se você definir o URL de destino no design de formulário, poderá passar uma string vazia. Também é possível especificar a URL para a qual um formulário é enviado para executar cálculos.Renderizar o formulário
Chame o método FormsService
do objeto renderPDFForm
e passe os seguintes valores:
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
.BLOB
que contém dados para mesclar com o formulário. Se não quiser mesclar dados, passe null
.PDFFormRenderSpec
que armazena opções de tempo de execução. Observe que a opção PDF marcado não pode ser definida se o documento de entrada for um documento PDF. Se o arquivo de entrada for um arquivo XDP, a opção PDF marcado poderá ser definida.URLSpec
que contém valores de URI exigidos pelo serviço Forms.java.util.HashMap
que armazena anexos de arquivo. Esse é um parâmetro opcional e você pode especificar null
se não quiser anexar arquivos ao formulário.com.adobe.idp.services.holders.BLOBHolder
que é preenchido pelo método . Esse parâmetro é usado para armazenar o formulário renderizado.javax.xml.rpc.holders.LongHolder
que é preenchido pelo método . Esse argumento armazenará o número de páginas no formulário.javax.xml.rpc.holders.StringHolder
que é preenchido pelo método . Esse argumento armazenará o valor da localidade.com.adobe.idp.services.holders.FormsResultHolder
que conterá os resultados desta operação.O método renderPDFForm
preenche o objeto com.adobe.idp.services.holders.FormsResultHolder
passado como o último valor do argumento com um fluxo de dados de formulário que deve ser gravado no navegador da Web do cliente.
Gravar o fluxo de dados do formulário no navegador da Web cliente
FormResult
obtendo o valor do membro de dados com.adobe.idp.services.holders.FormsResultHolder
do objeto value
.BLOB
que contenha dados de formulário chamando o método FormsResult
do objeto getOutputContent
.BLOB
chamando seu método getContentType
.javax.servlet.http.HttpServletResponse
chamando seu método setContentType
e passando o tipo de conteúdo do objeto BLOB
.javax.servlet.ServletOutputStream
usado para gravar o fluxo de dados do formulário no navegador da Web cliente, chamando o método javax.servlet.http.HttpServletResponse
do objeto getOutputStream
.BLOB
do objeto getBinaryData
. Essa tarefa atribui o conteúdo do objeto FormsResult
à matriz de bytes.javax.servlet.http.HttpServletResponse
do objeto write
para enviar o fluxo de dados do formulário para o navegador da Web cliente. Passe a matriz de bytes para o método write
.Consulte também: