最近几年一直在搞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应用就不是很合适了,只是目前还不合适 |