6.EAI开发6.1.概述6.1.1.EAI产品简介U8企业应用集成(EAI)产品是U8ERP与第三方系统进行业务数据交换的平台级工具产品,是U8ERP统一的对外开放接口。EAI产品包括一整套U8ERP的标准业务数据交换接口,这些接口涵盖基础档案、财务、供应链、生产制造、客户关系管理、HR等ERP业务模块,具备统一的入口、一致的业务外观和相对完整的业务功能,能完成U8基础数据、凭证、业务单据的导入导出及增、删、改等操作(少数不支持),是U8与外部系统进行应用集成和业务整合的基本资源。在技术上,EAI数据交换接口采用符合业界标准的XML作为数据交换接口规范(协议)描述,充分利用了XML跨平台和低耦合的特性。基于XML的交换协议描述了数据交换过程中Request/Response消息数据格式及元数据规范(Schema),外部系统只要遵循此标准和规范即可以方便的与U8ERP进行Talking。6.1.2.EAI产品结构U8EAI产品结构WebInterface(ASP)EAI工具手动导入导出工具数据映射规则定义、过滤条件规则定义、任务计划配置自动任务计划执行引擎EAI数据交换框架EAIBroker(U8Distribute)--EAI分发调用代理服务规则数据映射条件过滤增量适配器XML适配EDI适配平面文件适配EAI档案单据元数据EAI业务接口注册表U8ERP数据交换业务接口基本档案接口总帐凭证接口供应链接口生产制造接口U8企业应用集成(EAI)产品结构自下而上分为三层:数据交换基本资源层、EAI数据交换框架层、EAI工具层。6.1.2.1.数据交换基本资源层即U8ERP基础数据交换接口层,这一层包含U8ERP各业务模块所提供的以业务数据实体(档案、单据、凭证等)导入导出为核心任务的基础业务接口,涵盖了U8ERP的核心业务功能点。这些业务接口通过EAI数据交换框架层对外开放并公布,为外部系统访问U8提供了最基础的功能支持。这些原始业务接口属于U8内部功能,只能通过EAI数据交换接口统一访问,外界不能直接使用。6.1.2.2.EAI数据交换框架层EAI数据交换框架层统一封装了底层的U8ERP的数据交换业务接口;对外公布了U8的所有数据交换服务;为外部系统访问U8提供了统一的访问途径和一致的调用入口(Broker/Proxy)。其中,通过一套标准的档案和单据元数据模板(Schema),提供了U8的业务数据接口外观,描述了数据交换的应用协议(交换格式、上下文),为外部系统访问U8提供了详细完整的接口规范。另外,通过EAI业务接口注册表,对外提供可用的U8ERP数据交换服务目录,为数据交换服务的查找、发现提供集中统一的资源库,为U8内部的数据交换基础服务的开发、部署、发布、注销提供全生命期管理机制。EAI数据交换框架层还包括为解决系统之间数据格式差异而提供的各种数据格式适配器(XML适配器、EDI适配器、平面文件适配器等);以及为系统之间业务数据翻译转换提供的数据映射规则(比如:基本档案的编码映射);为剪裁和适配导出数据提供的条件约束规则等机制。EAI数据交换框架还提供了运行时统一服务访问接口--EAIBroker(U8Distribute组件),该接口为外部系统访问U8提供了统一的入口和一致接口外观(Facade)。该接口提供本地调用和远程(Internet)调用两种方式,是使用EAI进行系统集成开发的核心接口。6.1.2.3.EAI工具层EAI工具层包括一组EAI配置工具和一套基于EAI数据交换框架的缺省的客户端导入导出工具。EAI配置工具主要包括U8账套连接(登录)配置、外部系统与U8账套对应关系配置,以及各种规则定义(数据映射规则定义、过滤条件规则定义),定时自动任务执行引擎的任务计划配置等。EAI导入导出工具是基于EAI数据交换框架开发的,提供给最终用户使用的轻量级工具,具备简单易用的特点。它同时也作为基于EAI数据交换框架进行二次开发的一个典型范例。此工具分为手动导入导出和自动定时任务导入导出两种,其中自动定时任务需要使用配置工具进行任务计划设定。6.2.EAI二次开发模式6.2.1直接使用EAI导入导出工具在开始菜单中选择用友ERP-U8企业应用集成(EAI)企业应用集成,登录企业应用集成主界面。在这里可以将U8数据以标准XML文件的形式导出或将标准XML数据文件导入U8系统。二次开发程序员只需编写一个工具将标准XML数据文件进行适当转换写入外部系统或取出外部系统数据写成标准XML数据文件。(参考EAI安装目录\xml\Samples\下的例子)数据流程如下:这种开发模式比较简单,优点是:充分利用EAI工具提供的功能,编程简单;缺点是:只能提供批量导入导出功能。6.2.2调用EAI数据交换框架接口包括两种方式:本地COM方式、Internet方式。这两种方式在使用之前都需要检查有没有进行EAI接口配置(开始-程序-U8ERP-企业应用集成-EAI接口配置),如果没有则需要进行配置。一般配置好后就不要动了,除非出现服务器迁移或重新安装的情况。EAI接口配置包括两项内容:EAI基本设置、外部系统注册。U8数据处理外部系统EAI组件调用接口二次开发出的软件二次开发的工作EAI接口基本设置需要指定U8服务器、EAI登录身份验证、EAI数据源。如果进行数据交换的数据包比较大,则需要点“自动设置IIS”更改IIS的大数据限制。外部系统注册在数据交换中,需要明确指定外部系统与U8的某个业务账套的对应关系,该对应关系由一个唯一的注册码标识。可以注册多个外部系统注册码。数据交换时需要在请求消息的头指定一个注册码:ufinterfacesender=注册码…6.2.2.1本地COM方式处理流程如下:这种方式可根据开发者的需要批量处理或者实时处理。接口调用非常简单,简化了编程。开发者只需将标准数据传入接口,如下:DimobjasObjectDimstrRetasstringU8数据处理外部系统EAI组件调用接口二次开发出的软件二次开发的工作SetObj=CreateObject(U8Distribute.iDistribute)strRet=obj.Process(sXml)可以根据回执内容strRet对操作结果进行相应的处理。传入参数sXml和返回结果strRet为标准XML数据串,具体格式后面会说明。6.2.2.2Internet方式开发者可以用SOAP协议向装有U8-EAI的IIS服务器发送XML数据,类似本地调用分析返回的XML回执,如下:DimhttpAsNewXMLHTTPDimsHttpServerAsStringDimstrRetasstringsHttpServer=http://+sHttpServer+/U8EAI/import.asp//指定服务器http.OpenPost,sHttpServer,True//True为异步,Fasle为同步http.sendsXml//发送数据DoWhilehttp.readyState4DoEventsLoopIfhttp.Status=200ThenstrRet=http.responseText//返回结果Else//处理出错信息EndIf6.3.导入导出数据格式标准6.3.1.档案单据模板格式单据模板指的U8中各个基础档案和业务档案用XML存储时的格式。目前放在U8外部系统IIS服务器二次开发模块SOAP协议二次开发工作U8Soft\EAI\XML\Template中。模板的下部注释中有模板中各个节点的相应说明,主要是供二次开发人员和客户了解U8单据格式使用。在U8SOFT\EAI\XML\Samples有各个模板的例子供参考。单据模版总体架构ufinterfaceroottag=''billtype=''docid=''receiver=''sender=''proc=''codeexchanged=''exportneedexch=’’exportneedexch:=''timestamp=''check=''paginate=''version='2.0'/ufinterfaceroottag:单据模版名,如:客商档案:customer客商分类:customerclass具体名称由总体确定,在数据交换中该名称要经常使用billtype:系统用可填空docid:唯一编号可空receiver:接收方可填U8sender:发送方编码即注册的外部编码(必填)注意:如果使用EAI工具,通过界面操作导入,则可空。通过EAI工具导入时,以选择的注册码为准,不以单据中的注册码为准。proc:操作码添加:Add编辑:edit删除:delete参照:Query该字段必填数据交换时,会根据操作码判断是导入操作还是导出操作(操作码为query)通过EAI工具导入时,操作可选。如果是二次开发通过调用EAI提供的服务进行数据交换,则必须填写该字段,导入操作,请填写Add/Edit/Delete,导出操作,请填写Querycodeexchanged:编码是否已转换如果已转换即已和U8基础数据编码一致填Y,将不会通过对照表的转换如果没有转换即和U8基础数据编码不一致填N,将会自动通过对照表转换之后,进行相应的操作.对于基础档案信息,如果添加成功,则系统自动将该信息加入到对照表(即内外部编码是一致的)导入的时候使用。exportneedexch:导出是否需要根据对照表进行转换,需要填”Y”,不需要填”N”导出的时候使用timestamp:时间戳标志,在导出数据时,导出此时间戳的所有以后的数据,若为空,则导出只有过滤条件的数据6.3.2.传入XML数据格式6.3.2.1数据导入数据的导入,传入的参数为根据XML模板制作的XML数据。比如,要导入部门档案,传入的sXml如下:?xmlversion=1.0?ufinterfacesender=011receiver=u8roottag=departmentdocid=54811775proc=Addcodeexchanged=nexportneedexch=Npaginate=0display=部门档案family=timestamp=0x000000000027B59Cdepartmentcode0/codeendflag0/endflagname基建中心/namerank1/rankmanager/…/departmentdepartmentcode001/codeendflag1/endflagname基建投资部/namerank2/rankmanager/prop/.../department/ufinterface导入时,单据头中的proc必须为Add/Edit/Delete之一,并不是所有单据都支持这三种操作,具体可参考本章第四节。凭证的导入,具体请参考本章第五节。XML是对大小写敏感的,在EAI标准中所有的元素名都为小写字母注意:EAI标准数据中的有些元素可以为空元素,有些则不得为空,根据具体业务不同而不同。但所规定的元素一个也不能多,一个也不能少6.3.2.2数据导出操作码为Query,可加入导出条件。格式例子(以导出部门档案为例):?xmlversion=1.0?ufinterfacesender=011receiver=u8roottag=departmentdocid=874080836proc=Querycodeexchanged=nexportneedexch=npaginate=0display=部门档案family=基础档案departmentimportfile=exportfile=code=011bincrementout=nfielddisplay=部门编码name=cDepCodeoperation==value=001logic=//department