2011-05-09 62 views
0

我有一個異步BPEL流程,我想從我的Java EE Web應用程序調用它。我怎樣才能做到這一點?我正在使用Oracle SOA-Suite 11g PS3。如何調用異步BPEL流程?

回答

0

異步SOAP/HTTP發送者基本上與同步SOAP/HTTP客戶端相同,只是它丟棄了響應。只檢查響應的HTTP狀態,以驗證接收者能夠理解您的消息。

異步接收器基本上是一個SOAP/HTTP服務器,它監聽請求的「ReplyTo/Address」字段中發送的地址。收到消息後,它會發送一個帶有「200」狀態碼的空響應。

使用WS-Addressing SOAP標頭字段「MessageID」(請求)和「RelatesTo」(響應)將發送和接收的消息關聯起來。

如果您對「低科技」解決方案感到滿意,您可以像HTTP over XML一樣發送/接收Asynch SOAP請求。 BPEL流程「AsynchDummy」將以下HTTP請求理解爲異步請求。 AsynchDummy是與JDeveloper默認生成的異步BPEL流程:

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" env:encodingStyle=""> 
    <env:Header> 
    <ReplyTo xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing"> 
     <Address>http://localhost:3333/my/j2ee/servlet</Address> 
     <PortType xmlns:ptns="http://xmlns.oracle.com/AsynchDummy">ptns:AsynchDummyCallback</PortType> 
     <ServiceName xmlns:snns="http://xmlns.oracle.com/AsynchDummy">snns:AsynchDummyCallbackService</ServiceName> 
    </ReplyTo> 
    <MessageID xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing" ans1:rootId="610005" xmlns:ans1="http://schemas.oracle.com/bpel" ans1:parentId="160005" ans1:priority="0">ABC123</MessageID> 
    </env:Header> 
    <env:Body> 
    <AsynchDummyProcessRequest xmlns="http://xmlns.oracle.com/AsynchDummy"> 
     <input>this is the request</input> 
    </AsynchDummyProcessRequest> 
    </env:Body> 
</env:Envelope> 

不要忘了SOAPAction HTTP頭設置爲「啓動」(包括引號)。

你可以期望從BPEL過程的回調客戶端的步驟類似的消息:

<?xml version="1.0" encoding="UTF-8"?> 
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap-env:Header xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:add="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> 
    <add:RelatesTo>ABC123</add:RelatesTo> 
    <add:MessageID ans1:rootId="" ans1:parentId="" ans1:priority="0" xmlns:ans1="http://schemas.oracle.com/bpel">ABC456</add:MessageID> 
    </soap-env:Header> 
    <soap-env:Body> 
    <AsynchDummyProcessResponse xmlns="http://xmlns.oracle.com/AsynchDummy"> 
     <result>this is the result</result> 
    </AsynchDummyProcessResponse> 
    </soap-env:Body> 
</soap-env:Envelope>