何时使用 BPEL 和 ESB?
作为初学者,我应该如何决定某个特定流程是否必须作为 ESB 还是 BPEL 来实现?
应该使用哪些参数来决定是否应该使用其中之一来实现?
Being a beginner, how should I go about deciding if a particular process has to implemented as ESB or as BPEL ?
What are the various parameters that one should use for deciding if either should be used for implementation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先,ESB 只是一个概念,而 BPEL 是基于 XML 和 Web 服务的 OASIS 标准。 BPEL 文件实际上是 XML。
当您需要将 2 个或更多应用程序连接在一起时,可以使用 ESB,以避免直接点对点集成。这提供了多种好处,例如将消息从一种格式转换为另一种格式,或引入其他消息交换模式。 ESB 的通信通常是无状态的,即消息经过、路由到其目的地并在那里结束。 ESB 是一个非常广泛的术语,供应商为了推销他们的产品而对其进行解释和误解。
另一方面,实施 BPEL 和类似技术的业务流程管理系统关注跟踪各种活动的进度及其关系。 BPEL 流程与流程图非常相似。 BPEL 流程保留状态,跟踪其进度和流程,通常(尽管不一定)用于冗长的事务,这些事务也可能涉及手动人工任务。
BPEL 流程的教科书示例是贷款处理应用程序。当收到客户贷款请求时,该流程首先使用某些系统上的 Web 服务调用执行一些自动检查,如果信用评级太低,系统会通知经理手动评估表单(通过某些工作流程系统)。然后,该流程等待来自人工工作流系统的回调,使用某种关联方法(某些 ID)将其与正确的 BPEL 流程实例相匹配(以便为正确的客户提供服务),并相应地恢复该流程。
First of all ESB is just a concept while BPEL is an OASIS standard based on XML and Web Services. A BPEL file is actually XML.
You use an ESB when you need to connect 2 or more applications together, to avoid direct point-to-point integration. This offers various benefits, such as translating messages from one format to another, or introducing other message exchange patterns. An ESB's communication is typically stateless, i.e. a message goes through, gets routed to its destination(s), and it ends there. An ESB is a very broad term, interpreted and misinterpreted by vendors to market their products.
A Business Process Management system implementing BPEL and similar technologies on the other hand are concerned with keeping track of the progress of various activities and their relationship. A BPEL process is very similar to a flow chart. A BPEL process preserves state, keeps track of its progress and flow, and is typically used (although not necessarily) in long-winded transactions which could also involve manual human tasks.
A textbook example of a BPEL process is a loan processing application. A request for a customer loan comes in, and the process first performs some automated checks using web service calls on some systems and if the credit rating is too low, the system informs a manager to evaluate the form manually (via some workflow system). The process then waits for a callback from the human workflow system, uses some correlation method (some ID) to match it with the right BPEL process instance (so that the right customer is serviced), and resumes the process accordingly.
根据我的经验,ESB 始终适用于不包含等待状态的进程。当您只是浏览服务列表并且将在没有任何暂停状态的情况下从 a 点到达 b 点时,我会使用 ESB。 ESB 还可以处理更多数量的消息请求。
任何时候涉及人类交互(输入值、审核提交),我倾向于在 BPM 中实现这一点。这些往往对长时间等待有更稳健的处理。
ESB from my experience are always for processes that do not include a wait state. When you are just going through a list of services and will get to point a to point b without any pause states, I would use an ESB. ESBs also can handle higher quantities of message requests.
Any time human interaction is involved(Entering values, Review submission), I lean towards implementing this in a BPM. These tend to have more robust handling of long periods of waiting.
在 ESB 和 BPEL 之间做出选择时,您需要问自己几个问题。其中最重要的是:
- 我正在处理无状态流程(然后我选择 ESB)还是有状态流程(所以我选择 BPEL)
- 我需要处理大量的短信吗 - 在这种情况下我选择 ESB
- 我需要编排业务流程吗 - 那么我使用 BPEL
对于您的问题,这里有一个很好的资源:
http://www.ibm.com/developerworks/websphere/库/techarticles/0803_fasbinder2/0803_fasbinder2.html
There are several questions you need to ask yourself when making the choice between ESB and BPEL. Among the most important:
- am I dealing with a stateless process (then I choose ESB) or a stateful one (so I choose BPEL)
- do I need to handle a large volume of short messages - in this case I choose ESB
- do I need orchestration of business processes - then I use BPEL
Here you have a good resource for your question:
http://www.ibm.com/developerworks/websphere/library/techarticles/0803_fasbinder2/0803_fasbinder2.html