we have a DSP page which gets a parameter passed to it (say, “name”) via URL parameters. The value is then available in the DSP (e.g. it can be used via %value name%).
In the DSP, we call a flow service using %invoke%. The service generates a new value (say, “age”).
The last statement in the service is “clearPipeline” with “preserve” set to just “age”. This is not a problem when the service is called from within another flow service. After such call, both “name” and “age” would be in the pipeline.
But when called in a DSP, we observe that “name” disappears, and just “age” is present.
I.e. we have %invoke my:service% . . . %endinvoke% <Here, “name” is not present anymore>
So my question is: How is the pipeline passed to a flow service when it gets invoked within a DSP? Does the original pipeline get passed (which would explain the observed behaviour)? Or should it be a pipeline copy – as it’s done in invoke’s in flow services?
What is the correct and expected behaviour? And how can we access the “name” after the service has been called?
just add name to the fields to preserve during the clearPipeline call.
We already specified “age” as the field to preserve. And it is the only field that should be returned from the service. In the caller of the service (if the service is called from within a flow service), other fields are preserved as well (because a copy of the pipeline and not the pipeline itself is passed into the service).
But it sems to be different in the DSP.
you might want to take a look at the DSP_and_Output_Template_Developers_Guide for clarification.
I have read the DSP guide but there is no direct statement about my question. The giude only describes scopes but not how the contents of scope changes and how the pipeline is passed to a service call.
From my work experience,
i generally use one DSP page for one service invocation i.e %invoke%.
So i generally create a form in first page with all the input parameters of the invocation service inside this form, and will redirect this form to new page on submit action. And in second page, i simply invoke the service using %invoke% and i will capture it’s response using %value%.
For your case, create two fields in the first page name, age and invoke the service in second page.
I guess, then you will be able to get that field at flow service level.
There is just one invoke in that page, and the parameters are passed via URL params to the page. What I try to do is to invoke a service (near the top of the page) and then display some values (using the %value% tag) which include both the original inputs of the page and the results of the invoke. But, after the invoke, the original params are no more available. Just the results of the invoke are present.