|
12月1日第四届中国企业信息化用户大会在北京世纪金源大饭店隆重召开,本次大会重点探讨“深度应用背景下的中国SOA路径”。大会从不同的视角解析了SOA在中国的发展路径,并和用户一道分享SOA在中国的成功实施经验。以下是赛捷软件资深顾问黄军先生作主题演讲。

大家好,大家熟悉赛捷的人可能不多,在这之前指导赛捷公司的人有多少?谢谢,我还是很高兴有很多人知道,我以为就一、两个。我今天目的很简单,就是告诉大家赛捷是谁,赛捷是做什么的,赛捷怎么来进行SOA应用的,我的目的非常明显。我非常咱向刚才朱先生给大家做的演讲,演讲内容我觉得非常务实,从学者的角度对SOA的实质需求以及规范标准进行了论述,之前一些概念我还接触很多。 我主要结合软件跟大家讲我们的SOA怎样实现、应用的。首先介绍一下赛捷中国,赛捷软件是全球领先的管理软件,2007年全球销售收入23.94亿美元,这是刚出来的最新数据。我们赛捷的产品在中国已经有超过八年历史了,刚才主持人介绍了我们赛捷是2006年5月份,赛捷的产品在八年前已经进入中国市场,但并不是以赛捷名义进入的。这是赛捷全球收入的增长情况,2007年全球管理软件排名赛捷第四,赛捷是一个全球供应商,在英国、欧洲大陆、北美一些工业发达国家占绝大部分,在中国在内的其他国家占的销售份额非常少,因此对第四得软件公司不是很了解。现在我们的策略是全球化,结合本地化的策略。结合本地的合作伙伴、本地的支持和服务,在国内进行全面的推广,从去年开始到今年开始,在市场上可能就能听到赛捷的声音了。 赛捷的运营模式就是产品加服务,这两个数据大家可以看出赛捷以服务为主的软件公司,服务收入占63%,这是我们的策略,以服务为主。赛捷有哪些产品呢?赛捷在国内主推的产品有这么几个一个是标准化的变相中小型企业的赛捷Sage Accpac ERP,通过它可以标准化你的流程。第二是Sage X3 ERP ,还有一款是SageCRM,它有三款,目前来说没有独立品牌的产品可以跟他媲美。根据客户的情况可以自由的选择。 目前赛捷中国总部在上海,广州北京有办事处。赛捷的SOA架构Sage X3 ERP产品,SOA面向的第一需求就是数据共享,这是我们通常所说的接口的概念,SOA的技术要求是可配制性的,在新的应用中应该通过重新组合的形式实现的。我总结两点,第一点数据接口是必然的,第二应用也应该共享,现在知道ERP的该面有很多,实际上你会发现所有软件里很多功能非常相似,而且面临很多数据源的相似,要求我们做数据接口做分析,但另外一个浪费是巨大的,很多应用不能共享,既是给你了接口你要安全我的逻辑重新进行开发。我认为SOA的架构应该有两方面共享,一个是数据共享一个是应用共享。大家可以跟我看看,Sage X3 ERP怎么来应用SOA架构的。 这是传统的IT技术架构,这是机遇SOA架构的IT技术架构,所有都面向服务进行应用。就像一个电梯,把所有业务连接起来,但只是解决第一个问题,在企业应用里有很条形码、PDA这些系统都是零零散散的,不可能一个数据库统一起来,这时间就需要Sage X3 ERP统一起来。Sage X3 ERP就是电梯的工作,把各个模块连接起来,已经连接了以上这些内容,像微软、条形码、PDA、OA、手机、POS机,BO。我们已经很BO签订了全球协议,把数据仓库功能集成到我们系统里。Sage X3 ERP首先做的第一件工作就是奠基,但远远不止如此,各种方法有各种优缺点。 大家可以看到这的图的右侧有我们面临的客户、供应商还有企业门户,都是采用不的语言开发的,比如供应链系统还有客户平台,比如售后服务也可能不用我的东西,这时候必须要重新开发一些应用,要查客户在我的企业里,也就是Sage X3 ERP系统里提供的定单,目前我已经运用怎样了。其实在Sage X3 ERP里已经有了,但不是统一的系统,要在我接口基础上重新开发,既是我把数据共享给他,他仍旧要重复开发,能不能重复开发呢?SOA的应用是要求你的配制重新组合而不是重新开发,Sage X3 ERP把所有的应用作为服务来发布,在这个图的左上角是SOA的所有模块,右上角是面对客户、企业的门户的,这些模块可能不是通过编程实现的,在Sage X3 ERP里,把所有对象都定义成服务,从最低层的数据开始。上一层比如采购、销售只是把服务组合起来,然后对外进行发布,由于本身对内是这样组合的,对外也是这样来实现的。 目前我们Sage X3 ERP在SOA架构上的应用到底是什么情况呢?可以看看SOA应用发布的功能界面,这就是Sage X3 ERP产品里Web服务发布的应用,所有程序不是编在模块里,而是独立出的一个一个子程序。做SOA架构的时候一定要注意标准化,要考虑各种业务的标准化,Sage X3 ERP设计之初就考虑这个问题,所以所有子系统都可以发布的,不仅子程序可以发布,SOA的第一个需求就是数据共享。大家看看第二个界面,同样是Web发布,发布的是产品数据这时候可以把产品作为独立的服务进行调用,这时候通过中间层可以读取我的表数据,这是基于SM的接口方式。 应用也要共享,作为客户来说希望了解他给我的定单目前生产情况,一种是让他进入你的系统来,因为ERP有这个功能,但这是非常危险的,不希望外人进入你的系统进行操作。这时候你要把你的应用发布出去,我们这里的发布可以看到,发布的是销售订单,SOH,不仅销售订单我的系统里所有应用都可以发布,大家可以在列表中看到,把所有业务逻辑都抽取出来,所有应用还有盘点、库存等等等等应用都允许你发布。这样达到我们刚才说的,第一数据共享,第二你的业务是共享的,当然这只是发布一个接口,在接口之上,仍然要做一些工作。不是说拿我的接口就能干活,我举个例子,我们目前你所看见的集成应用在我们系统里基本已经实现,比如POS机,不是开发程序直接读取自己的表,而是通过我的系统把我的销售、收款作为独立的应用发布出去,这是POS机和我交换的通道,要做一个简单的界面开发然后和我通讯,可以读我的数据写到我的系统上来。这样一来不需要编写任何逻辑。再比如说你的客户想查询进度,这时候客户不能进入你的系统就不能查到进程,但是第三方软件很难做到这点,他不清楚你的表,而且还有可能出错,这时候你可以把你的销售订单情况,作为独立的应用发布出去,只需要查询条件进行调用你的定单,然后把结果反馈给客户,你所做的工作就是交互界面,而逻辑是我独立的,按照我的规则数据我的数据,然后进行我的运作,最后把我的结果反馈给你。对客户来说不需要关心我里面怎样,只需要关心你的接口数据是否发生变化,整个计算逻辑都是我提供的,而不是你自己做的,你只需要做一个交互界面,对我们自己来说也是一样,我们在异构平台上,POS机、手机上,也是采用这种方法,而是在POS机上调查我自己的表,安全性和重复开发都带来很多麻烦。我的Web接口就可以解决这种问题。不同的就是录入界面,这就是Sage X3 ERP是对SOA的根本理解。 刚才我们通过窗口把数据、业务逻辑、应用做了发布,由于我们设计之初考虑了内容,因此带来很多产品优势。SOA架构实际上有一个要求,就是组件化要求你的系统是单个的组建。Sage X3 ERP之所以这么快在服务器上有这么好的应用,取决于原有的系统结构。原有的系统结构是什么样子呢?把所有业务逻辑进行了抽象,所有数据进行了抽象,变成一个一个独立的数据对象、定单对象、业务逻辑对象、功能对象。业务流程很少的,大部分是进行审核的内容,在Sage X3 ERP把所有应用抽象对象,就可以做到这点。大屏幕上是很简单的例子,是一个销售发票,肯定是根据销售发货形成的,或者劳务系统形成的,可能普通软件里通过哪几个对象选择的。可是为什么有这么多源头生成它?这是标题应该是开发程序窗口,定义浏览器,刚才看到的发票、出货定单已经变成记录,这个记录也可以插入和删除,增加大家看,可以选择你的对象。左厕只有定单、收获等等,假设通过合同直接生成的发票能不能选择呢?可以的,点一下选择,马上出现所有抽象对象,这时候合同也在其中,可以选择合同成为发票的推动依据。这样才能达到业务流程的可配制性。所有单据定义成了对象,可以随时定义,我举个例子,比如说我们产品销再售加上服务销售的发票,由于定义成对象,可以很快的增加单据的对象,并且嵌入到业务流程中,反过来可以发布成应用让其他人调用。你可以看到不仅是对象一栏是发票,交易这栏可以是销售发票,新增的单据同样可以作为应用来发布,这就是我前面提到的,SOA不是静态的做一些数据接口。实际上我在前面强调一个观点,SOA应该是动态共享的,所有的服务、应用都可以发布,新增的服务业可以发布,而不是针对已有的,比如PDM、设备管理,这种接口是静态的,随着交易的增加,新增交易能不能发布出去,供其他系统供用。比如门户里插一个报价查询,用户只要输入数据就可以了。 这里谈到业务代码技术,这是我们的Sage X3 ERP二次开发进行保护的技术,之所以能够有效的应用,还取决于我们Sage X3 ERP的产品对子程序的抽象。这句话怎么理解呢?我拿刚才的屏幕为例,你看的是完整的屏幕,实际上在Sage X3 ERP后台不是完整的屏幕是由若干对象构成的,而每一个子对象又进一步分解成你的业务代码,也就是说窗口实际上是由若干子对象和业务代码构成的。每一个业务代码表明相近或者相同功能的一些参数、界面,也就是说你看到一个界面可能分成四个业务代码,这样做有什么好处呢?系统升级的时候按照每一个业务代码进行升级的,假设你在窗口中加了一个字段为企业增加的、行业增加的,可以加自有的代码,在升级的时候不会覆盖你的业务代码,因为覆盖一个窗口的时候不是把真个窗口覆盖掉,而是按业务代码进行覆盖,这样确保你的窗口在升级的时候加的字段仍然可以存在。 刚才我们朱先生讲到一个问题,谈到SOA的架构一定要是流程引擎驱动的系统,Sage X3 ERP就是这样的,是全流程预警引导平台。这是有三个该方面,预警的概念比较熟悉,什么是全流程?实际上基于对象本身,由于Sage X3 ERP把每一个对作拆分成每一个详细对象,因此针对每一个对象定义我要做什么预警。可能我通常做一些定义,那么只是在有限的点上让用户选择是不是需要预警、提示,我是反过来问,你里所有动作哪些需要预警。为什么是全流程呢?在事件里进行预警是可以选择的,因此在你ERP有动作的地方就可以选择。第二每一个对象,比如定单有不同的按纽,对于销售订单来说有增加修改、删除、发货等等,针对对象不同的动作激活预警,这就是全流程的概念,能在所有业务环节的所有动作里定义要不要触发预警机制。第二预警机制是可定义的,到底在什么情况下预警,你可以自己定义。这就是全流程预警的概念。 为什么说是引导平台呢?我现在讲的产品优势都是围绕SOA架构本身依赖的环境组件的,它能够引导操作人员进入下一道流程,从而规范流程。大家看这是一个邮件,我是采购员,做了一个采购订单发给领导,领导通过邮件看到这是黄军要采购什么东西,是13号定单。领导收邮件之后点击附件,系统会自动把领导带进来,进入到Sage X3 ERP,进入的位置正好是审核动作,我不是采购订单下一步就是审核,而是用户自己定义的。大家看到这是采购订单签名的预警流程设置,这里有一个返回功能,你领导收到邮件点击附件进入系统的时候,到底干什么不是我们定的,而是可以设置的,选择的是让他进来做签字管理,我为什么能让他单独执行呢?因为我把这个东西抽取出来,可以做任意一个操作,你可以选择任何动作去执行。只有这样,才真正把控制流和信息流结合在一起。如果你用这个工作引擎,让领导很方便的进来、出去,看到定单可以看到预算多少、实际花了多少,不像以前那么麻烦,这样通过这种功能引擎可以规范企业业务流程,我们每个企业业务流程都挺好,但大部分都在柜子里,没有真正执行,其实ERP就是帮你去执行。 这里我们有一个自主的监控门户,在ERP里我们嵌入一个监控门户,把系统里任意对象抓取出来配制的门户,财务主管、生产主管、物流主管都可以配制出同的控制门户。如果企业门户不是我开发的,但你需要这个信息,不需要重新开发,只需要把应用发布给你,你提供一个录入条件,马上可以给你一个结果。这就是我们在前面流程组里描述的,在右下角的企业门户,不是说随便做一个门户,我描述的企业门户的含义是Sage X3 ERP通过Web服务器发布出去然后用你的门户进行调用,这里包括客户、供应商都是这个道理。 最后我们对现在已经有的Web服务器做一个简单的小结,在Sage X3 ERP的所有业务对象包括定单、客户、产品,都可以发布为通用标准的Web服务器,在电子商务网站上可以调用,在PDA、手记、供应商系统里可以调用,不需要把数据读过去,通过我调用就可以了。目前实际应用中主要在这些方面,在企业门户方面供应商平台、客户平台、网站交易,还有询报价处理、可承诺库存查询,还有PDA生产现场数据商船、POS机分校系统终端POS的应用。ERP生产要统计,生产计划做的再好要反馈,怎么让生产现场的数据快速反馈出来,这时候在现场用了无线PDA系统,快速把现场的结果通过条码和PDA结合起来。接口主要体现在PDM、CAPP集成,不管用Web服务器还是文本。 最后我说的是电电子秤,这有两个信息,第一个信息生产ERP要做生产工单交付,第二马上有多少公斤,然后手工输入计算机,数据会自动采集,通过Web服务器传过来,这些都是自动的,这种反映两种应用,一个是读数据一个是写数据。 以上就是我们对SOA的理解和应用,我基本上完成了我的讲解,谢谢大家。 |