我创建了一个BPEL流程,它执行一些业务逻辑(让我们从Department列表中获取数据)。在下一个活动中,我必须使用相同的获取列表。
然后我为部门列表创建了一个xsd,并希望在其中添加元素,这样我将把获取的列表放在数组中,然后我可以在下一个活动中使用相同的数组(Java嵌入)。
在我的第一个java Embed Activity上,我使用了以下代码来填充数组。
for(int i = 0; i< 10; i ++)
{
setVariableData( “部门”, “/ NS1:部门/ NS1:部门/ NS1 [ 'I'〕:DEPTNAME”, “值”); }
执行时我遇到异常。
<May 9, 2011 6:47:11 PM SGT> <Error> <oracle.soa.bpel.engine> <BEA-000000> <<BPELXExecLet::setVariableData>
java.lang.ClassCastException: java.lang.Integer cannot be cast to org.w3c.dom.Element
at com.collaxa.cube.engine.ext.bpel.v1.nodes.BPELXExecLet.setVariableData(BPELXExecLet.java:750)
有人请告诉我为什么我会收到错误。是否有任何替代方法来实现目标。
我正在使用Jdeveloper11.1.1.3.0和SOA 11.1.1.3.0。
以下是我的部门xsd。
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://www.example.org"
elementFormDefault="qualified">
<xsd:element name="department" type="DeptCollection">
</xsd:element>
<xsd:complexType name="DeptCollection">
<xsd:sequence >
<xsd:element name="Dept" type="Dept" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Dept">
<xsd:sequence>
<xsd:element name="DeptName" type="xsd:string" />
<xsd:element name="HOD" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
答案 0 :(得分:0)
我不相信setVariableData("department","/ns1:department/ns1:Dept/ns1['i']:DeptName","value");
中的i正在按照您的想法进行扩展。您必须首先使用i的值将第二个参数构建为字符串,然后将其传递给setVariableData。