Steps are pretty simple :
1) Create a new composite with bpel and add a transform activity to it
2) Open the activity which looks like this :
3) Click the green plus symbol to add a variable
4) Here the first variable that is added becomes the source for the transformation activity.
One can also add more than one variable. These additional variables appear as parameters in the transform file.
5) After adding input variables, add the output variable and click apply to open the xsl mapper.
6) It can be seen that the additional variable(s) appear as parameters in the mapper activity automatically.
No code change is required as such and one can directly map the values from XSL Mapper.
In the source view for the transform file ,following points can be observed :
1) For each source variable , there is a entry in the oracle-xsl-mapper section of xsl file.
2) For the first variable, this entry gives schema location and root element name
3) For all other variables, this entry also specifies name of the parameter with with the variable is referred in the XSL map.
The parameter name follows the naming convention as VARIABLE_NAME.VARIABLE_PART_NAME
4) Also, as expected, each parameter is defined just after the xsl:stylesheet tag.
5) Child nodes in the parameters are accessed using syntax : $param_name+
In the BPEL process source, normally, when we add a transform
the function used is ora:processXSLT. But in this case, a different extension function is used.
The function name is doXSLTransformForDoc and namespace is "http://schemas.oracle.com/xpath/extension" which
can be accessed using prefix 'ora'
This function (ora:doXSLTransformForDoc) has following signature :
ora:doXSLTransformForDoc('url_to_xslt',input,['paramQname',paramValue]*)
where
url_to_xslt - Specifies the XSL style sheet URL. (occurrence = 1)
input - Specifies the input variable name. (occurrence = 1)
paramQname - Specifies the parameter QName. (occurrence >= 1 )
paramValue - Specifies the value of the parameter. (occurrence >= 1 , same as paramQname )
More parameters can be added to this function after the transform is created.
This can be done by
1)Add the parameter name and value in the signature
2)Add source xsd details in the xsl top section along with param name
3)Add param defination after stylesheet element tag
Note that if there are no additional variables present at the time of creating the transform activity, then the
standard processXSLT funtion is used instead of doXSLTransformForDoc.
Source type : can be XSD or WSDL Schema details : location, root element name and namespace Parameter name : follow naming convention as mentioned above.
6 comments:
Hi,
Can you post the PoC rar file for the reference, please?
The google group does link does not work.
Ketan,
Can you please send me this POC to below email address?
mahesh_con@hotmail.com
Thanks,
Mahesh
Ketan,
I have a case where a webservice is invoked twice from bpel. The output variables (same xsd since its a repeated call) as a result of these two invoke activities need to go through a trnaformation whose result variable is the same. Will the values of first transformation get overridden or appended to the second transformation. Do i need to use transformation twice or Can i achieve it by passing these two variables as parameters to the same transformation function?
A transformation always overwrites the data in target variable. So a second transfrom would not help since it would overwrite any data that is mapped using first transformation. You would have to either use one transformation and then an assign activity or if the second transformation can be delayed then better use single transform with both variables as input.
can anybody plz send me this POC?
vipul1990verma@gmail.com
Thank you. This blog helps me a lot.
Post a Comment