U8开发之EAI接口Word格式.docx
- 文档编号:16498309
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:23
- 大小:282.34KB
U8开发之EAI接口Word格式.docx
《U8开发之EAI接口Word格式.docx》由会员分享,可在线阅读,更多相关《U8开发之EAI接口Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
.NET调用代码
3)JAVA代码
采用JNI、JCOM、JACOB技术调用EAI服务代理COM组件,下面以JACOB为例:
import.Dispatch;
import.Variant;
classTest
{
publicstaticvoidmain(String[]args)
//创建EAI服务代理接口对象
DispatcheaiBroker=newDispatch("
U8Distribute.iDistribute"
);
//调用EAI服务代理的数据交换方法Process,传入Request交换消息,并获取EAI
//返回的Response消息。
StringresponseXml=
Dispatch.call(eaiBroker,"
Process"
newVariant(requestXml));
......//处理返回结果
}
}
远程HTTP接口
EAI远程数据交换采用HttpPOST的方式。
访问网址:
http:
//U8应用服务器IP或机器名/U8EAI/import.asp。
POST上传的数据交换请求消息与本地调用一样。
开发者可以用SOAP协议向装有U8-EAI的IIS服务器发送XML数据,类似本地调用分析返回的XML回执,如下:
DimxmlhttpAsObject
Setxmlhttp=CreateObject(“MSXML2.XMLHTTP”)‘创建XMLHTTP对象
Callxmlhttp.open(“POST”,“http:
//u8appsrv/u8eai/import.asp”,False)‘使用XMLHTTP对象打开网络连接
xmlhttp.sendrequestXml‘发送Request消息
responseXml=xmlhttp.responseText‘获取返回Response消息
…..’处理返回结果
注意:
URL:
//u8appsrv/u8eai/import.asp中的u8appsrv应填U8应用服务器IP或机器名。
2).NET调用代码
3)
//引用U8SOFT\Interop\Interop.MSXML2.dll
MSXML2.XMLHTTPClassxmlHttp=newMSXML2.XMLHTTPClass();
//创建XMLHTTP对象
xmlHttp.open(“POST”,“http:
//u8appsrv/u8eai/import.asp”,false,null,null);
//打开网络连接
xmlHttp.send(dom.OuterXml);
//发送Request消息
StringresponseXml=xmlHttp.responseText;
//获取返回Response消息
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xmlHttp);
//COM释放
JAVA调用代码
classTest
URLurl=newURL(“http:
//u8appsrv/u8eai/import.asp”);
HttpURLConnectioncon=(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消息
OutputStreamout=con.getOutputStream();
DataOutputStreamdos=newDataOutputStream(this.out);
dos.write(requestXml.getBytes("
UTF-8"
));
//获取Response消息
InputStreamin=con.getInputStream();
BufferedReaderbr=newBufferedReader(newInputStreamReader(in));
StringBuildersb=newStringBuilder();
Strings=null;
while((s=br.readLine())!
=null){
sb.append(s);
StringresponseXml=sb.toString();
调用U8API接口
满足现有U8EAI做不到的业务单据操作,如销售报价单增删改,以及业务操作,如审核、弃审,将现有U8API的功能整合进U8EAI,将两者糅合在一起,形成功能互补,为企业应用集成和二次开发提供更强大的支持。
通过参照U8API请求XML模板,填入相应的API参数值,即可实现通过U8EAI统一接口调用U8API服务。
详细内容请参见文档《U8API和U8EAI整合》。
1、请求XML格式
<
?
xmlversion="
1.0"
encoding="
utf-8"
?
>
ufinterfaceroottag="
u8api"
receiver="
u8"
sender="
001"
proc="
add"
u8apiservice>
<
apiurlvalue="
U8API/PurchaseOrder/VoucherSave"
/>
apiParams>
paramname="
VoucherState"
value="
2"
datatype="
int"
CurDom"
IXMLDOMDocument2"
UserMode"
0"
/apiParams>
bo>
headtype="
bo"
/>
bodytype="
bo“/>
/bo>
returnParams>
curID"
/returnParams>
/u8apiservice>
/ufinterface>
其中,proc填入操作类型,添加:
add;
编辑:
edit;
删除:
delete;
查询:
query;
审核:
verify;
弃审:
unverify。
2、返回XML格式
以上为查询返回XML格式,新增成功后,还会返回新增单据或档案的ID。
3、返回错误信息
按传入顺序返回批量操作的执行结果,调用一次API的过程中若出现错误,不影响其他调用的执行。
通用SQL查询接口
由于EAI接口返回的数据格式是固定的标准格式,很有可能返回的数据中没有用户所需要的字段;
另外,对于U8中的业务数据,EAI接口也不是100%覆盖的。
针对以上情况,EAI提供了一个灵活的数据查询通用接口--EAI通用SQL查询接口,该接口支持向EAI数据交换代理传递SQL语句进行查询操作,可以查询当前U8帐套的所有数据,用户不用直接访问U8帐套库。
查询返回的结果为.NET中的Dataset的XML格式的数据。
调用该接口只需给EAI数据交换服务代理传递特殊的Request消息即可。
1、请求Request消息格式
ufinterfacesender="
u8“
roottag="
SQLEXE”proc=“department“
codeexchanged=“n”>
sqlvalue=“select*frominventory”>
其中,框架部分的roottag值必须固定为“SQLEXE”,proc的值用来标识Dataset的行节点,可以是任意字符串;
内容部分<
sqlvalue=“sql语句”/>
节点为SQL查询语句。
2、应答Response消息格式
receiver="
roottag="
SQLEXE"
department"
request-roottag="
NewDataSet>
<
department>
<
cDepCode>
1<
/cDepCode>
bDepEnd>
true<
/bDepEnd>
cDepName>
采购1部<
/cDepName>
/department>
2<
销售1部<
/NewDataSet>
其中,根节点的proc的值用来标识Dataset的行节点,一般为表名。
数据交换格式
U8EAI提供了一整套完整的基本档案和单据的数据交换模版(在EAI\XML\Template目录下),模板中定义了消息内容部分的格式和字段。
请求消息格式
EAI数据交换请求消息格式分为框架和内容两部分:
ufinterfacesender=“001”receiver=“u8”roottag=“department”proc=“Add”dynamicdate=“12/25/2010”>
—框架部分
department>
…<
/department>
—内容部分
框架部分包含数据交换的控制信息,其中主要包括:
1)billtype系统用,可填空;
2)docid:
唯一编号,可空;
3)sender:
发送方,填外部系统注册码(必填);
4)receiver:
接收方,可填U8;
5)roottag:
档案或单据模版名,填档案或单据的唯一标识,如:
客商档案:
customer,客商分类:
customerclass,具体名称由总体确定,在数据交换中该名称要经常使用;
6)proc:
操作类型,分为“增删改查”,对应填Add/Delete/Edit/Query(必填),该字段导入操作,请填写Add/Delete/Edit,导出操作,请填写Query;
7)dynamicdate:
业务账套登录日期,如果不填,则取U8应用服务器所在操作系统的当前日期,否则取指定的登录日期进行业务账套登录;
8)codeexchanged:
编码是否已转换,该字段在导入的时候使用,如果已转换即已和U8基础数据编码一致填Y,将不会通过对照表的转换,如果没有转换即和U8基础数据编码不一致填N,将会自动通过对照表转换之后,进行相应的操作;
9)exportneedexch:
导出是否需要根据对照表进行转换,需要填“Y”,不需要填“N”,导出的时候使用;
10)timestamp:
时间戳标志,在导出数据时,导出此时间戳的所有以后的数据,若为空,则导出只有过滤条件的数据。
内容部分:
指数据请求或响应消息中携带的档案或单据等业务数据,如:
code>
/code>
endflag>
0<
/endflag>
name>
综合处<
/name>
rank>
/rank>
manager
prop>
管理兼技术<
/prop>
单据模板指的U8中各个基础档案和业务档案用XML存储时的格式。
目前放在U8Soft\EAI\XML\Template中。
模板的下部注释中有模板中各个节点的相应说明,主要是供二次开发人员和客户了解U8单据格式使用。
在U8SOFT\EAI\XML\Samples有各个模板的详细例子供参考。
回执消息格式
从U8导出数据成功的回执就是业务数据。
导入情况的回执如下所示:
ufinterface
roottag=“return”
docid=“823482692”
proc=“add”>
item
key="
succeed="
dsc="
"
u8key='
001'
002"
002'
返回字段描述:
1)key:
单据表体行数据的编号,比如:
销售订单表体的存货编码;
2)succeed:
成功标识:
0:
成功;
非0:
失败;
3)dsc:
失败的描述信息;
4)docid:
消息号;
5)proc:
操作码;
6)u8key:
成功后U8系统对应的关键字。
凭证的add操作的Response格式比较特殊,返回格式如下:
roottag="
voucheraddreturn"
docid="
proc="
accounting_period="
10"
voucher_type="
记"
voucher_id="
888"
u8voucher_id="
1138"
entry_id="
凭证已成功保存"
u8accounting_period="
/item>
1)acc_period:
会计期间,0为期初往来明细帐,21为期初待核银行帐,20为银行帐科目调整前余额,1-12为凭证及明细帐
2)vouch_type:
凭证类别字
3)vouch_id:
凭证号(由系统分配凭证号,期初时可为空)
4)row_id:
行号(由系统赋值,期初时为1)
5)u8vouch_id:
U8凭证号
6)u8acc_period:
U8凭证会计期间
7)succeed:
EAI接口设置
在使用EAI之前的第一步必须进行一个接口配置。
检查有没有进行EAI接口配置(“开始”->
“程序”->
“用友U8V*”->
“企业应用集成(EAI)”->
“EAI接口设置”),如果没有则需要进行配置。
一般配置好后就不要动了,除非出现服务器迁移或重新安装的情况。
基本设置
需要指定U8服务器、EAI登录身份验证、EAI数据源。
如果进行数据交换的数据包比较大,则需要点“自动设置IIS”更改IIS的大数据限制。
建议:
EAI的登录身份验证和U8业务帐套的身份验证分开使用。
在此将EAI登录用户配置成一个独立用户,不要与其他人使用的账号相同,如demo,并赋予该用户适当的权限以进行EAI数据交换,如帐套主管,配置完后重启IIS。
外部系统注册
在“EAI接口设置”中切换到外部系统注册页签进行外部系统注册。
可以注册多个外部系统注册码。
在数据交换中,需要明确指定外部系统与U8的某个业务账套的对应关系,该对应关系由一个唯一的注册码标识。
数据交换时需要在请求消息的头指定一个注册码:
注册码"
…>
。
数据导入
基础导入
EAI的数据导入,传入的参数为根据XML模板制作的XML数据。
比如,要导入部门档案,传入的sXml如下:
011"
docid="
54811775"
Add"
codeexchanged="
n"
exportneedexch="
N"
paginate="
display="
部门档案"
family="
timestamp="
0x000000000027B59C"
基建中心<
manager/>
…
001<
基建投资部<
prop/>
...
导入时,单据头中的proc必须为Add/Edit/Delete之一,并不是所有单据都支持这三种操作。
凭证导入
由于凭证导入的特殊性,凭证导入时单据头中增加了renewproofno、import、newadd三个属性,含义如下:
proc=”add”//追加
proc=”edit”//覆盖
renewproofno=”y”//重新编号
renewproofno=”n”//不重新编号
import=”y”//导入式
newadd=”y”//新增式
并且,导入时只有下面六种组合
1.序号
1.1.操作
1.2.单据头
1.3.说明
2.1
3.重新编号+追加+新增式
4.Proc=”add”renewproofno=”y”
5.newadd=”y”
6.import=”n”
7.追加生成的凭证记录为生成态。
即刚编写完的凭证状态。
8.凭证编号重新排序
9.2
10.不重新编号+追加+新增式
11.Proc=”add”renewproofno=”n”
12.newadd=”y”
13.import=”n”
14.追加生成的凭证记录为生成态。
15.凭证编号不重新排序
16.3
17.重新编号+追加+导入式
18.Proc=”add”renewproofno=”y”
19.newadd=”n”
20.import=”y”
21.保持除记账、预算审批标志外的所有导入前输出状态。
22.凭证号重新编号
23.4
24.不重新编号+追加+导入式
25.Proc=”add”renewproofno=”n”
26.newadd=”n”
27.import=”y”
28.保持除记账、预算审批标志外的所有导入前输出状态。
29.凭证号不重新编号
30.5
31.不重新编号+覆盖+新增式
32.Proc=”edit”renewproofno=”n”
33.newadd=”y”
34.import=”n”
35.覆盖生成的凭证记录为生成态。
36.凭证号不重新编号
37.6
38.不重新编号+覆盖+导入式
39.Proc=”edit”renewproofno=”n”
40.newadd=”n”
41.import=”y”
42.保持除记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- U8 开发 EAI 接口