我所研究的ESB和BPM工具都采用了一些输入,调用了多个步骤来完成任务.我所看到的不同之处在于,在ESB中,一切都是自动化的 - 过程是自动触发的,涉及大量外部调用/数据被转换并发送到适当的系统以供消费.在BPM系统的情况下,该过程可以手动或自动启动,它涉及一系列决策步骤,其中一些涉及手动决策步骤.一旦完成这些步骤,任务就被标记为完成.是否有可能解释BPM和ESB之间的明显区别?
我认为你可以通过ESB和一些支持手动调用的Web UI实现BPM可以实现的任何事情.但如果您只是从技术角度严格看待,那就是这样.在更成熟的SOA中,涉及许多不同的方和角色,ESB和BPM都有其独特的地方.
您正在寻找的区别更"模糊",它是关于这些工具的焦点,它们的预期最终用户以及它们构成的逻辑类型.这是我谦虚地尝试解释ESB和BPM之间的区别:
ESB更侧重于实现互操作性,关注点分离和技术细节的抽象.它具有更多的基础架构角色,它还关注监控,可扩展性性能,可用性,状态延迟.在ESB中,您的目标是通过抽象所有技术细节并公开可重用功能来启用联合可互操作层的创建.
BPM更注重业务,在完美的世界场景中,它由业务人员和业务分析师自己管理,可以在不了解任何技术细节的情况下修改流程.BPMN语言完全与工作流程有关,旨在实现业务友好.在BPM中,您的目标是通过使用这些构建块来实现实际业务流程.
ESB服务将由架构师和托管人管理(仍然根据业务分析师的要求).
理想情况下,BPM工作流程将由业务人员,业务分析师等进行管理和修改.
在BPM中,组合(工作流程)包括面向业务的任务(例如,检查客户忠诚度级别,如果用户X批准并且他的级别为金牌,则给予折扣).
在ESB中,组合通常由更多技术服务组成(例如,从数据库中检索它,与来自该组件的服务相结合,使用xslt进行转换).可以像BPM那样实现整个工作流程的编排任务,这完全是以业务为中心的,没有任何可重用性,但是您没有方便的工具和可视化来轻松地委派管理这种商业逻辑对商业人士而言.
综上所述,理想情况下,如果您有一个成熟的SOA,您将在一个或多个ESB和相应的服务库存之上有一个BPM层,它具有:
底部的实体和公用事业 服务(在ESB中实施)
任务,在某些情况下组成所述实体和公用事业服务的Orchestrated Task服务(在ESB中实现)
在ESB之上的BPM层中使用和重用所有这些服务的工作流.
我希望这能让你初步了解这些差异.如果您需要更多信息,请随时询问.