我正在构建一个以 aitinerary
作为输入的 BPEL 流程:这是由一个无限的元素列表和一些属性组成的。
该过程的任务是检查列表中的每个元素“预订”它,为属性分配一些值,然后返回itinerary
.
这些元素中的每一个本身都由两个元素组成:预订过程的一些信息(可以正常工作)和特定对象,可能是航班或酒店。我尝试像这样定义该元素:
<xsd:complexType name="ObjectType" abstract="true">
<xsd:sequence>
<xsd:element name="objType" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FlightType">
<xsd:complexContent>
<xsd:extension base="tns:ObjectType">
<xsd:sequence>
<xsd:element name="departureCity" type="xsd:string"></xsd:element>
<xsd:element name="arrivalCity" type="xsd:string"></xsd:element>
<xsd:element name="departureTime" type="xsd:dateTime"></xsd:element>
<xsd:element name="arrivalTime" type="xsd:dateTime"></xsd:element>
<xsd:element name="airline" type="xsd:string"></xsd:element>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ItineraryReservationType">
<xsd:sequence>
<xsd:element name="object" type="tns:ObjectType"></xsd:element>
<xsd:element name="reservation" type="tns:ReservationType"></xsd:element>
</xsd:sequence>
</xsd:complexType>
然后在具有这种输入的 CompositeApplication 中使用它们
<urn:itineraryReservation>
<urn:flight>
<urn:objType>flight</urn:objType>
<urn:departureCity>Ottawa</urn:departureCity>
<urn:arrivalCity>Toronto</urn:arrivalCity>
<urn:departureTime>2007-10-26T08:36:28</urn:departureTime>
<urn:arrivalTime>2004-02-14T19:44:14</urn:arrivalTime>
<urn:airline>Aircanada</urn:airline>
</urn:flight>
<urn:reservation>
<urn:price>3</urn:price>
</urn:reservation>
</urn:itineraryReservation>
但是每当进程到达最后一个assign
并尝试复制itinerary
元素以输出它时,我都会得到一个Particle not found in the complex type. element={urn:ws.bpelschema}flight, complexType={urn:ws.bpelschema}ItineraryReservationType
.
显而易见的替代方法是随身携带两张清单,一张用于航班,一张用于酒店,但我认为情况可能会更好,并且找不到有关此主题的任何内容。
感谢您的帮助!