请教Interface的设计,谢谢大家

[复制链接]
查看11 | 回复6 | 2012-1-4 11:56:19 | 显示全部楼层 |阅读模式
大家好,小弟是个新手,但是因为种种原因,要负责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 通知用户,请问具体怎么实现呢?
谢谢大家!

回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
1. ①可以EBS调用,如果没有第三方中间件工具 就需要建DBLINK
2. 请求集当然可以
3. 需要
4. 当然自己写log, 标准程序的错误都要写语句去取
5. 工作流通知就行,带个附件
回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
谢谢楼上的大哥!!~~~
回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
可能我們的用詞不太一樣. 我開發Interface拋轉程式的順序如下.
1.會先決定Interface table 在哪邊
外部系統拋入(File or insert table)->customize Interface (Oracle )->Standard Interface (Oracle)
或是
Oracle 直接去Get 外部系統的資料(DBlink)
2.寫Valiadte 程式驗證資料正確性
1.可要求外部系統丟進來的資料須先通過驗證(驗證程式寫在外部系統)
2.先拋到customize interface ,通過我們自行客製的驗證程式在 import 到Standard interface
3.Call Standard Imoport program 去進行Standard
--------------------------------------------------------------------------
另外你說的寫batch调用多个子程序,指的是說寫Package裡面再call concurrent嗎?這是一種方法,
如果你的客戶要用請求集,那麼你就去掛Concurrent set就好,這樣你還比較省工
--------------------------------------------------------------------------
3.需要建零时表吗
你要建立His的備份表格,以免以後資料有問題死無對證,通常保險的話是會開兩個Table,將資料同步拋入兩個Table
Ex. AP_IMPORT--讀取完後殺掉,中間每個階段的過程,可以用FLAG欄位去控制
AP_IMPORT_HIS --永久保留
這樣的好處是,假設你需要重拋,你可以從HIS中直接取得資料;而且也可以保留原始證據
------------------------------------------------------------------------------------------
如果想把出错时的信息,进行一元化管理,请问有什么好的方法吗,自己可以写log吗

1.可以直接在PACKAG裡面寫ALERT的語法,這樣遇到異常的時候可以及時發MAIL ALERT給
USER
2.不MAIL ALERT但是將資料的FLAG改成'E',並且讓CONCURRENT變成ERROR OR WARING,
並將結果LOG出來 <---這種最常用
EX:總共處理100筆 ,失敗50筆,成功50筆,失敗及成功明細如下..
3.將ERROR寫入ERROR TABLE
----------------------------------------------------------------------------
5.客户希望把Interface执行结果,通过mail 通知用户,请问具体怎么实现呢?
1)如上所敘,如果你將ERROR資料寫入ERROR TABLE,那你可以客製ALERT去MAIL
我比較傾向用這種方法
2)直接在PACKAGE中寫MAIL的語法,將ERROR資料寄出
你若有需要,我可以把語法給你.(缺點是如果是排程程式,三分鐘一次...你的MAIL會爆掉)
回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
外挂系统数据的导入 差不多都这样吧。
参考参考系统里的其它程序好了
我们系统里的 工时考勤系统, 外部工单系统 还有发票那边好几个程序都这样实现的
回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
大概步骤:
1,外挂系统 固定时间把文件放到他们自己的FTP上,(文件名最好固定,方便后面schedule程序时固定参数)
2.oracle系统从外挂系统的FTP上取文件,后sqlload把数据插入staging table (在package里调用两次分别实现取文件和插数据,另外可以建个schedule request set,这一步做set的第一个program)
3.验证staging table里的数据,一般有几个flag来控制,把验证通过的数据插入interface table(验证比较麻烦,一般是建好多个function后在package里调用验证,这一步做set的第二个program)
4.error program, 这一步好像就是把sqlload错误信息邮件发出,是个host程序(set的第三个program)
5.interface table 数据导入 oracle 基表。
做support的,了解个大概,没写过


回复

使用道具 举报

千问 | 2012-1-4 11:56:19 | 显示全部楼层
非常感谢大家!!!~~~~
学习了!~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行