2016-07-11 3 views
0

Actuellement, je développe un ws avec OSB en utilisant JDeveloper 11. J'ai un service web simple, qui appelle un service SOAP externe.Oracle Service Bus opérations multiples dans le service SOAP exposé

Mon fichier composite.xml:

enter image description here

  1. Opérations de mon BPEL service Savon

  2. opérations de service distant SOAP à

  3. BPEL Component

J'ai quelques questions concernant la stratégie de développement actuelle. Comment ajouter de nouvelles opérations à mon BPEL SOAP? J'ai ajouté une nouvelle méthode (getCompanyDetails()) en éditant ApusBPELProcess.xsd (nouveaux types de requête et de réponse ajoutés) et ApusBPELProcess.wsdl (ajout d'une nouvelle opération, message et etc.). Est-ce la bonne façon d'ajouter de nouvelles opérations?

Maintenant, je ne peux appeler qu'une seule méthode du service SOAP distant en utilisant un composant "Invoke" des constructions BPEL.

Ma conception BPEL:

enter image description here

Comment puis-je appeler lier une méthode de mon BPEL Soap (1) à une méthode de service à distance (2)? Par exemple: lorsque le client appelle la méthode process à partir de mon savon BPEL (1), je souhaite effectuer une validation sur les paramètres d'entrée, puis appeler getServiceCompanies à partir de SOAP distant (2). Ainsi, lorsque le client appelle une autre méthode de BPEL Soap (1), je souhaite appeler d'autres méthodes sur SOAP distant (2).

Serai très reconnaissant si quelqu'un peut me montrer un diagramme, avec les composants requis. Parce que je lis sur les composants "Mediator", mais je ne sais pas comment les utiliser dans ma situation actuelle.

Merci d'avance.

Répondre

0

J'ai trouvé une solution avec le composant Mediator. Peut-être que ça va aider quelqu'un. Ok, j'ai ajouté un composant Mediator entre mon service exposé et le service distant. Le composant Mediator effectuera le routage des demandes et la transformation des données entre ces deux services. Pour chaque méthode de mon service exposé, j'ai ajouté un processus BPEL à l'autre point de terminaison de Mediator (je ferai une validation spécifique de la méthode/autre logique dans ces processus BPEL).

Mon composite final.xml:

  1. Méthodes de mon service exposé
  2. Mediator
  3. Le service à distance ce que j'appelle

enter image description here

intérieur composant médiateur que je fais le routage et la transformation. Pour chaque méthode de mon service exposé (1) j'ai une règle de routage dans Mediator (2).

règles de composants Mediator:

4a, 4b - Méthodes de mon service exposé 4c - bouton pour ajouter une nouvelle règle de routage 4d - bouton pour ajouter la règle de transformation (généralement vous aurez une paire de règles de transformation pour une méthode - demande/réponse)

enter image description here

fichiers de transformation sont des fichiers .xsl qui font convertion d'informations entre deux points d'extrémité.

Mes fichiers .xsl:

enter image description here

contenu d'un fichier .xsl:

Ici, je fais itération à travers les données de réponse (pour-chaque composant).

enter image description here

Et enfin à l'intérieur de chaque processus BPEL J'ai une composante « Invoque » (5), qui appelle la méthode appropriée sur le service à distance.

enter image description here

espère que ce sera quelqu'un. Bonne chance!

2

Une option est, vous pouvez utiliser l'activité de sélection qui peut avoir plusieurs branches onMessage pour chaque opération exposée par votre service BPEL. De même, l'activité d'appel a une option pour sélectionner l'opération du service SOAP distant que vous devez appeler. Ainsi, votre composite ressemblerait à Pick activity avec une branche OnMessage avec BPELoperation1 sélectionnée, puis logique pour faire la validation et invoquer ensuite avec remoteoperation1 selcted.And une autre branche onMEssage avec BPELoperation2 sélectionnée, logique pour faire des validations et invoke avec remoteoperation2 sélectionnée.

+0

Merci pour votre commentaire. Oui je suis d'accord c'est une option. Mais j'ai besoin d'une variante de médiateur. – 0bj3ct