2014-11-21 7 views
2

У меня есть ряд конечных точек webservices, которые предоставляют основные операции CRUD для моих объектов. Для случаев, возьмите эти методы WS: UserService --getUser WSDL (идентификатор) --getUsers --addUser (Пользователь) --removeUser (идентификатор)OpenESB CASA: Несколько операций в одном WSDL

Я хотел бы создать CA на OpenESB для обеспечения единственной конечной точки прокси для всех этих операций.

Так что я создаю новый модуль BPEL на NetBeans, а затем добавляю новый документ WSDL, который будет моим дескриптором. Затем я добавляю несколько операций в этот WSDL.

Затем я создаю BPEL для каждой операции, реализованной в моей внутренней сети WS.

Это эффективно дает мне результат WSDL вывода с несколькими операциями.

Проблема возникает при добавлении этого модуля BPEL в мой центр сертификации; При связывании порта с PartnerLink я могу сделать это только один раз для каждого порта. Вы можете увидеть его ясно на этом ScreenCap:

enter image description here

Я могу только проследить одну «стрелка» из aulaServicesPort к одному PartnerLink, в то время как я должен был бы связать его с обеих операций, показанных на скриншоте.

Этот результат в нескольких WSDL, один для каждой операции в то время как я хотел бы создать своего рода «хаб» WSDL, включая все связанные с операциями (в моем предыдущем примере, это будет CA пользователя со всеми данными операциями)

ответ

2

Я не думаю, что вы можете решить это в CA, но вы, вероятно, можете решить его, изменив процесс BPEL.

Лучший способ достичь этого в текущей структуре - сократить ваше приложение до одного процесса, только с одним myRolepartnerLink. Это означает, что вместо того, чтобы иметь несколько процессов с парами приема/ответа, вы должны построить один процесс с intial pick и несколькими параллельными ветвями. Шероховатая структура выглядит так:

<pick name="ServiceSelector" createInstance="yes"> 

    <!-- Each onMessage replaces one of your original processes --> 
    <onMessage partnerLink="aulaLink" operation="getAula" portType="aulaServicesPortType"> 
     <sequence name="Sequence"> 
       <!-- call the actual service for getAula--> 
       <reply name="ReplyToGetAula" partnerLink="aulaLink" operation="getAula" portType="aulaServicesPortType"/> 
     </sequence> 
    </onMessage> 

    <onMessage partnerLink="aulaLink" operation="getAulas" portType="aulaServicesPortType"> 
     <sequence name="Sequence"> 
       <!-- call the actual service for getAulas--> 
       <reply name="ReplyToGetAula" partnerLink="aulaLink" operation="getAulas" portType="aulaServicesPortType"/> 
     </sequence> 
    </onMessage> 

</pick> 
+0

Я не могу, потому что мой тип portType одинаковый для обоих ParnterLinkType. Можем ли мы обсудить это в чате? Я покажу вам свой BPEL. – MichelReap

+0

Да, мы можем (пока я на своем компьютере). Можете ли вы создать комнату и пригласить? Если вы используете один и тот же тип portType, я не совсем понимаю, почему вы используете несколько partnerLinkTypes/partnerLinks. – joergl

+0

Присоединяйтесь ко мне http://chat.stackoverflow.com/rooms/65821/openesb – MichelReap