U8EAI企业应用集成培训.ppt
U8EAI企业应用集成培训,U8平台开发部李静2008年10月25日,背景介绍U8EAI产品简介U8EAI产品应用领域U8EAI产品特性U8EAI产品基本结构U8EAI数据交换接口规范U8EAI应用集成开发基本流程最佳实践,挑战 当今全球化时代,企业面临着新的挑战:社会化大生产的分工越来越细,企业的生产方式由大而全的自主式生产转变为专业化协作生产。企业面临越来越激烈的外部竞争环境带来的挑战以及内部管理和运营成本上升带来的压力。应对策略企业迫切需要与供应商、合作伙伴、客户建立更紧密的协作关系,以共同应对风险和挑战,实现互惠共赢。企业迫切需要能整合优化内部资源和业务流程,降低运营成本,提高运营效率和客户服务水平。对IT系统的要求打通“信息孤岛”,实现企业内部各系统之间互连互通、信息共享融合和业务整合,以提高企业运营效率,降低成本。,背景介绍,打通企业之间的“信息壁垒”,实现企业与供应商、伙伴、客户之间的信息交换和自动化业务协同,降低交易成本。,背景介绍,企业应用集成的关键问题IT系统的开放性和扩展能力 为应对全球化带来的挑战,企业需要有效整合内外资源,这要求企业的IT系统要具备足够的开放性和扩展能力,这种开放性和扩展能力首先体现在IT系统要具备能与外部系统进行信息交流的丰富的对外接口。标准和规范的遵循 企业IT系统之间的集成除了相互的开放性以外,最重要的一点是要遵循一致的技术标准和规范,即必须说一种“语言”,才能进行有效“交谈”。当前比较流行的XML、SOAP/WebService、SOA等技术,就是为了解决系统之间的数据通讯和信息交换问题而出现的业界公认标准。信息之间差异的弥合 企业应用集成最重要的行为是信息的交换,由于没有统一的商业标准,系统之间的信息数据在结构上往往存在差异,甚至在对相同信息的描述上也可能存在语义上的差异,比如:对于同样的原材料A,在供应商系统中记录的编码是001,而在制造商系统中记录的编码是002。企业应用集成必须要解决这样的信息差异问题。,背景介绍,U8企业应用集成(EAI)产品是U8ERP与第三方系统进行业务数据交换的平台级工具产品,是U8ERP统一的对外开放接口。EAI产品包括一整套U8ERP的标准业务数据交换接口,这些接口涵盖基础档案、财务、供应链、生产制造、客户关系管理、HR等ERP业务模块,具备统一的入口、一致的业务外观和相对完整的业务功能,能完成U8基础数据、凭证、业务单据的导入导出及增、删、改等操作(少数不支持),是U8与外部系统进行应用集成和业务整合的基本资源。为解决数据交换中系统之间数据格式和数据语义差异问题,EAI产品提供了可扩展的数据适配器和数据映射机制用来进行内外数据的翻译和转换。为方便用户的应用和体验,EAI产品还提供了能直接进行U8数据导入导出的基本用户界面工具,此工具支持手工和自动导入导出。,U8EAI产品简介,企业内部第三方业务系统与U8的整合财务整合:凭证上传典型案例:U8网络分销系统通过U8EAI接口向U8财务系统上传结算凭证。业务整合:单据协同典型案例:U8连锁零售系统通过U8EAI接口与U8销售和库存系统进行业务协同。包括:零售部门下载公司U8系统中的商品、客户档案、库存信息等;往U8系统上传每日结算的零售日报;库存不够了往U8发调拨申请单进行要货调拨等等业务。企业之间的B2B业务协作供应链协同:供应商远程接收订单。伙伴客户的采购系统通过供应商U8EAI远程接口往供应商U8销售系统提交订单。U8EAI在这两类应用领域中扮演的角色和职责主要是提供U8ERP对外的基本集成接口资源。,U8EAI产品应用领域,应用特性内容完整涵盖了U8ERP的大部分基本档案和业务单据(含凭证),是U8ERP目前最完整、规范的对外接口。功能丰富支持手动、自动、远程和本地接口等多种数据交换方式;支持数据映射、增量、过滤条件等多种数据交换规则。接口统一对外提供了一个统一的服务代理接口,由此接口负责所有数据交换请求(调用)的分发处理,使外部系统对U8的接口依赖减小到最少,降低的系统耦合性。技术特性采用XML作为数据交换格式XML提供了跨平台和低耦合特性,支持COM、.NET、JAVA三种平台。采用Request/Response作为数据交换模式数据交换的交互模式采用Request/Response方式,并通过标准的Request和Response消息来承载交互数据信息。支持本地和HTTP远程调用本地调用采用COM方式;远程调用采用XMLHTTP POST的方式。,U8EAI产品特性,U8ERP数据交换业务接口:U8ERP各业务模块提供的数据交换接口。EAI数据交换框架:为管理和调用数据交换业务接口而提供的统一的基础框架,包括数据交换业务基本配置信息以及数据交换服务代理接口和适配器。其中数据交换服务代理接口负责处理数据交换请求;适配器负责对不同格式和结构的数据信息进行适配转换;数据交换目录集中注册和管理U8产品的所有数据交换业务接口;数据交换元数据描述了数据接口格式和数据类型定义;数据映射规则描述了数据适配过程中的内外数据的对照映射关系;EAI日志用来对数据交换过程进行跟踪和记录。EAI数据交换管理器:用来配置和管理数据交换业务。主要包括以数据交换解决方案为中心的各种数据交换要素的配置管理。其中,解决方案管理主要对各种数据交换配置按照数据交换应用任务为单位进行分类集中管理;外部系统管理用来建立外部系统与U8帐套的集成关系;数据映射管理用来配置外部系统数据与U8数据的对照映射规则,以便在数据交换时进行数据适配和转换(解决数据信息差异问题);适配器管理用来管理系统预置和自定义数据适配器、定义适配规则;EAI日志管理用来查询和处理EAI日志。EAI导入导出工具:为方便用户的应用和体验,EAI提供了面向最终用户的导入导出工具。能直接进行U8数据导入导出,支持多种格式,支持条件过滤和增量,支持手工和定时自动导入导出。,U8EAI产品基本结构,U8EAI数据交换接口规范,EAI接口定义本地COM接口类库:U8Distribute.DLLProgID:U8Distribute.iDistribute方法:String Process(String RequestXml)参数:RequestXml数据交换请求消息,详见数据交换格式定义。返回值数据交换Response消息,详见数据交换格式定义。远程HTTP接口EAI远程数据交换采用XmlHttp POST的方式。接口为:POST上传:数据交换请求消息与本地调用一样,详见数据交换格式定义。Response接收:数据交换响应消息与本地调用一样,详见数据交换格式定义。EAI数据交换格式 数据交换消息总体格式EAI数据交换消息格式分为框架和内容两部分:框架部分 内容部分 框架部分包含数据交换的控制信息,其中:,U8EAI数据交换接口规范,sender:发送方,填外部系统注册码receiver:接收方,填u8即可roottag:数据类型,根据EAIXMLTemplate目录中的数据交换模板文件填写proc:数据交换的操作,分为add/edit/delete/query内容部分指消息中携带的档案或单据等业务数据。U8EAI提供了一整套完整的基本档案和单据的数据交换模版(在EAIXMLTemplate目录下),模板中定义了消息内容部分的格式和字段。Requset消息格式Request消息格式的框架部分同上所述,内容部分根据不同的操作有所不同:对于add/edit操作,Request消息的内容就是档案和单据内容,具体格式详见数据模板。对于delete/query操作,Request消息的内容包含过滤条件,条件格式如下:,U8EAI数据交换接口规范,Response消息格式Response消息是EAI接口执行Request消息之后的返回结果,不同的操作有所不同:对于query操作,返回的结果就是查询的数据,格式详见EAI数据模板。对于add/edit/delete操作,返回的结果包括单据体每一行数据的详细执行结果(由Item节点描述),如下:凭证的add操作的Response格式比较特殊:voucher_id:外部系统原始凭证号;u8voucher_id:U8生成的凭证号;succeed:是否成功,0为成功,非零为失败;accounting_period:会计期间;voucher_type:凭证类别,第一步:EAI基本配置第二步:规划并准备数据第三步:根据部署方式选择EAI接口类型第四步:调用EAI接口,发送数据第五步:处理返回结果,U8EAI应用集成开发流程,第一步:EAI基本配置1、配置EAI连接“开始”-“程序”-“用友ERP-U872”-“企业应用集成(EAI)”-“U8EAI接口设置”,U8EAI应用集成开发流程,2、外部系统注册切换到外部系统注册页签进行外部系统注册。外部系统注册的目的是为了建立外部系统与U8帐套的数据交换关系。,U8EAI应用集成开发流程,第二步:规划并准备数据1、根据项目的需求,分析应用集成业务场景,确定需要与U8进行数据交换的业务环节。2、对于项目中每一个数据交换环节,确定数据来源,并进行数据适配,将原始数据转换为符合U8EAI标准数据交换格式的数据(对于add/edit的数据必须符合U8EAI的数据模板格式)。3、对于数据交换过程中需要进行基本档案编码转换的(比如:订单中存货的编码外部系统与U8可能不一致),可以在EAI的数据交换配置管理中配置档案编码的映射关系。当然,也可以不使用EAI的数据映射功能,直接在外部数据转换为U8EAI标准格式的代码中处理。,U8EAI应用集成开发流程,第三步:根据部署方式选择EAI接口类型对于需要与U8服务器分离部署的应用集成项目,应该选择EAI的HTTP远程接口。对于可以和U8服务器部署在一起的项目,则应选择调用EAI本地COM接口。,U8EAI应用集成开发流程,第四步:调用EAI接口,发送数据本地COM调用 VB代码:Dim eaiBroker As Object Set eaiBroker=CreateObject(“U8Distribute.iDistribute”)创建EAI服务代理接口对象 Dim responseXml As String responseXml=eaiBroker.Process(requestXml)调用EAI服务代理的数据交换方法Process,传入Request交 换消息,并获取EAI返回的Response消息。.处理返回结果 Set eaiBroker=Nothing 释放EAI服务代理接口对象.Net代码:引用U8SOFTEAIU8Distribute.dll U8Distribute.iDistributeClass eaiBroker=new U8Distribute.iDistributeClass();/创建EAI服务代理接口对象 String responseXml=eaiBroker.Process(requestXml);/调用EAI服务代理的数据交换方法Process,传入Request交换消息,并获取EAI返回的Response消息。./处理返回结果 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(eaiBroker);/释放EAI服务代理接口对象,U8EAI应用集成开发流程,JAVA代码:采用JNI、JCOM、JACOB技术调用EAI服务代理COM组件,下面以JACOB为例:import.Dispatch;import.Variant;class Test public static void main(String args)Dispatch eaiBroker=new Dispatch(U8Distribute.iDistribute);/创建EAI服务代理接口对象 String responseXml=Dispatch.call(eaiBroker,Process,new Variant(requestXml);/调用EAI服务代理的数据交换方法Process,传入Request交换消息,并获取EAI返回的Response消息。./处理返回结果,U8EAI应用集成开发流程,HTTP远程调用 远程调用采用HTTP POST的方式上传Request消息。VB代码:Dim xmlhttp As Object Set xmlhttp=CreateObject(“MSXML2.XMLHTTP”)创建XMLHTTP对象 Call xmlhttp.open(“POST”,“http:/u8appsrv/u8eai/import.asp”,False)使用XMLHTTP对象打开网络连接,URL中的u8appsrv填U8应用服务器 xmlhttp.send requestXml 发送Request消息 Dim responseXml As String responseXml=xmlhttp.responseText 获取返回Response消息.处理返回结果.Net代码:引用D:U8SOFTInteropInterop.MSXML2.dll MSXML2.XMLHTTPClass xmlHttp=new MSXML2.XMLHTTPClass();xmlHttp.open(POST,http:/localhost/u8eai/import.asp,false,null,null);xmlHttp.send(dom.OuterXml);String responseXml=xmlHttp.responseText;/处理返回结果 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xmlHttp);/COM释放,U8EAI应用集成开发流程,JAVA代码:class Test public static void main(String args)URL url=new URL(http:/localhost/u8eai/import.asp);HttpURLConnection con=(HttpURLConnection)url.openConnection();con.setConnectTimeout(3000000);con.setReadTimeout(3000000);con.setDoInput(true);con.setDoOutput(true);con.setAllowUserInteraction(false);con.setUseCaches(false);con.setRequestMethod(POST);con.setRequestProperty(Content-type,application/x-www-form-urlencoded);/发送Request消息 OutputStream out=con.getOutputStream();DataOutputStream dos=new DataOutputStream(this.out);dos.write(requestXml.getBytes(UTF-8);/获取Response消息InputStream in=con.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(in);StringBuilder sb=new StringBuilder();String s=null;while(s=br.readLine()!=null)sb.append(s);String responseXml=sb.toString();,U8EAI应用集成开发流程,第五步:处理返回结果分析返回结果,处理返回结果就是处理Response消息,Response消息格式在“EAI数据交换接口规范”中已经详 细介绍了。,U8EAI应用集成开发流程,最佳实践,活用EAI接口关于二次开发中U8接口选择U8与外部系统集成最佳开发模式,活用EAI接口,EAI通用SQL查询接口 由于EAI接口返回的数据格式是固定的标准格式,很有可能返回的数据中没有用户所需要的字段;另外,对于U8中的业务数据,EAI接口也不是100%覆盖的。针对以上情况,EAI提供了一个灵活的数据查询通用接口-EAI通用SQL查询接口,该接口支持向EAI数据交换代理传递SQL语句进行查询操作,可以查询当前U8帐套的所有数据,用户不用直接访问U8帐套库。查询返回的结果为.Net中的Dataset的XML格式的数据。调用该接口只需给EAI数据交换服务代理传递特殊的Request消息即可:Request消息格式如下:其中内容部分 节点为SQL查询语句。框架部分的roottag值必须固定为“SQLEXE”,proc的值用来标识Dataset的行节点,可以是任意字符串。,活用EAI接口,Response消息格式如下:1true采购1部2true销售1部根节点的proc的值用来标识Dataset的行节点,一般为表名。,活用EAI接口,使用条件过滤查询单条数据的时候往往需要带上条件,可以采用EAI通用SQL查询,也可以采用EAI标准的条件查询格式:注意控制部分的roottag要与内容根节点呼应。,活用EAI接口,关于内外格式适配问题外部系统通过EAI与U8进行数据交换,首先必须解决数据格式匹配问题,必须将外部系统数据格式变换为U8EAI标准数据格式,EAI当前的版本还没有实现完善的适配器机制,故目前常见的做法是直接在项目工程的二次开发代码中做转换,这种方式虽然很高效,但是不灵活,不能适应规则或需求变化(一旦有变化,则需要调整代码重新编译),推荐一个比较好的做法是将数据格式转换功能做成一个通用服务,采用XSLT作为转换引擎,XSLT脚本作为转换规则,这样,应对任何格式甚至业务规则的变化只需要调整XSLT脚本即可。,关于客户化开发中U8接口选择,要在客户化开发代码中调用U8的某项功能,目前有三种选择:直接访问U8数据库:优点是最直接,能够完全自我控制;缺点是最危险,需要对产品的实现机理和数据库表结构都非常了解。使用U8开发部提供的内部接口:优点是可以复用现有接口,不需要重复劳动,而且内部使用的接口一般都比较灵活;缺点是太灵活,不易用,粒度太细,依赖和耦合度太强,需要很多上下文条件,需要总部强有力的技术支持!使用U8对外公布的产品化的标准接口U8EAI与U8API(872新增加):优点是经过严格测试,编程模型统一,业务粒度适中,功能相对独立完整,耦合度和依赖都不强。缺点是标准化后导致不灵活,另外功能覆盖度不是很全面(持续完善中!)。U8EAI与U8API接口 U8EAI与U8API接口看起来比较类似,但它们的特性有差别。U8API采用传统的编程模式,更靠近底层,业务逻辑粒度更细,而且还需要或依赖一些特定的上下文环境,比如:login、事务等;而U8EAI接口则是完全松耦合的,采用XML和请求/响应的消息模式,支持跨平台和远程访问,且业务粒度比较粗放。这些特性的差别决定了它们的应用领域不同,U8API更适合于U8内部的功能扩展和客户个性化二次开发,而U8EAI则适合外部系统与U8之间以业务数据交换为特征的应用集成开发。,U8与外部系统集成最佳开发模式,简单应用凭证上传(企业内部)业务描述:企业资金管理系统将结算凭证上传到企业U8财务系统。可能需要的步骤:1、保证科目、客户、供应商等基本档案的一致 方法一:在EAI中配置相关基本档案的数据映射。方法二:将外部系统的相关基本档案通过EAI接口同步到U8;或者,将U8的相关基本档案通过EAI接口导出,然后同步到外部系统。中间需要进行格式转换。2、将外部系统的凭证通过EAI接口传递给U8 凭证的格式必须符合U8EAI标准格式。开发模式:外部系统二次开发+U8EAI接口订单提交(B2B)业务描述:企业订货系统自动向供应商U8系统下达订单。可能需要的步骤:1、保证相关基本档案的一致 方法基本同上2、将销售订单通过EAI接口传递给U8 可能需要将对方系统的采购订单转换成U8EAI的标准销售订单格式。开发模式:外部系统二次开发+U8EAI接口,U8与外部系统集成最佳开发模式,复杂应用企业内部子系统一体化应用集成 比如,制造企业的PDM+U8ERP+MES,商业零售企业的零售POS+U8ERP,产销一体化企业的U8ERP+DRP。U8EAI在这种紧密集成的应用场景中的角色是高度专业化的,只作为U8对外开放的基本集成接口资源,不承担其它职能。开发模式:采用第三方集成平台工具产品进行综合性二次开发,U8EAI接口作为U8系统的基本集成资源。企业之间的业务协作 采用水平一体化战略的企业与供应商、合作伙伴之间存在采购供应协作以及委外协作关系。这种B2B的应用场景不像企业内部集成那样紧密而耦合度高,互相之间的协作交流更多的是基于各个系统提供的能完成它们在协作中基本职能的集成门户进行,而不是单个的接口。这样,可以将U8EAI的分散独立的接口按照协作任务的需要进一步整合包装成为完成当前协作任务的U8集成门户,这样的整合封装,可以为企业提供更加专有的、有针对性的、更加面向企业实际应用的集成接口。开发模式:在战略规划的指导下,明确各系统职责并进行集成门户封装,最后由第三方集成平台工具来完成桥接工作。,TEL:010-62435316MAIL:Thanks!,联系方式,