这些是我的工作环境的不同版本:
Jdeveloper v 11.1.1.6.0
BPEL 2.0
Oracle SOA服务器
当我在BPEL转换步骤中收到元素列表时遇到问题。此转换是从接收到的SOAP元素(从上一步的输入)获取数据,其目标是生成一个新的SOAP元素,使用它作为下一步的输入,与其他Web服务进行通信。
这是SOAP元素的结构,它被接收到转换中:
<NameOfRequest version="1.0" lang="es">
<idConv>133</idConv>
<gTram>
<ns2:tipo>TIPO1</ns2:tipo>
<ns2:anyo>2018</ns2:anyo>
<ns2:numero>1</ns2:numero>
</gTram>
<ns8:solicitud>
<ns3:idSolicitud>2</ns3:idSolicitud>
</ns8:solicitud>
<ns8:solicitud>
<ns3:idSolicitud>1</ns3:idSolicitud>
</ns8:solicitud>
</NameOfRequest>
另外,以下是请求后面的XSD结构:
<xsd:complexType name="ComunicarAltaBdnsBySolicitudesRequestType_v1.0">
<xsd:complexContent>
<xsd:extension base="cm:RequestMessageBaseType_v1.0">
<xsd:sequence>
<xsd:element name="idConv" type="xsd:long" nillable="false"/>
<xsd:element name="gTram" type="cgt:CodigoGrupoTramitacionType_v1.0" nillable="false" minOccurs="1"/>
<xsd:element name="solicitud" type="cso:CodigoSolicitudType_v1.0" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="CodigoSolicitudType_v1.0">
<xsd:sequence>
<xsd:element name="idSolicitud" minOccurs="1" type="xsd:long"/>
</xsd:sequence>
</xsd:complexType>
我需要将所有名为solicitud的元素复制到另一个SOAP结构中(对于新请求,在当前转换之后)。
我在转换步骤中尝试了不同的程序(对于每个,copy,copyList,append等),但我无法复制所有重复的solicitud元素。我甚至尝试将内容复制到新变量中,然后将此变量分配给目标列表。
我实现的最积极的结果是只将一个solicitud元素复制到新的SOAP调用中...但这对我的目的来说还不够。
有关如何复制所有元素的任何想法?
提前致谢!
我使用转换步骤而不是分配步骤解决了问题。
正确的程序如下:
以这种方式工作允许使用列表复制元素,使用BPEL的Assing操作不支持这些列表。
希望能帮助到你!
我确定您使用的映射器提供了类似的解决方案,但这是我通常使用xslt将文件从一个地方映射到另一个地方的示例。
<xsl:for-each select="randomPath/ns8:solicitud">
<xsl:call-template name="exampleTemplateThatFilsYourValues"/>
</xsl:for-each>
<xsl:template name="exampleTemplateThatFilsYourValues">
<xsl:for-each select="current()/ns:8:solicitud">
<xsl:element name="targetNamespace:newElement">
<xsl:value-of select="current()"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
这个例子可以通过多种方式扩展,所有这些都可以轻松找到:http://www.xsltfunctions.com/
我个人在试验功能时非常有趣的网站。您不一定需要使用模板,您可以在第二个中使用第一个中的每个模板中的每个模板。那也行。但是随着xslts越来越大,使用可重用模板可能是一件好事。特别是你开始在多个项目中重用和导入大型xslts。
无论如何,我希望这能帮助你,祝你好运!
干杯,杰斯珀