如果在同步BPEL流程中有任何可能性將結果返回給客戶端?Oracle SOA中的同步BPEL流程的回覆組件
我將回復組件放在BPEL流程的中間,但客戶端仍然會等待整個流程完成。我想知道如何在BPEL中的回覆機制工作同步。
如果在同步BPEL流程中有任何可能性將結果返回給客戶端?Oracle SOA中的同步BPEL流程的回覆組件
我將回復組件放在BPEL流程的中間,但客戶端仍然會等待整個流程完成。我想知道如何在BPEL中的回覆機制工作同步。
您可以在任何想要將響應發送回客戶端的位置進行回覆活動。無論按照預期執行回覆活動後的活動。
您需要確保的一件事是,對於相應的接收活動,只有一個回覆活動可以在那裏。
是的,您可以放置回覆活動並在其後執行一些其他活動。
但是您必須在回覆之後放置Wait活動以強制BPEL引擎實際發送回覆消息。
此外,等待活動必須配置爲等待最少3秒或Oracle企業管理器融合中間件控制的系統MBean瀏覽器中MinBPELWait屬性的值。否則服務器將忽略它。
看到:http://docs.oracle.com/cd/E23943_01/dev.1111/e10224/bp_events.htm#SOASE516
而是等待,你可以使用一個脫水的活動。這個概念是,除非交易完成,否則bpel不會回覆,所以您基本上需要結束使用回覆活動的交易。要做到這一點,你必須提交交易,以便新的交易可以開始。
注意:使用等待會減慢您的bpel進程。
在您的composite.xml中嘗試修改您的同步bpel組件的屬性,它應該在無法添加脫水或等待的情況下工作,並且在客戶端調用時應該沒有等待。
bpel.config.transaction = required
bpel.config.oneWayDeliveryPolicy=async.persist
答覆組件不會終止進程,因爲您需要終止組件。基本上客戶應該儘快得到答覆。你能描述一下你的過程嗎? – 2012-01-31 09:31:01
但如果我使用終止組件,以下活動將不會執行,對吧?我只想先將結果回覆給客戶,然後繼續其他活動。 – jonathan 2012-01-31 12:17:07
然後不要放置終止組件...試試這個:創建一個新的同步過程,添加一個asign組件,將一些值複製到輸出變量,在**回覆組件後添加等待組件1分鐘**然後從控制檯啓動它。你會發現,一旦它發生,你會得到答覆,但如果你要檢查流量屏幕 - 它仍在運行 – 2012-01-31 12:35:40