作为初学者,我应该如何决定是否必须将特定流程实现为 ESB 或 BPEL ?
应该使用哪些各种参数来决定是否应该使用其中任何一个来实现?
首先,ESB 只是一个概念,而 BPEL 是基于 XML 和 Web 服务的 OASIS 标准。BPEL 文件实际上是 XML。
当您需要将 2 个或更多应用程序连接在一起时,您可以使用 ESB,以避免直接的点对点集成。这提供了各种好处,例如将消息从一种格式转换为另一种格式,或引入其他消息交换模式。ESB 的通信通常是无状态的,即消息通过,被路由到它的目的地,并在那里结束。ESB 是一个非常宽泛的术语,供应商会对其进行解释和误解以推销他们的产品。
另一方面,实现 BPEL 和类似技术的业务流程管理系统关注跟踪各种活动的进度及其关系。BPEL 流程与流程图非常相似。BPEL 流程保留状态,跟踪其进度和流程,并且通常用于(尽管不一定)在也可能涉及手动人工任务的冗长事务中。
BPEL 流程的教科书示例是贷款处理应用程序。收到客户贷款请求,该过程首先在某些系统上使用 Web 服务调用执行一些自动检查,如果信用等级太低,系统会通知经理手动评估表格(通过一些工作流系统)。然后流程等待来自人工工作流系统的回调,使用某种关联方法(某个 ID)将其与正确的 BPEL 流程实例匹配(以便为正确的客户提供服务),并相应地恢复流程。
根据我的经验,ESB 始终适用于不包含等待状态的进程。当您只是浏览一个服务列表并且将在没有任何暂停状态的情况下从点 a 到点 b 时,我会使用 ESB。ESB 还可以处理更多的消息请求。
任何时候涉及到人机交互(输入值、审核提交),我倾向于在 BPM 中实现这一点。这些往往对长时间的等待有更强大的处理。
在选择 ESB 和 BPEL 时,您需要问自己几个问题。其中最重要的是:
- 我是在处理无状态流程(然后我选择 ESB)还是有状态流程(所以我选择 BPEL)
- 我是否需要处理大量短消息 - 在这种情况下我选择 ESB
- 做我需要业务流程的编排 - 然后我使用 BPEL
在这里你有一个很好的资源来回答你的问题:
http ://www.ibm.com/developerworks/websphere/library/techarticles/0803_fasbinder2/0803_fasbinder2.html