壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2261|回复: 10

[二次开发] 请教Oracle Interface的设计〔接口开发〕,谢谢

  [复制链接]
发表于 2011/10/16 10:20:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
大家好,小弟是个新手,但是因为种种原因,要负责Interface的开发
有很多不明白的地方,在这里想请教大家

本次Interface的整体大致流程是这样的
①.外部系统的基表数据,导入外部系统的 IF 表
②.对外部系统的 IF 表数据进行验证,如果没有问题,导入EBS的 IF 表。如果有问题,更新外部系统的 IF 表数据的状态
③.运行标准Concurrent,将EBS的 IF 表数据,导入EBS的基表
④.根据Interface执行的结果,更新外部系统的 IF 表数据的状态
另外,Interface是每天晚上24点自动执行

问题有这些
1. ①的执行,是由外部系统的程序来实现的
    但是客户希望①~④由EBS统一调用,而不是①由外部系统调用,②~④由EBS调用,这样会有很多问题
    请问在EBS里调用①(外部系统的程序),能实现吗?或者干脆把这个外部程序拿到EBS里来,有可行性吗?
    注:外部系统的数据库是Oracle
2.以前做的项目,会写batch调用多个子程序,再用scheduler调用batch。
   这次客户不希望用batch,而是希望用请求集的方式,这个可行吗?
3.需要建零时表吗
4.如果想把出错时的信息,进行一元化管理,请问有什么好的方法吗,自己可以写log吗
5.客户希望把Interface执行结果,通过mail 通知用户,请问具体怎么实现呢?

谢谢大家!
发表于 2011/10/16 15:10:48 | 显示全部楼层
本次Interface的整体大致流程是这样的
①.外部系统的基表数据,导入外部系统的 IF 表
②.对外部系统的 IF 表数据进行验证,如果没有问题,导入EBS的 IF 表。如果有问题,更新外部系统的 IF 表数据的状态
③.运行标准Concurrent,将EBS的 IF 表数据,导入EBS的基表
④.根据Interface执行的结果,更新外部系统的 IF 表数据的状态
另外,Interface是每天晚上24点自动执行


红色为回复你的内容
问题有这些
1. ①的执行,是由外部系统的程序来实现的
    但是客户希望①~④由EBS统一调用,而不是①由外部系统调用,②~④由EBS调用,这样会有很多问题
    请问在EBS里调用①(外部系统的程序),能实现吗?或者干脆把这个外部程序拿到EBS里来,有可行性吗?
    注:外部系统的数据库是Oracle
 回复:客户的要求是可以作的,这个在技术上不是问题。Oracle数据库之间可以用DatabaseLink来连接两个数据库,这样操作外部系统就像操作EBS系统一样。所以从技术上是没问题的。不过:这样作就把两个系统绑定得非常的紧,一般的做法是步骤1是外部系统导出接口数据(一般是以文本文件的方式),这样连个系统因为不是数据库之间的共享,互相之间的耦合比较小,互相之间影响不大。
2.以前做的项目,会写batch调用多个子程序,再用scheduler调用batch。
   这次客户不希望用batch,而是希望用请求集的方式,这个可行吗?
   回复:Oracle的请求集就是Batch的作用,你可以把多个请求定义为请求集,请求集中你可以制定每个请求(程序)执行的顺序,以及某一个执行失败后下一步如何处理。用请求集作接口导入在Oracle EBS中是一个标准做法,所以你的客户这样要求完全是合理的,也是标准的做法。
3.需要建零时表吗
 回复:在第二步中需要建立临时表,一般的做法是:接口文件->通过Dataload导入到临时表,然后通过接口程序进行验证,然后导入到EBS的临时表。所以临时表的作用一般用于存储接口文件的内容。导入到临时表后,后面的工作就是将临时表的数据插入到EBS接口表,这个程序就是接口程序;数据到了EBS接口表后,EBS都有标准的程序实现EBS接口表到系统数据(发票,收款)。
4.如果想把出错时的信息,进行一元化管理,请问有什么好的方法吗,自己可以写log吗
 回复:出错的数据最好作一个日志,或者出错了就停止导入;这个在上线前期应该会经常出现,越到后期,系统整合好后,出现问题的可能性一般很低。
5.客户希望把Interface执行结果,通过mail 通知用户,请问具体怎么实现呢?
 回复:你可以用PL/SQL发Email(http://luntan.ERP100.com/thread-32328-1-1.html),PL/SQL发邮件和文件操作都是很方便的,功能很强大;发邮件你也可以用Oracle的Alert去实现,不过在接口中我建议直接使用PL/SQL;

希望以上的回复对你有帮助。

发表于 2011/10/16 15:15:14 | 显示全部楼层
哇塞    够明白的了{:soso_e183:}
 楼主| 发表于 2011/10/16 18:28:58 | 显示全部楼层
感谢如此热心的斑竹!!

关于第一点的回答,我还想追加两个提问,谢谢!

首先,通过 DBLink 访问外部系统数据库的表,就像斑竹您所说的,是没有问题的。
但是客户是希望EBS直接去调用外部系统的程序(这个程序执行了①),这个也没有问题吗?

其次,关于斑竹您说的“把两个系统绑定得非常的紧”,我还是不太理解这样有什么缺点。
在整个Interface导入的流程结束后(或者中途出错中断),需要把结果Code写回外部系统的IF表,还是需要用到DBlink 啊。

谢谢!!
发表于 2011/10/16 20:57:36 | 显示全部楼层
wywh2001 发表于 2011/10/16 18:28
感谢如此热心的斑竹!!

关于第一点的回答,我还想追加两个提问,谢谢!

关于第一点的回答,我还想追加两个提问,谢谢!

首先,通过 DBLink 访问外部系统数据库的表,就像斑竹您所说的,是没有问题的。
但是客户是希望EBS直接去调用外部系统的程序(这个程序执行了①),这个也没有问题吗?
--这个从技术上没有问题的。EBS支持各种程序PL/SQL或者OAF(Java开发)。这个技术顾问都应该很清楚的。

其次,关于斑竹您说的“把两个系统绑定得非常的紧”,我还是不太理解这样有什么缺点。
--容易互相之间有影响;
在整个Interface导入的流程结束后(或者中途出错中断),需要把结果Code写回外部系统的IF表,还是需要用到DBlink 啊。
--DBLink是一种实现方式,你完全可以导出一个报错记录的数据文件,外部系统读取这个数据文件,然后回写IF表。

谢谢!!
 楼主| 发表于 2011/10/16 21:47:48 | 显示全部楼层
斑竹您实在是太热心了!
再次感谢!~~
发表于 2011/10/16 21:54:17 | 显示全部楼层
wywh2001 发表于 2011/10/16 21:47
斑竹您实在是太热心了!
再次感谢!~~

建议你把你每天解决的问题都分享上来,希望这里成为你的一个知识库。
你可以先检索,现在ERP100的知识库已经积累到了一定的量了,基本上很多内容都可以检索到。
 楼主| 发表于 2011/10/17 08:33:30 | 显示全部楼层
明白了~~~~~~~
发表于 2011/10/18 17:10:07 | 显示全部楼层
顶啊!太好了!
发表于 2011/12/8 08:55:21 | 显示全部楼层
标记一下,谢谢
发表于 2012/3/16 12:58:37 | 显示全部楼层
不好意思,我能问个低级问题吗?
为什么base table 不能直接新增,删除,修改,而必须透过 interface 来实施,好累?
是有规定吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 02:03 , Processed in 0.022059 second(s), 18 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表