我想 拦截事件和 2.通过BPEL运行时引擎的事件控制行为。我可以知道哪个BPEL运行时引擎支持这个吗?
对于1.例如,当调用服务名称“hello”时,我希望从服务器接收事件“invoke_hello”。
对于2.例如,当服务器并行调用3个服务,“invoke_hello1”,“invoke_hello2”和“invoke_hello3”时,我可以通过说我只允许运行“invoke_hello1”来控制行为。 / p>
我感兴趣的是,如果有任何BPEL引擎支持1个,2个或两个,其文档页面大致谈到这一点(所以我可以使用此功能)。
答案 0 :(得分:0)
免责声明:我没有亲自使用这些引擎的事件模块,所以我不能保证它们能够像他们所承诺的那样工作。
Apache ODE 支持Execution Events。这些事件会进入其数据库,您可以通过多种方式检索事件。你可以:
ODE的事件涉及BPEL中活动的生命周期。因此,您的“invoke_hello”应映射到ODE中的ActivityXXX
个事件之一。
OpenESB中包含的 Sun BPEL服务引擎有some support for alerting,但文档并不是关于如何使用它的详细信息。显然,您可以使用警报级别注释活动,并在执行活动时生成事件。
这很难,我不确定在正常执行模式下是否有任何引擎确实支持此功能。实现此目的的一种直接方式是在调试模式下执行引擎并手动控制每个步骤。所以你可以跳过“invoke_hello2”和“invoke_hello3”的继续,然后继续“invoke_hello1”。
据我所知,ODE没有调试器。另一方面,Sun BPEL服务引擎has quite a nice one。它集成在Netbeans的BPEL编辑器中,它是一个可视化编辑器(使用BPMN结构可视化BPEL活动),并允许您跳转到每个活动。
另一种选择是手动编写您自己的Web服务代码,拦截消息并根据您的选择将这些消息转发到引擎。但是,正如我理解你的问题,你宁愿喜欢一个开箱即用的引擎。
显然Oracle BPEL also has support for eventing和according to this tutorial也带有调试器,但到目前为止我还没有亲自使用过这个引擎,所以我不会在这个答案中包含它。