Summary of steps
To calculate form data, perform the following tasks:
- Include project files.
- Create a Forms Client API object.
- Retrieve a form containing a calculation script.
- Write the form data stream back to the client web browser
Include project files
Include necessary files into your development project. If you are creating a client application using Java, include the necessary JAR files. If you are using web services, ensure that you include the proxy files.
Create a Forms Client API object
Before you can programmatically perform a Forms service Client API operation, you must create a Forms service client. If you are using the Java API, create a FormsServiceClient
object. If you are using the Forms web service API, create a FormsServiceService
object.
Retrieve a form containing a calculation script
You use the Forms service Client API to create application logic that handles a form that contains a script configured to run on the server. The process is similar to handling a submitted form. (See Handling Submitted Forms.)
Verify that the processing state associated with the submitted form is 1
(Calculate)
, which means that the Forms service is performing a calculation operation on the form data and the results must be written back to the user. In this situation, a script configured to run on the server is automatically executed.
Write the form data stream back to the client web browser
After you verify the processing state associated with a submitted form is 1
, you must write the results back to the client web browser. When the form is displayed, the calculated value will appear in the appropriate field(s).
See also
Including AEM Forms Java library files
Calculate form data using the Java API
Calculate form data using the web service API
Setting connection properties
Forms Service API Quick Starts
Rendering Interactive PDF Forms
Creating Web Applications that Renders Forms
Calculate form data using the Java API
Calculate form data by using the Forms API (Java):
-
Include project files
Include client JAR files, such as adobe-forms-client.jar in your Java project’s class path.
-
Create a Forms Client API object
- Create a
ServiceClientFactory
object that contains connection properties. - Create an
FormsServiceClient
object by using its constructor and passing theServiceClientFactory
object.
- Create a
-
Retrieve a form containing a calculation script
-
To retrieve form data that contains a calculation script, create a
com.adobe.idp.Document
object by using its constructor and invoking thejavax.servlet.http.HttpServletResponse
object’sgetInputStream
method from within the constructor. -
Invoke the
FormsServiceClient
object’sprocessFormSubmission
method and pass the following values:- The
com.adobe.idp.Document
object that contains the form data. - A string value that specifies environment variables including all relevant HTTP headers. Specify the content type to handle by specifying one or more values for the
CONTENT_TYPE
environment variable. For example, to handle XML and PDF data, specify the following string value for this parameter:CONTENT_TYPE=application/xml&CONTENT_TYPE=application/pdf
- A string value that specifies the
HTTP_USER_AGENT
header value; for example,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - A
RenderOptionsSpec
object that stores run-time options.
The
processFormSubmission
method returns aFormsResult
object containing the results of the form submission. - The
-
Verify that the processing state associated with a submitted form is
1
by invoking theFormsResult
object’sgetAction
method. If this method returns the value1
, the calculation was performed and the data can be written back to the client web browser.
-
-
Write the form data stream back to the client web browser
- Create a
javax.servlet.ServletOutputStream
object used to send a form data stream to the client web browser. - Create a
com.adobe.idp.Document
object by invoking theFormsResult
object 'sgetOutputContent
method. - Create a
java.io.InputStream
object by invoking thecom.adobe.idp.Document
object’sgetInputStream
method. - Create a byte array and populate it with the form data stream by invoking the
InputStream
object’sread
method and passing the byte array as an argument. - Invoke the
javax.servlet.ServletOutputStream
object’swrite
method to send the form data stream to the client web browser. Pass the byte array to thewrite
method.
- Create a
Calculate form data using the web service API
Calculate form data by using the Forms API (web service):
-
Include project files
- Create Java proxy classes that consume the Forms service WSDL.
- Include the Java proxy classes into your class path.
-
Create a Forms Client API object
Create a
FormsService
object and set authentication values. -
Retrieve a form containing a calculation script
-
To retrieve form data that was posted to a Java Servlet, create a
BLOB
object by using its constructor. -
Create a
java.io.InputStream
object by using thejavax.servlet.http.HttpServletResponse
object’sgetInputStream
method. -
Create a
java.io.ByteArrayOutputStream
object by using its constructor and passing the length of thejava.io.InputStream
object. -
Copy the contents of the
java.io.InputStream
object into thejava.io.ByteArrayOutputStream
object. -
Create a byte array by invoking the
java.io.ByteArrayOutputStream
object’stoByteArray
method. -
Populate the
BLOB
object by invoking itssetBinaryData
method and passing the byte array as an argument. -
Create a
RenderOptionsSpec
object by using its constructor. Set the locale value by invoking theRenderOptionsSpec
object’ssetLocale
method and passing a string value that specifies the locale value. -
Invoke the
FormsServiceClient
object’sprocessFormSubmission
method and pass the following values:- The
BLOB
object that contains the form data. - A string value that specifies environment variables included all relevant HTTP headers. For example, you can specify the following string value:
HTTP_REFERER=referrer&HTTP_CONNECTION=keep-alive&CONTENT_TYPE=application/xml
- A string value that specifies the
HTTP_USER_AGENT
header value; for example,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
. - A
RenderOptionsSpec
object that stores run-time options. For more information, . - An empty
BLOBHolder
object that is populated by the method. - An empty
javax.xml.rpc.holders.StringHolder
object that is populated by the method. - An empty
BLOBHolder
object that is populated by the method. - An empty
BLOBHolder
object that is populated by the method. - An empty
javax.xml.rpc.holders.ShortHolder
object that is populated by the method. - An empty
MyArrayOf_xsd_anyTypeHolder
object that is populated by the method. This parameter is used to store file attachments that are submitted along with the form. - An empty
FormsResultHolder
object that is populated by the method with the form that is submitted.
The
processFormSubmission
method populates theFormsResultHolder
parameter with the results of the form submission. TheprocessFormSubmission
method returns aFormsResult
object containing the results of the form submission. - The
-
Verify that the processing state associated with a submitted form is
1
by invoking theFormsResult
object’sgetAction
method. If this method returns the value1
, the calculation was performed and the data can be written back to the client web browser.
-
-
Write the form data stream back to the client web browser
- Create a
javax.servlet.ServletOutputStream
object used to send a form data stream to the client web browser. - Create a
BLOB
object that contains form data by invoking theFormsResult
object’sgetOutputContent
method. - Create a byte array and populate it by invoking the
BLOB
object’sgetBinaryData
method. This task assigns the content of theFormsResult
object to the byte array. - Invoke the
javax.servlet.http.HttpServletResponse
object’swrite
method to send the form data stream to the client web browser. Pass the byte array to thewrite
method.
- Create a