2016-07-11 23 views
0

Derzeit entwickle ich eine Ws mit OSB mit JDeveloper 11. Ich habe einen einfachen Web-Service, der einen externen SOAP-Service aufruft.Oracle Service Bus mehrere Operationen in exponierten SOAP-Service

Meine composite.xml Datei:

enter image description here

  1. Operationen meiner BPEL Soap Service

  2. Betrieb von Remote-SOAP-Service

  3. BPEL Komponente

Ich habe einige Fragen zur aktuellen Entwicklungsstrategie. Wie soll ich meiner BPEL SOAP neue Operationen hinzufügen? Ich habe eine neue Methode (getCompanyDetails()) hinzugefügt, indem ich ApusBPELProcess.xsd (neue Anfrage- und Antworttypen hinzugefügt) und ApusBPELProcess.wsdl (neue Operation, Nachricht und etc) hinzugefügt habe. Ist dies der richtige Weg, um neue Operationen hinzuzufügen?

Jetzt kann ich nur eine Methode des Remote-SOAP-Service aufrufen, indem Sie eine "Invoke" -Komponente aus BPEL-Konstrukten verwenden.

Mein BPEL Design:

enter image description here

Wie kann ich eine Methode aus meiner BPEL SoaP binden nennen (1) ein Verfahren von Remote-Service (2)? Zum Beispiel: Wenn der Client die Methode process von meinem BPEL Soap (1) aufruft, möchte ich eine Validierung der Eingabeparameter durchführen und dann getServiceCompanies von remote SOAP (2) aufrufen. Wenn also eine andere Methode von BPEL Soap (1) aufgerufen wird, möchte ich einige andere Methoden auf Remote SOAP (2) aufrufen.

Ich bin sehr dankbar, wenn mir jemand ein Diagramm mit den erforderlichen Komponenten zeigen kann. Weil ich über "Mediator" -Komponenten gelesen habe, aber ich weiß nicht, wie ich sie in meiner jetzigen Situation verwenden soll.

Vielen Dank im Voraus.

Antwort

0

Ich fand eine Lösung mit Mediator-Komponente. Vielleicht wird es jemandem helfen.

Ok, ich habe eine Mediator-Komponente zwischen meinem exponierten Service und dem Remote-Service hinzugefügt. Mediator-Komponente wird Request-Routing und Datentransformation zwischen diesen beiden Diensten durchführen. Für jede Methode in meinem exponierten Service habe ich einen BPEL-Prozess zum anderen Endpunkt von Mediator hinzugefügt (ich werde eine methodische Validierung/andere Logik in diesen BPEL-Prozessen durchführen).

Meine endgültige Zusammensetzung.xml:

  1. Methoden meiner exponierten Service
  2. Mediator
  3. Der Remote-Service, was ich

enter image description here

Innen Mediator Komponente kann ich Routing und Transformation. Für jede Methode meines exponierten Dienstes (1) habe ich eine Routing-Regel in Mediator (2).

Mediator Komponente Regeln:

4a, 4b - Methoden meines exponierten Service 4c - Taste für das Hinzufügen neue Routing-Regel 4d - Taste Transformationsregel für das Hinzufügen von (in der Regel werden Sie für ein ein Paar von Transformationsregeln haben Verfahren - Request/Response)

enter image description here

Transformation Dateien sind .xsl Dateien, die Informationen convertion zwischen zwei Endpunkten zu tun.

Meine .xsl Dateien:

enter image description here

Inhalt einer XSL-Datei:

Here I Iteration durch die Antwortdaten tue (foreach-Komponente).

enter image description here

Und schließlich Innenseite jeden BPEL Prozess habe ich eine „Invoke“ Komponente (5), die auf dem Remote-Dienst die entsprechende Methode aufruft.

enter image description here

Hoffe, es wird jemand. Viel Glück!

2

Eine Option ist, Sie können die Aktivität Pick auswählen, die mehrere onMessage-Verzweigungen für jede Operation haben kann, die von Ihrem BPEL-Service bereitgestellt wird. In ähnlicher Weise verfügt die Invoke-Aktivität über eine Option zum Auswählen des Vorgangs des Remote-SOAP-Dienstes, den Sie aufrufen müssen. So würde Ihr Verbund aussehen wie Pick-Aktivität mit einem OnMessage-Zweig mit BPELoperation1 ausgewählt, dann Logik zu Validierung und dann mit remoteoperation1 selected.And einen anderen onMessage Zweig mit BPELoperation2 ausgewählt, Logik zu Validierungen und Aufruf mit remoteoperation2 ausgewählt.

+0

Danke für Ihren Kommentar. Ja, ich stimme zu, das ist eine Option. Aber ich brauche eine Mediatorvariante. – 0bj3ct