2016-11-29 5 views
0

Mit WSO2 BPS 3.6.0 haben wir mehrere lange laufende asynchrone Prozesse. Ich möchte einen Prozess in mehreren anderen Prozessen wiederverwenden (z. B. Fehlerbehandlung, gängige Verfahren, ...).WSO2 BPS BPEL Wiederverwendung der asynchronen Prozesse

Das Problem ist, dass in diesem Fall mehr Prozesse den gleichen Callback-Service aussetzen:

ERROR {org.wso2.carbon.bpel.core.ode.integration.store.TenantProcessStoreImpl} - Service: {http://xxx/bps/xxx}XXCallback already used by another process. Try again with a different service name 

Wie kann ich an die Callback-Antwort von mehreren Prozessen hören? (Angenommen, ich könnte eine Korrelation bereitstellen, damit die richtige Instanz aufgerufen wird)

Ich überlege, einen etwas anderen Dienstnamen (URL-Fragment?) für jeden Elternprozess bereitzustellen (selbst den gleichen Port verfügbar zu machen) und den ReplyTo-Header zu verwenden Erzwinge die korrekte Callback-URL. Ich bin mir immer noch nicht sicher, ob es richtig ist.

Antwort

0

Process1 & Process2 ruft den CommonProcess asynchron auf.

Process1 & Process2 sollte die Operation in Callback.wsdl

CommonProcess definiert implementieren, wird der Vorgang in Callback.wsdl definiert aufrufen Process1/Process2 intim.

ProcessPackage1

  • Process1.bpel
  • Process1.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

ProcessPackage2

  • Process2.bpel
  • Process2.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

CommonProcessPackage

  • CommonProcess.bpel
  • CommonProcess.wsdl
  • Callback.wsdl

Wie wird das EPR von Process1 übergeben? & Process2 zu CommonProcess für den Rückruf?

Dies kann mit DynamicEndpoints durchgeführt werden. Das Prozess-EPR kann während des Aufrufs von Process1 oder Process2 an CommonProcess in der Nutzlastnachricht übergeben werden. Der CommonProcess überschreibt den Partnelink-EPR, der Callback.wsdl entspricht, mit dem EPR, der mit der eingehenden Nachricht übergeben wurde.

Hier ist ein Beispiel, das das Abspielen von Partnerlink EPR demonstriert.

https://github.com/apache/ode/tree/ode-1.3.x/distro/src/examples-war/DynPartner

Dies dokumentiert einige mehr auf diese Option: http://ode.apache.org/endpoint-references.html

Hinweis: Diese in Apache ODE vorgesehen ist, und könnte auf WSO2 zur Verfügung.

+0

Vielen Dank! Anscheinend muss ich die Rückrufdienste in den Elternprozessen umbenennen, aber das ist ok. Ich erwog, die Callback-URL im Adressierungsheader zu senden, aber bis jetzt konnte ich den ReplyTo-Adressierungsheader von der Nachricht nicht lesen. Irgendein Hinweis plz? Als Fallback kann ich noch die Callback-URL in der Payload übergeben (ich mag es nicht) – gusto2

+0

AFAIK, Prozess zur Verarbeitung der Kommunikation kann nicht mit WSA-Header durchgeführt werden. – Sathwik

+0

Tatsächlich übergebe ich die Callback-URLs in der Payload. Schnell und schmutzig, aber funktionierend. Meine Idee war, den lokalen Transport zu benutzen, aber ein Fehler in der WSO2BPS zwingt mich, die absolute http URL zu benutzen (aber - es funktioniert, bis ich die Ports nicht ändere). – gusto2

Verwandte Themen