1.现在做的项目是关于业务系统与U811.1的接口项目。

2.那么就需要调整通过EAI调用生成U8业务单据。

3.下面就一个通用的向U8-EAI传递XML的通用方法

4.肯定有人会问怎么还用VB调用呢?为什么不用C#等? 这是因为现在客户的老系统用的是VB6.0开发的,所以要结合老系统开发新业务再与U8业务一起动作。

5.还有朋友会有疑问全用U8不就行了,U8是标准产品又不是“神”,在企业管理上不是所有的U8业务流程都是最好的、最优的、最先进的。所以有些业务必须要客开。并用U8二开还是会被限制的。

6.下面的代码是我们在实际项目中用到的,是经过测试的。如下步骤:

第一步:需要配置一下U8服务器上的EAI接口配置环境:

U811.1接口EAI系列之一-通用访问EAI方法--统一调用EAI公共方法--VB语言-LMLPHP

1.u8服务器:是安装u8那台服务器的名或IP。

2.用户名和密码、还有EAI的数据库源帐套。

U811.1接口EAI系列之一-通用访问EAI方法--统一调用EAI公共方法--VB语言-LMLPHP

1.增加一个外部系统注册码。这个系统编码在业务系统中调用EAI时会用到。

2.这个选择的数据源要与EAI基本设置的数据源一致。也就是U8账套选择的是一个账套。

U811.1接口EAI系列之一-通用访问EAI方法--统一调用EAI公共方法--VB语言-LMLPHP

注:要确保安装的服务器上有EAI服务。因为没有这个服务的话是传不上去的。会利用U8EAI的import.asp这个服务。

第二步:直接把一面的代码放到项目当中

ls_http:参数是上面U8配置的。规则:http://u8服务器名/IIS服务的访问名/import.asp

'向EAI传递的Xml数据///////////////////////////////////////////////////////////////////////
Public Function SendToEAI(ls_xml As String, ByRef as_dsc As String) As Boolean
Dim obj As Object
Dim strRet As String ' //EAI返回的Xml数据
Dim domAll As New DOMDocument
Dim strTemp As String
Dim ls_http As String
ls_http = "http://u8/u8eai/import.asp"
SendToEAI = True Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP") '创建XMLHTTP对象
Call xmlhttp.Open("POST", ls_http, False) '使用XMLHTTP对象打开 网络连接,URL中的u8appsrv填U8应用服务器
Dim requestXml As String
requestXml = ls_xml 'domAll.xml
xmlhttp.send (requestXml) '发送Request消息
Dim responseXml As String
responseXml = xmlhttp.responseText '获取返回Response消息
domAll.loadXML responseXml
Dim ls_temp As String
Dim ls_succeed As String '成功失败标识
Dim ls_dsc As String '出错时描述 ls_succeed = Trim(domAll.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("succeed").Text)
If ls_succeed = "" Then '成功
ls_temp = Trim(domAll.selectSingleNode("ufinterface").Attributes.getNamedItem("request-roottag").Text)
If ls_temp = "voucher" Then '凭证获取凭证号
as_dsc = Trim(domAll.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("u8voucher_id").Text)
Else '其它获取U8 KEY
as_dsc = Trim(domAll.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("key").Text)
End If
Else '失败
SendToEAI = False
as_dsc = Trim(domAll.selectSingleNode("ufinterface").childNodes().Attributes.getNamedItem("dsc").Text) '出错时错误信息
End If
Set xmlhttp = Nothing '释放资源
End Function

相关XML参考文件下载

其它关于具体如何调用EAI接口请看各个业务单据具体实现。

作者:王春天 2013-10-28

地址:http://www.cnblogs.com/spring_wang/p/3393147.html

05-11 20:11