我是BPEL寫作中的新手。我已經實現了以下簡單的過程:BPEL流程在第二次接收時停止
receive1 | | invoke1 | | receive2 | | invoke2
問題是,過程正確運行到「receive2」,但是當我通過soapUI調用與「receive2」相關的操作時,什麼也沒有發生。我已閱讀關於BPEL的其他文章,但沒有與此問題匹配。低於真正的活動(我省略了Assign的活動)。
<bpel:receive name="receiveInput" partnerLink="client"
portType="tns:HealthMobility"
operation="initiate" variable="input"
createInstance="yes"/>
<bpel:invoke name="getTreatmentOptions"
partnerLink="treatmentProviderPL" operation="getTreatmentOptions"
inputVariable="getTreatmentOptionsReq" outputVariable="getTreatmentOptionsResp">
</bpel:invoke>
<bpel:receive name="bookMobility" partnerLink="client" operation="bookMobility"
variable="bookMobilityReq" portType="tns:HealthMobility"/>
<bpel:invoke name="getTripOptions" partnerLink="mobilityMultiProvidersPL"
operation="getTripOptions" inputVariable="getTripOptionsReq"
outputVariable="getTripOptionsResp"></bpel:invoke>
我試圖簡單地通過刪除接收並靜態初始化getTriOptions調用所需的輸入變量來進行調試。在這種情況下,所有的工作都很好,所以它意味着,必要的是,如果我通過SOAPUI調用bookMobility,這個過程會繼續等待接收。我的問題是:爲什麼?我錯過了什麼?
謝謝
感謝vanto爲您的答案, 我已經發現它是這樣的東西。 無論如何,我對BPEL規範中的另一句話感到有些困惑:「業務流程實例不能同時爲同一個partnerLink,portType,operation和correlationSet啓用兩個或多個活動」。 現在我的進程的第二次接收使用第一個和同一個合作伙伴角色和端口類型相同的partnerLink,但自然是一個不同的操作。老實說,在我看來,最好的辦法就是繼續。無論如何,我會嘗試設置correletion。 再次感謝 –
user716658
2011-04-20 12:32:34
partnerLink,portType,操作和關聯集合必須唯一的限制也具有相同的原因。實際上,它不是關於相關集定義,而是關於它的實例。限制的目標是確保始終只有一個實例與某個相關令牌關聯。因此,讓我們考慮一個簡單的過程,首先接收登錄消息(用戶名,密碼),在用戶數據庫中執行查找並創建會話。會話ID被髮送回客戶端,然後接收或選擇正在等待例如訂單(續下一條評論)。 – vanto 2011-04-20 15:45:10
@vanto(續下一評論)??? – 2016-07-22 13:52:12