关于Oracle SOA中同步BPEL流程的回复组件

时间:2012-01-31 08:34:50

标签: oracle soa bpel

是否有可能在同步BPEL流程中将结果返回给客户端?

我将回复组件放在BPEL流程的中间,但客户端仍会等待整个过程完成。我想知道回复机制如何在BPEL中用于同步。

5 个答案:

答案 0 :(得分:2)

是的,您可以放置​​回复活动并在其后执行一些其他活动。

但是你必须在回复后放置Wait活动强制BPEL引擎实际发送回复消息。

此外,必须将Wait活动配置为在Oracle Enterprise Manager Fusion Middleware Control的系统MBean浏览器中等待最少3秒或MinBPELWait属性的值。否则服务器将忽略它。

请参阅:http://docs.oracle.com/cd/E23943_01/dev.1111/e10224/bp_events.htm#SOASE516

答案 1 :(得分:0)

您可以将回复活动放在要将响应发送回客户端的任何位置。无论回复活动后的活动是否按预期执行。

您需要确保的一件事是,相应的接收活动只能有一个回复活动。

答案 2 :(得分:0)

您可以使用脱水活动,而不是等待。这个概念是,除非交易完成,否则bpel不会回复,因此您基本上需要结束使用回复活动的交易。为此,您必须提交事务,以便可以开始新事务。

注意:使用等待会减慢你的bpel过程。

答案 3 :(得分:0)

在您的composite.xml中尝试修改同步bpel组件的以下属性,它应该不用添加脱水或等待,并且在客户呼叫时不应该等待。

bpel.config.transaction = required
bpel.config.oneWayDeliveryPolicy=async.persist

答案 4 :(得分:0)

您最好的选择是在您的回复后添加一个脱水活动,这将迫使BPEL完成交易,然后开始新的交易。