You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ode.apache.org by Steve Strauch <st...@iaas.uni-stuttgart.de> on 2010/08/25 19:15:59 UTC
Challenge using doXslTransform with additional parameters which are messages
Dear all,
I would like to ask you for help regarding the following challenge.
I try to transform four response messages from two video and two audio
providers
containing arrays of data on available videos and audios to a request
message for another web service.
Therefore, I specified the following BPEL assign:
<bpel:assign validate="no" name="Assign values to compliant video and audio
list request message">
<bpel:copy>
<bpel:from>
bpel:doXslTransform("MappingArraysFromProvidersToAssemblyRequestMessage.xsl"
, $VideosFromVideoSportResponse.parameters,
"AudioSportRequestAudiosResponse", $AudiosFromAudioSportResponse.parameters,
"FootballGamesRequestVideosResponse",
$VideosFromFootballGamesResponse.parameters,
"SportingAudioRequestAudiosResponse",
$AudiosFromSportingAudioResponse.parameters)
</bpel:from>
<bpel:to part="parameters" variable="AssembleVideoAndAudioListRequest">
</bpel:to>
</bpel:copy>
</bpel:assign>
The challenge is, that the XSL transformation only works for the first
"default" parameter $VideosFromVideoSportResponse.parameters, but the other
additional and following parameters in the signature of the function are
ignored.
I use and have to use Apache ODE version 1.1.1, because I have to use an
extension that has been implemented by a student based on version 1.1.1, but
this extension is completely independent of the challenge I describe here.
During the execution, there is no fault or error message in the logging
output of ODE with debug on.
I attached the corresponding XSL style sheet.
For the content of the input parameters of the doXslTransform function and
the content of the output variable AssembleVideoAndAudioListRequest please
see the attachment.
I already took a look in the specification of BPEL 2.0, "asked" Google,
searched in the ode-user-mailing list archive and I took a look on the
Apache ODE test cases for the doXslTransform function, but unfortunately I
did not found any solution yet.
I'd really appreciate your help!
Thanks a lot in advance.
Best regards,
Steve
Workaround solution: Challenge using doXslTransform with additional parameters which are messages
Posted by Steve Strauch <st...@iaas.uni-stuttgart.de>.
The problem when passing additional parameter to the doXSLTransform method
is, that the default types for these parameters are per definition
result-tree fragments and not node-sets as the second parameter of the
doXSLTransform function. There is only a limited number of operations
allowed on result-tree fragments, but some parsers seem to implement
extension functions for conversion of result-tree fragments into node-sets.
To make a long story short I used the following workaround solution that
works.
I copied the arrays from all four messages into one "wrapper" help variable
and afterwards I called the doXSLTransform function with the corresponding
xsl-sheet as well as the "wrapper" help variable as parameters as you can
see in the following assign statement:
<bpel:assign validate="no" name="Assign values to compliant video and audio
list request message"> <bpel:copy>
<bpel:from>
<bpel:literal xml:space="preserve">
<impl:Wrapper xmlns:impl="http://www.compas-ict.eu/watchme"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<impl:container>
<impl:videoSportResponse></impl:videoSportResponse>
<impl:footballGamesResponse></impl:footballGamesResponse>
<impl:audioSportResponse></impl:audioSportResponse>
<impl:sportingAudioResponse></impl:sportingAudioResponse>
</impl:container>
</impl:Wrapper>
</bpel:literal>
</bpel:from>
<bpel:to part="payload" variable="WrapperVariable">
</bpel:to>
</bpel:copy>
<bpel:copy insert="last">
<bpel:from part="parameters" variable="VideosFromVideoSportResponse"
/>
<bpel:to part="payload" variable="WrapperVariable">
<bpel:query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:container/tns:videoSportResponse]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy insert="last">
<bpel:from part="parameters"
variable="VideosFromFootballGamesResponse" />
<bpel:to part="payload" variable="WrapperVariable">
<bpel:query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:container/tns:footballGamesResponse]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy insert="last">
<bpel:from part="parameters" variable="AudiosFromAudioSportResponse"
/>
<bpel:to part="payload" variable="WrapperVariable">
<bpel:query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:container/tns:audioSportResponse]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy insert="last">
<bpel:from part="parameters"
variable="AudiosFromSportingAudioResponse" />
<bpel:to part="payload" variable="WrapperVariable">
<bpel:query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
<![CDATA[tns:container/tns:sportingAudioResponse]]>
</bpel:query>
</bpel:to>
</bpel:copy>
<bpel:copy>
<bpel:from>
bpel:doXslTransform("MappingArraysFromProvidersToAssemblyRequestMessage.xsl"
, $WrapperVariable.payload)
</bpel:from>
<bpel:to part="parameters"
variable="AssembleVideoAndAudioListRequest">
</bpel:to>
</bpel:copy>
</bpel:assign>
Please find the corresponding xsl-sheet attached to this e-mail.
Greetings,
Steve
Von: Steve Strauch [mailto:steve.strauch@iaas.uni-stuttgart.de]
Gesendet: Mittwoch, 25. August 2010 19:16
An: user@ode.apache.org
Betreff: Challenge using doXslTransform with additional parameters which are
messages
Dear all,
I would like to ask you for help regarding the following challenge.
I try to transform four response messages from two video and two audio
providers
containing arrays of data on available videos and audios to a request
message for another web service.
Therefore, I specified the following BPEL assign:
<bpel:assign validate="no" name="Assign values to compliant video and audio
list request message">
<bpel:copy>
<bpel:from>
bpel:doXslTransform("MappingArraysFromProvidersToAssemblyRequestMessage.xsl"
, $VideosFromVideoSportResponse.parameters,
"AudioSportRequestAudiosResponse", $AudiosFromAudioSportResponse.parameters,
"FootballGamesRequestVideosResponse",
$VideosFromFootballGamesResponse.parameters,
"SportingAudioRequestAudiosResponse",
$AudiosFromSportingAudioResponse.parameters)
</bpel:from>
<bpel:to part="parameters" variable="AssembleVideoAndAudioListRequest">
</bpel:to>
</bpel:copy>
</bpel:assign>
The challenge is, that the XSL transformation only works for the first
"default" parameter $VideosFromVideoSportResponse.parameters, but the other
additional and following parameters in the signature of the function are
ignored.
I use and have to use Apache ODE version 1.1.1, because I have to use an
extension that has been implemented by a student based on version 1.1.1, but
this extension is completely independent of the challenge I describe here.
During the execution, there is no fault or error message in the logging
output of ODE with debug on.
I attached the corresponding XSL style sheet.
For the content of the input parameters of the doXslTransform function and
the content of the output variable AssembleVideoAndAudioListRequest please
see the attachment.
I already took a look in the specification of BPEL 2.0, "asked" Google,
searched in the ode-user-mailing list archive and I took a look on the
Apache ODE test cases for the doXslTransform function, but unfortunately I
did not found any solution yet.
I'd really appreciate your help!
Thanks a lot in advance.
Best regards,
Steve