2011-11-23 1 views
0

Я создаю BPEL-процесс, который принимает входной файл itinerary: это делается из неограниченного списка элементов и некоторых атрибутов.
Задача процесса состоит в том, чтобы перебирать каждый элемент списка, «резервируя» его, присваивать некоторое значение атрибутам, а затем возвращать itinerary.
Каждый из этих элементов сам по себе состоит из двух элементов: некоторая информация для процесса бронирования (которая отлично работает) и конкретного объекта, который может быть полетом или гостиницей. Я попытался определения, что элемент так:с использованием наследования в процессе BPEL в NetBeans 6.5.1

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

ответ

0

Проблема с вашим XML, насколько я могу судить по фрагментам XML Schema, заключается в том, что вместо < urn: flight> вы должны использовать < urn: object xsi: type = "urn: FlightType" >; все должно быть хорошо. Если вы не намерены использовать группы замещения ... Снова трудно сказать из фрагмента XSD.

Мой лучший совет по этим проблемам состоит в том, чтобы рекомендовать инструмент XML-образца, сгенерированный с помощью вашей проверенной схемы XML, с помощью инструмента. Он должен предоставить вам визуализацию того, как должен выглядеть действительный XML, и оттуда каждому должно быть легко закодировать его.

+0

благодарим вас и жаль, что так долго - netbeans неплохо поиграть с: -/не знаю о группах замещения, tho .. заглянет в это! – mccc

Смежные вопросы