资源描述
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产品结构
Web Interface(ASP)
EAI工具
手动导入导出工具
数据映射规则定义、过滤条件规则定义、任务计划配置
自动任务计划执行引擎
EAI数据交换框架
EAI Broker (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\下的例子)
U8
数据处理
外部
系统
EAI组件
调用接口
二次开发出的软件
二次开发的工作
数据流程如下:
这种开发模式比较简单,优点是:充分利用EAI工具提供的功能,编程简单;缺点是:只能提供批量导入导出功能。
6.2.2 调用EAI数据交换框架接口
包括两种方式:本地COM方式、Internet方式。
这两种方式在使用之前都需要检查有没有进行EAI接口配置(开始->程序->U8ERP->企业应用集成->EAI接口配置),如果没有则需要进行配置。一般配置好后就不要动了,除非出现服务器迁移或重新安装的情况。
EAI接口配置包括两项内容:EAI基本设置、外部系统注册。
l EAI接口基本设置
需要指定U8服务器、EAI登录身份验证、EAI数据源。
如果进行数据交换的数据包比较大,则需要点“自动设置IIS”更改IIS的大数据限制。
l 外部系统注册
在数据交换中,需要明确指定外部系统与U8的某个业务账套的对应关系,该对应关系由一个唯一的注册码标识。可以注册多个外部系统注册码。数据交换时需要在请求消息的头指定一个注册码:<ufinterface sender="注册码" …>
6.2.2.1 本地COM方式
处理流程如下:
U8
数据处理
外部
系统
EAI组件
调用接口
二次开发出的软件
二次开发的工作
这种方式可根据开发者的需要批量处理或者实时处理。接口调用非常简单,简化了编程。开发者只需将标准数据传入接口,如下:
Dim obj as Object
Dim strRet as string
Set Obj=CreateObject(U8Distribute.iDistribute)
strRet =obj. Process(sXml)
可以根据回执内容strRet对操作结果进行相应的处理。
传入参数sXml和返回结果strRet为标准XML数据串,具体格式后面会说明。
6.2.2.2 Internet方式
U8
外部
系统
IIS服
务器
二次开发模块
SOAP
协议
二次开发工作
开发者可以用SOAP协议向装有U8-EAI的IIS服务器发送XML数据,类似本地调用分析返回的XML回执,如下:
Dim http As New XMLHTTP
Dim sHttpServer As String
Dim strRet as string
sHttpServer = "http://" + sHttpServer + "/U8EAI/import.asp" //指定服务器
http.Open "Post", sHttpServer, True //True为异步,Fasle为同步
http.send sXml //发送数据
Do While http.readyState <> 4
DoEvents
Loop
If http.Status = 200 Then
strRet = http.responseText //返回结果
Else
//处理出错信息
End If
6.3. 导入导出数据格式标准
6.3.1. 档案单据模板格式
单据模板指的U8中各个基础档案和业务档案用XML存储时的格式。目前放在U8Soft\EAI\XML\Template中。模板的下部注释中有模板中各个节点的相应说明,主要是供二次开发人员和客户了解U8单据格式使用。
在U8SOFT\EAI\XML\Samples有各个模板的例子供参考。
单据模版总体架构
<ufinterface roottag='' billtype='' docid='' receiver='' sender='' proc='' codeexchanged='' exportneedexch=’’
exportneedexch:= '' timestamp='' check='' paginate='' version='2.0' >
</ufinterface>
roottag: 单据模版名,如:
客商档案:customer 客商分类:customerclass
具体名称由总体确定,在数据交换中该名称要经常使用
billtype: 系统用 可填空
docid :唯一编号 可空
receiver :接收方 可填U8
sender :发送方编码 即注册的外部编码 (必填)
注意:如果使用EAI工具,通过界面操作导入,则可空。通过EAI工具导入时,以选择的注册码为准,不
以单据中的注册码为准。
proc: 操作码 添加:Add 编辑:edit 删除:delete 参照:Query 该字段必填
数据交换时,会根据操作码判断是导入操作还是导出操作(操作码为query)
通过EAI工具导入时,操作可选。如果是二次开发通过调用EAI提供的服务进行数据交换,则必须填写
该字段,导入操作,请填写Add /Edit/Delete,导出操作,请填写Query
codeexchanged:编码是否已转换 如果已转换即已和U8基础数据编码一致填Y,将不会通过对照表的转换
如果没有转换即和U8基础数据编码不一致 填N,将会自动通过对照表转换之后,进行相应的操作.
对于基础档案信息,如果添加成功,则系统自动将该信息加入到对照表(即内外部编码是一致的)
导入的时候使用。
exportneedexch: 导出是否需要根据对照表进行转换,需要填”Y”,不需要填”N”
导出的时候使用
timestamp: 时间戳标志,在导出数据时,导出此时间戳的所有以后的数据,若为空,则导出
只有过滤条件的数据
6.3.2. 传入XML数据格式
6.3.2.1 数据导入
数据的导入,传入的参数为根据XML模板制作的XML数据。比如,要导入部门档案,传入的sXml如下:
<?xml version="1.0"?>
<ufinterface sender="011" receiver="u8" roottag="department" docid="54811775" proc="Add" codeexchanged="n" exportneedexch="N" paginate="0" display="部门档案" family="" timestamp="0x000000000027B59C">
<department>
<code>0</code>
<endflag>0</endflag>
<name>基建中心</name>
<rank>1</rank>
<manager/>
…
</department>
<department>
<code>001</code>
<endflag>1</endflag>
<name>基建投资部</name>
<rank>2</rank>
<manager/>
<prop/>
...
</department>
</ufinterface>
导入时,单据头中的proc必须为Add/Edit/Delete之一,并不是所有单据都支持这三种操作,具体可参考本章第四节。
凭证的导入,具体请参考本章第五节。
XML是对大小写敏感的,在EAI标准中所有的元素名都为小写字母
注意:EAI标准数据中的有些元素可以为空元素,有些则不得为空,根据具体业务不同而不同。但所规定的元素一个也不能多,一个也不能少
6.3.2.2 数据导出
操作码为Query,可加入导出条件。格式例子(以导出部门档案为例):
<?xml version="1.0" ?>
<ufinterface sender="011" receiver="u8" roottag="department" docid="874080836" proc="Query" codeexchanged="n" exportneedexch="n" paginate="0" display="部门档案" family="基础档案">
<department importfile="" exportfile="" code="011" bincrementout="n">
<field display="部门编码" name="cDepCode" operation="=" value="001" logic="" />
</department>
</ufinterface>
元素department表示为部门档案:
属性importfile:保存的是导入文件路径
属性exportfile:保存的是导出文件路径
属性code:外部系统的注册号
元素Field表示每个条件:
属性display:中文含义
属性name:字段名
属性operation:是比较运算符
属性value:比较值
属性logic:是连接的逻辑运算符。and:并且;or:或者
每次导出一种单据,这里为部门档案,如果需要导出收款单则需要再一次导出。条件Field可以有多条。这个调用返回的XML回执为U8的标准数据。
注意:并不是导出数据会自动保存到Importfile exportfile指定的路径,这两个参数是EAI工具保存数据使用的。
6.3.3. 回执XML数据格式
从U8导出数据成功的回执就是数据。
其它情况的回执:
<?xml version='1.0'?>
<ufinterface roottag='return' docid='' proc=''>
<item key='' succeed='' dsc='' u8key=''></item>
</ufinterface>
描述:
key:为一条记录的关键字;
succeed:成功标识:0:成功;非0:失败;
dsc:失败的描述;
docid:消息号;
proc:操作码;
u8key:成功后U8系统对应的关键字
凭证的返回格式如下:
<?xml version='1.0' ?>
<ufinterface roottag='voucheraddreturn' docid='' proc=''>
<item acc_period='' voucher_type='' voucher_id='001' row_id='' succeed='' dsc='' u8vouch_id ='' u8acc_period=''></item>
</ufinterface>
描述:
acc_period:会计期间,0为期初往来明细帐,21为期初待核银行帐,20为银行帐科目调整前余额,1-12为凭证及明细帐
vouch_type:凭证类别字
vouch_id:凭证号(由系统分配凭证号,期初时可为空)
row_id:行号(由系统赋值,期初时为1)
u8vouch_id:U8凭证号
u8acc_period:U8凭证会计期间
succeed:成功标识:0:成功;非0:失败;
6.4. 支持数据交换的基础档案和业务单据
1. 模块
2. 类型
3. 外部数据导入U8
4. U8数据导出
5. 增加
6. 修改
7. 删除
8. 总账
9. 凭证
10. Y
11. Y
12.
13. Y
14. 银行对账单
15. Y(仅导入期初对账单)
16.
17.
18.
19. 期初余额
20. Y
21. Y
22.
23. Y
24. 结算中心
25. 内部结算单
26. Y
27.
28.
29. Y
30. 应收款管理
31. 应收单
32. Y(不可导入期初单据)
33.
34. Y
35. Y
36. 收款单
37. Y(不可导入期初单据)
38.
39. Y
40. Y
41. 销售发票(不启用《销售管理》)
42. Y(不可导入期初单据)
43.
44.
45. Y
46. 应付款管理
47. 应付单
48. Y(不可导入期初单据)
49.
50. Y
51. Y
52. 付款单
53. Y(不可导入期初单据)
54.
55. Y
56. Y
57. 采购发票(不启用《采购管理》)
58. Y(不可导入期初单据)
59.
60.
61.
62. 成本管理
63. 材料消耗数据
64. Y
65.
66.
67. Y
68. 薪资管理
69. 工资人员档案
70. Y
71.
72.
73. Y
74. 工资项目数据
75. Y
76.
77.
78. Y
79. 固定资产
80. 固定资产卡片
81. Y
82.
83. Y
84. Y
85. 固定资产变动单
86. Y
87.
88.
89. Y
90. 采购管理
91. 采购订单
92. Y
93.
94.
95. Y
96. 采购到货单
97. Y
98.
99.
100. Y
101. 采购发票
102. Y
103.
104.
105. Y
106. 代管挂账确认单
107. Y
108.
109.
110. Y
111. 供应商存货价格
112. Y
113.
114.
115. Y
116. 销售管理
117. 销售订单
118. Y
119.
120.
121. Y
122. 销售发货单
123. Y
124.
125.
126. Y
127. 销售发票
128. Y
129.
130.
131. Y
132. 销售发票_导入到内部结算单
133. Y
134.
135.
136.
137. 直营门店零售日报
138. Y
139.
140.
141.
142. 客户调价单
143. Y
144.
145.
146. Y
147. 存货调价单
148. Y
149.
150.
151. Y
152. 库存管理
153. 入库单
154. Y
155.
156.
157. Y
158. 出库单
159. Y
160.
161.
162. Y
163. 调拨申请单
164. Y
165.
166.
167. Y
168. 调拨单
169. Y
170.
171.
172. Y
173. 库存量
174. Y
175.
176.
177. Y
178. 库存期初
179. Y
180.
181.
182. Y
183. 期初不合格品
184. Y
185.
186.
187. Y
188. 项目管理
189. 项目要素分类
190.
191.
192.
193. Y
194. 项目要素
195.
196.
197.
198. Y
199. 项目成本
200.
201.
202.
203. Y
204. 项目预算表
205. Y
206.
207.
208. Y
209. 预算项目信息表
210. Y
211.
212.
213. Y
214. 项目周期预算表
215. Y
216.
217.
218. Y
219. 项目预算周期权数表
220. Y
221.
222.
223. Y
224. 项目周期预算子表
225. Y
226.
227.
228. Y
229. 项目预算子表
230. Y
231.
232.
233. Y
234. 预算项目周期表
235. Y
236.
237.
238. Y
239. 预算版本信息表
240. Y
241.
242.
243. Y
244. 生产制造
245. 时栅资料
246. Y
247.
248.
249. Y
250. 时格资料
251. Y
252.
253.
254. Y
255. 工作中心
256. Y
257.
258.
259. Y
260. 资源资料
261. Y
262.
263.
264. Y
265. 班次资料
266. Y
267.
268.
269. Y
270. 标准工序
271. Y
272.
273.
274. Y
275. 物料工艺路线
276. Y
277. Y
278. Y
279. Y
280. 物料资源清单
281. Y
282.
283.
284. Y
285. 物料清单
286. Y
287. Y
288. Y
289. Y
290. 物料生产线关系
291. Y
292.
293.
294. Y
295. 生产订单
296. Y
297.
298.
299. Y
300. ATP规则
301. Y
302.
303.
304. Y
305. 预测版本
306. Y
307.
308.
309. Y
310. 设备管理
311. 设备台账
312.
313.
314.
315.
316. 设备类型台账
317.
318.
319.
320.
321. 测量点记录
322.
323.
324.
325.
326. 出口管理
327. 贸易术语
328. Y
329.
330.
331. Y
332. 贸易方式
333. Y
334.
335.
336. Y
337. 国家档案
338. Y
339.
340.
341. Y
342. 港口资料
343. Y
344.
345.
346. Y
347. 唛头资料
348. Y
349.
350.
351. Y
352. 存货价格
353. Y
354.
355.
356. Y
357. 报价单
358. Y
359.
360.
361. Y
362. 出口订单
363. Y
364.
365.
366. Y
367. 费用单
368. Y
369.
370.
371. Y
372. 信用证
373. Y
374.
375.
376. Y
377. 进口管理
378. 进口订单
379. Y
380.
381.
382. Y
383. 委外管理
384. 委外发票
385. Y
386.
387.
388. Y
389. 委外订单
390. Y
391.
392.
393. Y
394. 基础档案
395. 部门档案
396. 集团账套不支持部门的导入(添加、删除、修改)导出操作
397. Y
398. Y
399. Y
400. Y
401. 集团企业目录[非集团账套不支持该档案的导入导出操作]
402. Y
403. Y
404.
405. Y
406. 人员档案
407. Y
408. Y
409. Y
410. Y
411. 人员类别
412. Y
413. Y
414. Y
415. Y
416. 职务簇
417. Y
418. Y
419. Y
420. Y
421. 职务级别
422. Y
423. Y
424. Y
425. Y
426. 职务档案
427. Y
428. Y
429. Y
430. Y
431. 岗位序列
432. Y
433. Y
434. Y
435. Y
436. 岗位等级
437. Y
438. Y
439. Y
440. Y
441. 岗位档案
442. Y
443. Y
444. Y
445. Y
446. 币种
447. Y
448.
449.
450. Y
451. 银行档案
452. Y
453. Y
454. Y
455. Y
456. 本单位开户银行
457. Y
458. Y
459. Y
460. Y
461. 地区分类
462. Y
463. Y
464. Y
465. Y
466. 发运方式
467. Y
468. Y
469. Y
470. Y
471. 仓库档案
472. Y
473. Y
474. Y
475. Y
476. 货位档案
477. Y
478. Y
479. Y
480. Y
481. 客户分类
482. Y
483. Y
484. Y
485. Y
486. 客户档案
487. Y
488. Y
489. Y
490. Y
491. 供应商分类
492. Y
493. Y
494. Y
495. Y
496. 供应商档案
497. Y
498. Y
499. Y
500. Y
501. 计量单位组
502. Y
503. Y
504. Y
505. Y
506. 计量单位
507. Y
508. Y
509. Y
510. Y
511. 存货分类
512. Y
513. Y
514. Y
515. Y
516. 存货档案
517. Y
518. Y
519. Y
520. Y
521. 结算方式
522. Y
523. Y
524. Y
525. Y
526. 付款条件
527. Y
528. Y
529. Y
530. Y
531. 收发类别
532. Y
533. Y
534. Y
535. Y
536. 销售类型
537. Y
538. Y
539. Y
540. Y
541. 采购类型
542. Y
543. Y
544. Y
545. Y
546. 成套件
547. Y
548. Y
549. Y
550. Y
551. 费用项目分类
552. Y
553. Y
554. Y
555. Y
556. 费用项目
557. Y
558. Y
559. Y
560. Y
561. 自定义项设置
562.
563. Y
564.
565. Y
566. 自定义项档案
567. Y
568.
569. Y
570. Y
571. 原因码档案
572. Y
573. Y
574. Y
575. Y
576. 仓库存货对照表
577. Y
578. Y
579. Y
580. Y
581. 存货货位对照表
582. Y
583. Y
584. Y
585. Y
586. 供应商存货对照表
587. Y
588. Y
589. Y
590. Y
591. 客户存货对照表
592. Y
593. Y
594. Y
595. Y
596. 项目
597. Y
598.
599.
600. Y
601. 会计科目
602. Y
603.
604.
605. Y
606. 汇率
607. Y
608.
609.
610. Y
611. 凭证类别
612. Y
613.
614.
615. Y
616. 常用摘要
617. Y
618.
619.
620. Y
621. 交易单位分类
622. Y
623.
624.
625.
626. 交易单位档案
627. Y
628.
629.
630.
631. 交易单位账号
632. Y
633.
634.
635.
6.5. 凭证的导入
1. 由于凭证导入的特殊性,凭证导入时单据头中增加了renewproofno、import、newadd三个属性,含义如下:
2. proc=”add” //追加
3. proc=”edit” //覆盖
4. renewproofno=”y” //重新编号
5. renewproofno=”n” //不重新编号
6. import=”y” //导入式
7. newadd=”y” //新增式
8. 并且,导入时只有下面六种组合
9. 序号
9.1. 操作
9.2. 单据头
9.3. 说 明
10. 1
11. 重新编号+追加+新增式
12. Proc=”add” renewproofno=”y”
13. newadd=”y”
14. import=”n”
15. 追加生成的凭证记录为生成态。即刚编写完的凭证状态。
16. 凭证编号重新排序
17. 2
18. 不重新编号+追加+新增式
19. Proc=”add” renewproofno=”n”
20. newadd=”y”
21. import=”n”
22. 追加生成的凭证记录为生成态。即刚编写完的凭证状态。
23. 凭证编号不重新排序
24. 3
25. 重新编号+追加+导入式
26. Proc=”add” renewproofno=”y”
27. newadd=”n”
28. import=”y”
29. 保持除记账、预算审批标志外的所有导入前输出状态。
30. 凭证号重新编号
31. 4
32. 不重新编号+追加+导入式
33. Proc=”add” renewproofno=”n”
34. newadd=”n”
35. import=”y”
36. 保持除记账、预算审批标志外的所有导入前输出状态。
37. 凭证号不重新编号
38. 5
39. 不重新编号+覆盖+新增式
40. Proc=”edit” renewproofno=”n”
41. newadd=”y”
42. import=”n”
43. 覆盖生成的凭证记录为生成态。即刚编写完的凭证状态。
44. 凭证号不重新编号
45. 6
46. 不重新编号+覆盖+导入式
47. Proc=”edit” renewproofno=”n”
48. newadd=”n”
49. import=”y”
50. 保持除记账、预算审批标志外的,所有导入前输出状态。
51. 凭证号不重新编号
展开阅读全文