Я создаю процесс BPEL, который принимает itinerary
в качестве входных данных: он состоит из неограниченного списка элементов и некоторых атрибутов.
Задача этого процесса состоит в том, чтобы просмотреть каждый элемент списка, «зарезервировав» его, присвоить атрибутам какое-то значение и затем вернуть 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
.
Очевидная альтернатива - носить два списка, один для рейсов и один для отелей, но я подумал, что все может быть лучше, и не смог найти ничего по этой теме.
Спасибо за помощь!