ESB与业务流程管理:剪不断、理还乱(一)
最近几年一直在搞SOA架构下的系统整合以及ESB。无论在产品研发以及项目实施过程中,或多或少都会与流程有一定的关系。我也在一直思考许多与流程有关的问题,当然了我是作为一个流程管理产品的用户去考虑的,多是考虑如何在ESB产品研发的过程中更好的与流程管理产品进行整合,如何在整合项目中将ESB与流程管理更好的使用起来。
前几天与国内流程管理圈里的资深研究者—东方易维的CTO辛鹏(中国开放流程用户组- www.opug.org.cn以及jbpmside http://code.google.com/p/jbpmside/ 的发起人)进行了一下简单的沟通,下面是我与辛鹏在MSN中的简单对话对话,也希望更多的人能参与进来进行讨论。
|
2009-4-22 |
21:26:59 |
王鑫磊 |
辛鹏 |
………………………… |
||||
|
2009-4-22 |
21:27:59 |
王鑫磊 |
辛鹏 |
最近一直在思考一个问题:关于系统整合这种应用,从你的流程管理工具的角度,是怎么考虑的? |
||||
|
2009-4-22 |
21:30:28 |
辛鹏 |
王鑫磊 |
其实有2个层面,一个是把一些原子服务编排在一起形成一个大的服务 |
||||
|
2009-4-22 |
21:30:48 |
辛鹏 |
王鑫磊 |
其实就是BPEL干的事情 |
||||
|
2009-4-22 |
21:31:16 |
辛鹏 |
王鑫磊 |
另一个是,BPM,他还是关心一个Human的问题 |
||||
|
2009-4-22 |
21:31:52 |
辛鹏 |
王鑫磊 |
其实就是BPEL4PEOPLE和HumanTask两个规范干的事情 |
||||
|
2009-4-22 |
21:32:33 |
辛鹏 |
王鑫磊 |
对于应用集成来讲,这两个方面都是离不开的 |
||||
|
2009-4-22 |
21:34:54 |
王鑫磊 |
辛鹏 |
对于流程中涉及到的各个任务节点,有没有使用ESB进行集成,然后由流程管理器管理的必要呢? |
||||
|
2009-4-22 |
21:35:06 |
王鑫磊 |
辛鹏 |
还是直接由流程管理器管理,而不适用ESB? |
||||
|
2009-4-22 |
21:36:10 |
辛鹏 |
王鑫磊 |
我认为这个流程还是有2个层面,你得看哪个层面的流程 |
||||
|
2009-4-22 |
21:36:46 |
王鑫磊 |
辛鹏 |
不考虑将原子服务组合为组合服务这个层面 |
||||
|
2009-4-22 |
21:37:55 |
辛鹏 |
王鑫磊 |
那第二个层面,有一个场景就是,这个任务节点即需要人参与,又需要去调用异构系统的业务操作,或者需要异构系统的数据 |
||||
|
2009-4-22 |
21:38:17 |
辛鹏 |
王鑫磊 |
这时候还是有必要去调用ESB的服务的 |
||||
|
2009-4-22 |
21:38:57 |
辛鹏 |
王鑫磊 |
因为对于BPM来讲,它就不用关心它要调用的系统是什么技术体系和数据了 |
||||
|
2009-4-22 |
21:40:33 |
辛鹏 |
王鑫磊 |
其实对于这个场景还会有两种模式:一个是ESB推数据给流程节点,另一个是流程节点去ESB拿数据 |
||||
|
2009-4-22 |
21:41:16 |
王鑫磊 |
辛鹏 |
是的,对应到ESB产品中,也会有对应的两种模式:一个就是推,一个就是拉。 |
||||
|
2009-4-22 |
21:43:21 |
辛鹏 |
王鑫磊 |
嗯,如果是流程节点去ESB拿数据,要简单一些 |
||||
|
2009-4-22 |
21:43:51 |
辛鹏 |
王鑫磊 |
而ESB推数据给流程节点就要复杂一些 |
||||
|
2009-4-22 |
21:45:10 |
辛鹏 |
王鑫磊 |
而这个推,对于一些业务系统,尤其是需要异步操作的地方,还非常的有意义 |
||||
|
2009-4-22 |
21:47:32 |
王鑫磊 |
辛鹏 |
我们现在研发的产品,之所以存在推,主要也是为了更好的支持异步消息。这个异步消息是从应用的角度来看的,而不是技术的角度 |
||||
|
2009-4-22 |
21:48:22 |
辛鹏 |
王鑫磊 |
没错,当然是从应用的角度 |
||||
|
2009-4-22 |
21:49:59 |
辛鹏 |
王鑫磊 |
例如,流程的推进,需要异步的等待某一个业务系统的数据变更,然后这个数据变更后由ESB推给流程节点,然后这个节点继续向下推进 |
||||
|
2009-4-22 |
21:51:46 |
王鑫磊 |
辛鹏 |
确实是这样,这也是一个比较典型的场景 |
||||
|
2009-4-22 |
21:52:33 |
辛鹏 |
王鑫磊 |
这时候BPM就需要有异步消息的监听机制 |
||||
|
2009-4-22 |
21:53:20 |
辛鹏 |
王鑫磊 |
而我们现在的workflow或BPM基本上都是同步的事件,对于异步的事件支持的都不好,或者没有支持 |
||||
|
2009-4-22 |
21:55:26 |
王鑫磊 |
辛鹏 |
ESB也需要监听BPM异步处理消息后,是否有返回消息。也就是说 ESB和BPM都需要至少支持请求回调,轮询或者单步请求者三种最基本的模式,并且是两个产品双向得支持。 |
||||
|
2009-4-22 |
21:56:47 |
辛鹏 |
王鑫磊 |
没错,简单的异步,用callback是一种方式 |
||||
|
2009-4-22 |
21:57:28 |
辛鹏 |
王鑫磊 |
ajax的xmlhttp本质就是callback |
||||
|
2009-4-22 |
21:58:16 |
辛鹏 |
王鑫磊 |
其实我觉得你们的ESB,功能是一方面,都是要想真正有价值,有人去用,adapter非常重要 |
||||
|
2009-4-22 |
22:00:03 |
王鑫磊 |
辛鹏 |
是啊,大公司的一个商业版Adaptor,都卖几十万 |
||||
|
2009-4-22 |
22:01:04 |
辛鹏 |
王鑫磊 |
最能给客户带来巨大价值,节省工作量的就是成熟的商用adapter,把产品的架构,接口,机制做好了,然后发动各个行业的贡献者,去贡献adaptor |
||||
|
2009-4-22 |
22:01:39 |
辛鹏 |
王鑫磊 |
不过,要做到这一点很困难呀 |
||||
|
2009-4-22 |
22:02:29 |
王鑫磊 |
辛鹏 |
先一点点的对付吧,也不是一天两天能完善好的 |
||||
|
2009-4-22 |
22:03:53 |
辛鹏 |
王鑫磊 |
嗯,不过底层一定要设计好架构,一定是完全plugin式的,就像eclipse和drupal |
||||
|
2009-4-22 |
22:05:26 |
辛鹏 |
王鑫磊 |
eclipse用的osgi,而drupal是一个开源的cms,但是它是完全plugin的,现在有几千个module,需要什么就装载什么,我们现在的opug就是用的drupal |
||||
|
2009-4-22 |
22:07:35 |
王鑫磊 |
辛鹏 |
现在的内部架构,内核和各个功能模块之间是以服务的方式设计的。Osgi估计在以后的版本中可能会用到。 |
||||
|
2009-4-22 |
22:11:26 |
辛鹏 |
王鑫磊 |
我觉得对于一个容器型的产品平台,用osgi真是不错,例如websphere等,现在都移植到osgi了,但是对于非容器型的B/S应用就不是很合适了,只是目前还不合适 |
||||
|
2009-4-22 |
22:12:04 |
辛鹏 |
王鑫磊 |
而ESB产品,实际上是可以做成一个容器型的平台的 |
||||
|
2009-4-22 |
22:16:40 |
王鑫磊 |
辛鹏 |
目前开源的ESB产品,向Mule和ServiceMix,其最新版本都已经逐渐移植到OSGI平台上了 |
||||
|
2009-4-22 |
22:16:57 |
辛鹏 |
王鑫磊 |
哦,什么,我还真不知道呢 |
||||
|
2009-4-22 |
22:17:07 |
辛鹏 |
王鑫磊 |
嗯,不错 |
||||
|
2009-4-22 |
22:18:02 |
辛鹏 |
王鑫磊 |
所以它们确实是属于容器型的平台 |
||||
|
2009-4-22 |
22:19:16 |
王鑫磊 |
辛鹏 |
不过产品最后都会落到技术实现上,技术实力有时候会影响一个产品的发展 |
||||
|
2009-4-22 |
22:20:57 |
辛鹏 |
王鑫磊 |
嗯,有时候肯定会影响,实际上比较优秀的产品,技术实现都是很优秀的 |
||||
|
2009-4-22 |
22:21:57 |
王鑫磊………………… |
辛鹏 |
…………………………………………………… |
