Expand my Community achievements bar.

Invoking LiveCycle ES through WSDL via a form desinged in Designer ES

Avatar

Former Community Member
Now here is the situation exactly after tracing the process, let me describe first what does my simple process does.

Variables:

input1:int, Required, Input

output1:int, Output

it has 2 activities, the first activity is SetValue which is the start activity, it maps the value of the input into the output, simply it copies the input1 integer into the output1 integer

The second activity is Variable Logger, and it logs the values of the variables into a log.log file in the file system.

Now I tested this process using the invoke operation in the components view under the WorkflowDSC, after I invoke it, It shows me a number field to insert input1, I insert it and press ok, then it shows me output1, now I don't know why it shows me output1, but its ok, I leave it blank and press ok.

I check the log.log file on my file system and it is created and logging the same values for input1 and output1.

So apparently the process is working just fine.

Now on the other hand at the LiveCycle Designer ES, I create a blank XDP file (Interactive) then I create a Data Connection, choosing WSDL and the URL of the web service "http://localhost:8080/soap/services/InvokingLiveCycle?wsdl", and then comes the choose operation window, by default I see 5 operations for any service I create in the WorkBench which is "invoke", "invoke_Async", "invoke_Result", "invoke_Status" and "invoke_Dispose"

I choose "invoke" and there is invoke Request, invoke Response and invokeBtn, the invoke Request has the input1 Variable, and the invoke Response has the output1 Variable, and the invokeBtn is in the "execute" mode and pointing to my service and executing at the client, I insert all this in the form and test it in the Preview PDF tab.

Now this doesn't work at all, and the log file isn't created and of course the service isn't invoked in the 1st place, and this is my main problem.

It occurred to me to choose another operation and create a new Data Connection, I chose "invoke_Async", it has invoke_Async Request having the "input1" integer field same as "invoke" operation and it has also invoke_Async Response having the "invocationId" and invoke_AsyncBtn which is the same as the invokeBtn.

I insert these into the form and test it in the Preview PDF tab and I put a value in the input1 field then I press the invoke_AsyncBtn I get a response in the "invocationId" field which is "bc6b3f0fc0a85081000a998ebf903666" and surprisingly I find that the service created a log.log file and checking the value of output1 I find out that it is the same as I entered as input1, meaning the process worked and was successfully invoked, but of course I can't get to see the output1 field on my form, I don't know where is the response other than the "invocationId"

Now I really want to understand where is the problem.

Notes:

-By the way I am disabling all the services' security in the AdminUI --> Services -->Archive Administration --> Service Management.

-I tested another web service using the same technique which resides at "http://www.webservicex.net/CurrencyConvertor.asmx?wsdl" on the LiveCycle Designer Preview PDF tab and also in the Adobe Acrobat Professional, and its working both ways just fine.

P.S. I posted this to LiveCycle google group days ago, still didn't get an answer though.

Best Regards

Amr Marghany
6 Replies

Avatar

Level 10
Try to remove the security settings on the your process.



Go in adminui under Archive Administration/Services, search for your process, then under the security tab, disable security.



You have to do the same for every service used within you process (setValue and variable logger).



Let me know if that helped.



Jasmin

Avatar

Former Community Member
I am disabling the security for all the services in the adminui/archive administration/Services including "InvokingLiveCycle", "SetValue" and "VariableLogger" as I said in my Notes in my original post :)

Avatar

Level 10
"... I insert it and press ok, then it shows me output1, now I don't know why it shows me output1, but its ok, I leave it blank and press ok."



It shows you output1 because it shows you the result of invoking the process and since you have one output variable, it shows you the value of it. The fact that is blank tells me you process doesn't return the output variable properly.



Jasmin

Avatar

Former Community Member
Thanks Jasmin, but when I check the log file it shows me that the variable output1 is set correctly, and I see its value.

Plus my process is not hard at all to trace at all, it just have two variables input1 and output1 and 2 activities setvalue and log.

The first activity which is the start activity is SetValue, the properties of SetValue is General which has the name of the activity, and Route Evaluation which is empty as well and Mappings which is

Location: /process_data/@output1

Expression: /process_data/@input1

The second activity is the VariableLogger, which logs a file on the file system in C:/LiveCycleLog.

Thats it.

The main problem is that the operation "invoke" which has the "invoke

request" as "input1" and "invoke response" as "output1" isn't working.

If the invoke operation is working I would see the output1 populated

in the form, but the invoke operation isn't working at all.

This other operation "invoke_Async" is working, but it has "input1" in

the request, and "invocationId" in the response, which of course I

don't want.

the original "invoke" operation should work for any given wsdl, or

else I can't work with the wsdl because there would be no response at

all.

Avatar

Former Community Member
mail me @ mergeandfuse@gmail.com,will help you with your problem

Avatar

Former Community Member
Thanks Jasmine, I got a reply by Dave Venance suggesting I should change it to short-lived process,

it is working now after changing it to short-lived process and creating the Data Connection, I saw only 1 operation, which is "invoke" and I got to see the populated output1 in the form.

Well I thought of it a little, "What if the process is really long lived, and it is routed to an end user?"

then I was saying to myself "it makes sense, I can't get a response in the form except if the process is short-lived"

Now this small process was just for testing the whole thing, lets talk long-lived process a bit, I can invoke a long-lived process as I told you before from the "invoke_Async" operation, I will get over the fact that I don't know what is the "invoke", "invoke_Result" operations are for.

Lets just say I can invoke a long lived process from the operation "invoke_Async" and I can pass inputs to the service through the "invoke Async Request", This is going to be a bit long, I can deal with simple types in the "invoke_Async Request" like "int, string, float, etc..." but what if I want the user to submit the form as a whole to me in a variable like "document, xml with schema, xfaForm, etc..."?.

I can make a work around this, and I can use the setValue operation in the Workbench to map the simple input variables one by one to the corresponding path in the xfaForm variable like for example

Location: /process_data/exp_review/object/data/xdp/datasets/data/Expense/UserInfo/txtEmployeeName

Expression: /process_data/@txtEmployeeName

and on the other hand in the Designer I can bind each field on the form with its corresponding field from the Data Connection request.

This is the work around, but I want the user to submit a variable of type "xfaForm", like for example I want it to look like this



Location: /process_data/exp_review/object/data/xdp/datasets/data

Expression: /process_data/exp_report/object/data/xdp/datasets/data/Expense



Now when I tried to use this complex types as input variables in the Workbench, then I made a Data Connection to the exposed web service I saw many fields in the "request" that I don't understand, actually I didn't understand any of them.

For example when the input type was "document" the "request" had this fields

-"contentType", "attachementID", "binaryData", "remoteURL" and all of them are of type text fields.



Another example that I thought it might be the solution is submitting the data on the form as XML, so I created an XML variable on the Workbench called "xml" and I marked it as input and I set the XSD reference to my schema, now when I created the data connection on the Designer I found only 2 fields on the request inside a subform named "xml" which was "document" & "element" of type text fields!!



Another example, when the input type was "xfaForm" the "request" had this fields

-"data", "description", "name" and "templateURL" of type text fields and "renderOnce" of type checkBox

-it also has 3 subforms



1st subform: "dataAsDocument" containing "contentType", "attachementID", "binaryData", "remoteURL"



2nd subform: "renderServiceCall" containing 3 tables "inputParamterMappings", "outputParamateMappings" and "outputParamaterMappings"; each of the 3 tables has 1 row containing "key" and "value" of type text fields; the "renderServiceCall" table also has 2 text fields "operationName" and "serviceID"



3rd: "submitServiceCall" having the same tables and fields as "renderServiceCall"



How can I use such a variable of type xfaForm or xml, in the workbench I gave it the template url and the schema, but when I use the exposed web service in the Designer, I find out that the request has this fields I just mentioned.