Cálculo de dados de formulário calculating-form-data
Exemplos e exemplos neste documento são somente para AEM Forms no ambiente JEE.
O serviço Forms pode calcular os valores que um usuário insere em um formulário e exibir os resultados. Para calcular dados de formulário, você deve executar duas tarefas. Primeiro, crie um script de design de formulário que calcula os dados de formulário. Um design de formulário é compatível com três tipos de scripts. Um tipo de script é executado no cliente, outro é executado no servidor e o terceiro é executado no servidor e no cliente. O tipo de script discutido neste tópico é executado no servidor. Os cálculos do lado do servidor são compatíveis com as transformações de HTML, PDF e Guia de forma (obsoleto).
Como parte do processo de design do formulário, você pode usar cálculos e scripts para fornecer uma experiência do usuário mais avançada. Cálculos e scripts podem ser adicionados à maioria dos campos e objetos de formulário. Crie um script de design de formulário para executar operações de cálculo nos dados que um usuário insere em um formulário interativo.
O usuário insere valores no formulário e clica no botão Calculate para exibir os resultados. O processo a seguir descreve um aplicativo de exemplo que permite ao usuário calcular dados:
- O usuário acessa uma página de HTML chamada StartLoan.html que atua como a página inicial da aplicação Web. Esta página chama um Servlet Java chamado
GetLoanForm
. - O servlet
GetLoanForm
renderiza um formulário de empréstimo. Este formulário contém um script, campos interativos, um botão calcular e um botão enviar. - O usuário insere valores nos campos do formulário e clica no botão Calcular. O formulário é enviado para o Servlet Java
CalculateData
onde o script é executado. O formulário é enviado de volta ao usuário com os resultados do cálculo exibidos no formulário. - O usuário continua informando e calculando valores até que um resultado satisfatório seja exibido. Quando satisfeito, o usuário clica no botão Submit para processar o formulário. O formulário é enviado para outro Servlet Java chamado
ProcessForm
, que é responsável por recuperar os dados enviados. (Consulte Manipulação de Forms Enviada.)
O diagrama a seguir mostra o fluxo lógico do aplicativo.
A tabela a seguir descreve as etapas deste diagrama.
GetLoanForm
é chamado a partir da página inicial do HTML.GetLoanForm
usa a API do cliente do serviço Forms para renderizar o formulário de empréstimo para o navegador Web do cliente. A diferença entre renderizar um formulário que contém um script configurado para ser executado no servidor e renderizar um formulário que não contém um script é que você deve especificar o local de destino usado para executar o script. Se um local de destino não for especificado, um script configurado para ser executado no servidor não será executado. Por exemplo, considere o aplicativo introduzido nesta seção. O Servlet Java CalculateData
é o local de destino onde o script é executado.CalculateData
, onde o script é executado.ProcessForm
.Normalmente, um formulário enviado como conteúdo de PDF contém scripts que são executados no cliente. No entanto, os cálculos do lado do servidor também podem ser executados. Um botão Enviar não pode ser usado para calcular scripts. Nessa situação, os cálculos não são executados porque o serviço do Forms considera a interação concluída.
Para ilustrar o uso de um script de design de formulário, esta seção examina um formulário interativo simples que contém um script configurado para execução no servidor. O diagrama a seguir mostra um design de formulário contendo um script que adiciona valores inseridos por um usuário nos dois primeiros campos e exibe o resultado no terceiro campo.
A. Um campo chamado NumericField1 B. Um campo chamado NumericField2 C. Um campo chamado NumericField3
A sintaxe do script nesse design de formulário é a seguinte:
NumericField3 = NumericField2 + NumericField1
Neste design de formulário, o botão Calcular é um botão de comando, e o script está no evento Click
desse botão. Quando um usuário insere valores nos dois primeiros campos (NumericField1 e NumericField2) e clica no botão Calcular, o formulário é enviado ao serviço do Forms, onde o script é executado. O serviço Forms renderiza o formulário de volta para o dispositivo cliente com os resultados do cálculo exibidos no campo NumericField3.
Resumo das etapas summary-of-steps
Para calcular dados de formulário, execute as seguintes tarefas:
- Incluir arquivos de projeto.
- Crie um objeto da API do cliente do Forms.
- Recupere um formulário que contenha um script de cálculo.
- Gravar o fluxo de dados do formulário de volta no navegador da Web do cliente
Incluir arquivos de projeto
Inclua os arquivos necessários no projeto de desenvolvimento. Se você estiver criando uma aplicação 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 da API do cliente do Forms
Antes de executar programaticamente uma operação da API do cliente de serviço do Forms, você deve criar um cliente de serviço do Forms. Se você estiver usando a API Java, crie um objeto FormsServiceClient
. Se você estiver usando a API de serviço Web Forms, crie um objeto FormsServiceService
.
Recuperar um formulário que contenha um script de cálculo
Use a API do cliente de serviço do Forms para criar uma lógica de aplicativo que manipula um formulário que contém um script configurado para execução no servidor. O processo é semelhante ao manuseio de um formulário enviado. (Consulte Manipulação de Forms Enviada.)
Verifique se o estado de processamento associado ao formulário enviado é 1
(Calculate)
, o que significa que o serviço Forms está executando uma operação de cálculo nos dados do formulário e os resultados devem ser gravados de volta para o usuário. Nessa situação, um script configurado para ser executado no servidor é executado automaticamente.
Gravar o fluxo de dados de formulário de volta no navegador Web cliente
Depois de verificar se o estado de processamento associado a um formulário enviado é 1
, você deve gravar os resultados no navegador da Web do cliente. Quando o formulário for exibido, o valor calculado será exibido nos campos apropriados.
Consulte também
Incluindo arquivos da biblioteca AEM Forms Java
Calcular dados do formulário usando a API Java
Calcular dados de formulário usando a API de serviço Web
Definindo propriedades de conexão
Início Rápido da API de Serviço do Forms
Renderizando PDF forms interativos
Criando Aplicativos Web que Renderizam o Forms
Calcular dados do formulário usando a API Java calculate-form-data-using-the-java-api
Calcule dados de formulário 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 projeto Java.
-
Criar um objeto da API do cliente do Forms
- Crie um objeto
ServiceClientFactory
que contenha propriedades de conexão. - Crie um objeto
FormsServiceClient
usando seu construtor e transmitindo o objetoServiceClientFactory
.
- Crie um objeto
-
Recuperar um formulário que contenha um script de cálculo
-
Para recuperar dados de formulário que contenham um script de cálculo, crie um objeto
com.adobe.idp.Document
usando seu construtor e invocando o métodogetInputStream
do objetojavax.servlet.http.HttpServletResponse
de dentro do construtor. -
Invoque o método
processFormSubmission
do objetoFormsServiceClient
e passe os seguintes valores:- O objeto
com.adobe.idp.Document
que contém os dados de formulário. - Um valor de string que especifica variáveis de ambiente, incluindo todos os cabeçalhos HTTP relevantes. Especifique o tipo de conteúdo a ser manipulado especificando um ou mais valores para a variável de ambiente
CONTENT_TYPE
. Por exemplo, para manipular dados XML e PDF, especifique o seguinte valor de cadeia de caracteres para este parâmetro:CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
- Um valor de cadeia de caracteres que especifica o valor do cabeçalho
HTTP_USER_AGENT
; por exemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Um objeto
RenderOptionsSpec
que armazena opções de tempo de execução.
O método
processFormSubmission
retorna um objetoFormsResult
contendo os resultados do envio do formulário. - O objeto
-
Verifique se o estado de processamento associado a um formulário enviado é
1
invocando o métodogetAction
do objetoFormsResult
. Se esse método retornar o valor1
, o cálculo foi executado e os dados podem ser gravados no navegador da Web do cliente.
-
-
Gravar o fluxo de dados do formulário de volta no navegador da Web do cliente
- Crie um objeto
javax.servlet.ServletOutputStream
usado para enviar um fluxo de dados de formulário ao navegador da Web cliente. - Crie um objeto
com.adobe.idp.Document
invocando o métodogetOutputContent
do objetoFormsResult
. - Crie um objeto
java.io.InputStream
invocando o métodogetInputStream
do objetocom.adobe.idp.Document
. - Crie uma matriz de bytes e preencha-a com o fluxo de dados de formulário, chamando o método
read
do objetoInputStream
e transmitindo a matriz de bytes como argumento. - Invoque o método
write
do objetojavax.servlet.ServletOutputStream
para enviar o fluxo de dados de formulário para o navegador Web cliente. Passar a matriz de bytes para o métodowrite
.
- Crie um objeto
Consulte também
Incluindo arquivos da biblioteca AEM Forms Java
Definindo propriedades de conexão
Calcular dados do formulário usando a API do serviço Web calculate-form-data-using-the-web-service-api
Calcule dados de formulário usando a API do Forms (serviço da Web):
-
Incluir arquivos de projeto
- Crie classes de proxy Java que consomem o serviço WSDL do Forms.
- Inclua as classes de proxy Java no caminho da classe.
-
Criar um objeto da API do cliente do Forms
Crie um objeto
FormsService
e defina valores de autenticação. -
Recuperar um formulário que contenha um script de cálculo
-
Para recuperar dados de formulário postados em um Servlet Java, crie um objeto
BLOB
usando seu construtor. -
Crie um objeto
java.io.InputStream
usando o métodogetInputStream
do objetojavax.servlet.http.HttpServletResponse
. -
Crie um objeto
java.io.ByteArrayOutputStream
usando seu construtor e transmitindo o comprimento do objetojava.io.InputStream
. -
Copie o conteúdo do objeto
java.io.InputStream
no objetojava.io.ByteArrayOutputStream
. -
Crie uma matriz de bytes invocando o método
toByteArray
do objetojava.io.ByteArrayOutputStream
. -
Preencha o objeto
BLOB
invocando seu métodosetBinaryData
e transmitindo a matriz de bytes como um argumento. -
Crie um objeto
RenderOptionsSpec
usando seu construtor. Defina o valor da localidade invocando o métodosetLocale
do objetoRenderOptionsSpec
e transmitindo um valor de cadeia de caracteres que especifique o valor da localidade. -
Invoque o método
processFormSubmission
do objetoFormsServiceClient
e passe os seguintes valores:- O objeto
BLOB
que contém os dados de formulário. - Um valor de string que especifica variáveis de ambiente incluídas em todos os cabeçalhos HTTP relevantes. Por exemplo, você pode especificar o seguinte valor de cadeia de caracteres:
HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
- Um valor de cadeia de caracteres que especifica o valor do cabeçalho
HTTP_USER_AGENT
; por exemplo,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - Um objeto
RenderOptionsSpec
que armazena opções de tempo de execução. Para obter mais informações, . - Um objeto
BLOBHolder
vazio preenchido pelo método. - Um objeto
javax.xml.rpc.holders.StringHolder
vazio preenchido pelo método. - Um objeto
BLOBHolder
vazio preenchido pelo método. - Um objeto
BLOBHolder
vazio preenchido pelo método. - Um objeto
javax.xml.rpc.holders.ShortHolder
vazio preenchido pelo método. - Um objeto
MyArrayOf_xsd_anyTypeHolder
vazio preenchido pelo método. Esse parâmetro é usado para armazenar anexos de arquivo enviados junto com o formulário. - Um objeto
FormsResultHolder
vazio que é preenchido pelo método com o formulário enviado.
O método
processFormSubmission
preenche o parâmetroFormsResultHolder
com os resultados do envio do formulário. O métodoprocessFormSubmission
retorna um objetoFormsResult
contendo os resultados do envio do formulário. - O objeto
-
Verifique se o estado de processamento associado a um formulário enviado é
1
invocando o métodogetAction
do objetoFormsResult
. Se esse método retornar o valor1
, o cálculo foi executado e os dados podem ser gravados no navegador da Web do cliente.
-
-
Gravar o fluxo de dados do formulário de volta no navegador da Web do cliente
- Crie um objeto
javax.servlet.ServletOutputStream
usado para enviar um fluxo de dados de formulário ao navegador da Web cliente. - Crie um objeto
BLOB
que contenha dados de formulário invocando o métodogetOutputContent
do objetoFormsResult
. - Crie uma matriz de bytes e preencha-a chamando o método
getBinaryData
do objetoBLOB
. Esta tarefa atribui o conteúdo do objetoFormsResult
à matriz de bytes. - Invoque o método
write
do objetojavax.servlet.http.HttpServletResponse
para enviar o fluxo de dados de formulário para o navegador Web cliente. Passar a matriz de bytes para o métodowrite
.
- Crie um objeto
Consulte também
Invocando o AEM Forms usando codificação Base64