Invoking a short-lived process using the Invocation API
You can invoke a short-lived process using the Java Invocation
API. When you invoke a short-lived process using the Invocation
API, you pass required parameter values by using a java.util.HashMap object.
For each parameter to pass to a service, invoke the java.util.HashMap object’s put method and
specify the name-value pair that is required by the service in order
to perform the specified operation. Specify the exact name of the
parameters that belong to the short-lived process.
The discussion here is about using Invocation API to invoke the
following LiveCycle short-lived process named MyApplication/EncryptDocument.
This process is not based on an existing LiveCycle
process. To follow along with the code example, create a process
(See Using Workbench
When this process is invoked, it performs the following actions:
Obtains the unsecured PDF document that is passed to
the process. This action is based on the SetValue operation.
The input parameter for this process is a document process
variable named inDoc.
Encrypts the PDF document with a password. This action is
based on the PasswordEncryptPDF operation. The
password encrypted PDF document is returned in a process variable
Invoke the MyApplication/EncryptDocument short-lived process using the Java invocation API
Invoke the MyApplication/EncryptDocument short-lived
process using the Java invocation API:
Include client JAR files, such as the adobe-livecycle-client.jar,
in your Java project’s class path. (See Including LiveCycle Java library files.)
Create a ServiceClientFactory object that
contains connection properties. (See Setting connection properties.)
Create a ServiceClient object by using its
constructor and passing the ServiceClientFactory object.
A ServiceClient object lets you invoke a service
operation. It handles tasks such as locating, dispatching, and routing
Create a java.util.HashMap object by using
Invoke the java.util.HashMap object’s put method
for each input parameter to pass to the long-lived process. Because
the MyApplication/EncryptDocument short-lived process
requires one input parameter of type Document,
you only have to invoke the put method once, as
shown in the following example.
//Create a Map object to store the parameter value for inDoc
Map params = new HashMap();
InputStream inFile = new FileInputStream("C:\\Adobe\Loan.pdf");
Document inDoc = new Document(inFile);
Create an InvocationRequest object by invoking
the ServiceClientFactory object’s createInvocationRequest method
and passing the following values:
A string value that
specifies the name of the long-lived process to invoke. To invoke
the MyApplication/EncryptDocument process, specify MyApplication/EncryptDocument.
A string value that represents the process operation name.
Typically the name of a short-lived process operation is invoke.
The java.util.HashMap object that contains
the parameter values that the service operation requires.
A Boolean value that specifies true, which
creates a synchronous request (this value is applicable to invoke
a short-lived process).
Send the invocation request to the service by invoking the ServiceClient object’s invoke method
and passing the InvocationRequest object. The invoke method
returns an InvocationReponse object.
Note: A long-lived process can be invoked by passing
the value false as the fourth parameter of the createInvocationRequest method.
Passing the value false creates an asynchronous request.
Retrieve the process’s return value by invoking the InvocationReponse object’s getOutputParameter method
and passing a string value that specifies the name of the output
parameter. In this situation, specify outDoc (outDoc is
the name of the output parameter for the MyApplication/EncryptDocument process).
Cast the return value to Document, as shown in
the following example.
InvocationResponse response = myServiceClient.invoke(request);
Document encryptDoc = (Document) response.getOutputParameter("outDoc");
Create a java.io.File object and ensure
that the file extension is .pdf.
Invoke the com.adobe.idp.Document object’s copyToFile method
to copy the contents of the com.adobe.idp.Document object
to the file. Ensure that you use the com.adobe.idp.Document object
that was returned by the getOutputParameter method.