SOA成功案例—中远集运全球EDI平台建设

SOA成功案例—中远集运全球EDI平台建设2005 年 SOA 炙手可热 众厂家都向这里聚集 但对于绝大部分的中国企业而言 SOA 仍是一种 虚幻的真实 在质疑的目光中 中远集运却坚定地向 SOA 启航 作为第一批 吃螃蟹的人 中远集装箱运输有限公司 简称中远集运 认同并采纳 SOA 的做法与中国企业的普遍观望形成了强烈反差 中远集运目前拥有 120 余艘全集装箱船 其船舶在全球超过 30 个国家和地区 超过 100 个港口停靠 销售网络和代理超过 400 家

2005年,SOA炙手可热,众厂家都向这里聚集。但对于绝大部分的中国企业而言,SOA仍是一种“虚幻的真实”。在质疑的目光中,中远集运却坚定地向SOA启航。

2000年,中远集运计算机中心的几十号人马埋头苦干,以核心业务系统IRIS-2为切入点,启动了中远集运IT建设的新征程。今天,这个团队已经增至170余人,业务系统不断扩充,相继建设了SAP、MIS、电子商务的系统或平台,业务应用部署在200多台服务器上,内部网络节点达150余个。

队伍的壮大、设备的精良,似乎都不能缓解中心领导层肩上的压力,来自决策层的压力和客户不断增加的需求,以及面对IT部门定位与工作的挑战,计算机中心研发的负责人马涛开始思考是否能转换视角,从IT架构的设计上做文章呢?

顺着这个思路,中远集运和SOA对面而视。基于现有的系统研发架构,中远集运迅速将第一突破点锁定在承载核心业务的EDI系统上,2004年10月项目正式启动。谈到从EDI入手的原因,马涛表示,EDI承载着中远集运的核心业务,是维系企业贸易活动的命脉,同时它也是最容易被业务变化所牵制的部分。尤其是在9.11事件后,美国出台“提前24小时报关”的新规定,让原有业务流程遭受重大影响,虽然这一问题在开发团队闭关1个月后得以解决,但是中远集运计算机中心却从此刻清楚地意识到:EDI的主体框架必须做出改变!

为了打造一个健全、可靠、安全、可扩展的公共EDI平台,中远集运选择了SOA。他们希望,通过公共业务流程的设置、公共功能模块的拼合,获得灵活的、丰富的EDI应用。

具体到解决方案层面,马涛认为,新的架构要能通过松耦合包容原有EDI应用,灵活地把细粒度的功能模块组合成为粗粒度的业务服务,并且敏捷地应对业务变化。而要达到这些要求,完整的业务视角是必须的。为此,他们放弃了某厂商提供的现成产品,并最终被IBM针对企业业务的SOA表述所吸引,选择与IBM SOA设计中心和IBM软件集团合作的方式,构建真正适合自身业务的SOA架构。

这样的高起点项目却没有借助IBM的BCS(业务咨询服务事业部)的力量,是马涛颇为得意的地方,也赢得了IBM的由衷赞叹。马涛将这归功于中远资讯的BPS(企业资讯发展部)对于中远集运现有业务逻辑的完整、翔实的阐述能力。BPS所构成的合作“对话层”,通过对业务流程的分析、梳理、分解,将其归纳为40~50种模块化服务,为新的EDI框架的构建确立了规范。

“我们通过3个迭代实现了高度并行的开发,以及应用持续集成的问题。”中远集运全球EDI平台项目经理陈怀海说。他介绍,3个迭代分别代表用户对一次开发产品测试、解决用户提出问题、成品验证及压力测试这三个开发阶段,而迭代式开发环境的构建则使用了WBI (WebSphere Business Integration)Server Foundation、WBI Message broker和WBI Monitor等产品。实践证明,这种用户全程参与的开发方式非常适合中远集运EDI项目需求多样性的情况。

陈怀海表示,迭代式开发让我们可以容纳需求的变更而不是拒绝变更,让我们可以持续集成最近发现的问题,这种开发效率的提升让用户颇为满意。而更让计算机中心兴奋的是,新框架的建成激发了业务流程重用的巨大潜能。他举例说,如果我们已经开发好了厦门港的装卸指示流程,而其他港口也需要进行装卸指示业务,那么我们只要在配置管理界面中增加一个港口定义,填写详细信息,再把已有的流程配置到新增港口中就行了。而如果要开发新流程,也只要修改现有流程或开发新流程,并添加到配置中。在新流程开发时,数据抽取、报文生成、报文发送等环节都可以实现开发组件的重用。

架构变更后,中远集运还拥有了可重用的报文处理框架,报文处理可以以类插件的形式实现,定义报文时只需对报文格式和核心的数据处理逻辑进行配置。

从目前项目的进展来看,新的公共EDI平台已经达到了简化基础设施、降低系统日常运行和管理成本的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201215.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:49
下一篇 2026年3月20日 上午9:50


相关推荐

  • 扣子空间+自定义MCP,我的学习搭子来了!(附邀请码)

    扣子空间+自定义MCP,我的学习搭子来了!(附邀请码)

    2026年3月12日
    2
  • VIM命令模式与输入模式切换

    VIM命令模式与输入模式切换

    2021年10月11日
    44
  • MySQL索引实现原理分析

    目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是数据库系统实现索引的首选数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的…

    2022年4月7日
    52
  • pacharm激活码2022【2022最新】

    (pacharm激活码2022)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~CJM5ZJBPHS-eyJsaWNlbnNlSWQiOi…

    2022年3月31日
    91
  • TRAS为springcloud提供高性能的RPC能力

    TRAS为springcloud提供高性能的RPC能力传统 HTTP 存在的瓶颈 SpringCloud 是一个优秀的开源微服务解决方案 通常采用 HTTP json 的 REST 接口对外提供服务 简洁易用部署方便 很多公司也基于 SpringCloud 作为基础架构去构建自身的微服务架构 但是随着业务规模和用户规模的增长 传统基于的 HTTP 的服务会逐步暴露出一些问题 首先是性能的问题 随着用户请求量的增长和业务逻辑复杂度的提升 我们

    2026年3月19日
    2
  • javascript取整数几种方式

    javascript取整数几种方式Math.round(num)//四舍五入Math.floor(num)//小于等于num的整数Math.ceil()//大于等于num的整数parseInt(num)//小于等于num的整数,与floor的区别是parseInt参数可以是string类型,如’5abc’返回5。

    2022年6月17日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号