NCV6X-信息交換平臺技術紅皮書_第1頁
NCV6X-信息交換平臺技術紅皮書_第2頁
NCV6X-信息交換平臺技術紅皮書_第3頁
NCV6X-信息交換平臺技術紅皮書_第4頁
NCV6X-信息交換平臺技術紅皮書_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、信息交換平臺信息交換平臺實施技術紅皮書實施技術紅皮書NC-UAP 6.0用友 NC-UAP2021-11-11第 2 頁目目 錄錄第一章第一章總體概述總體概述.11.信息交換平臺總體結構.12.信息交換平臺功能特點.13.信息交換平臺 V50 版新增功能.24.信息交換平臺 V55 版新增功能.35.信息交換平臺 V60 版新增功能.3第二章第二章實施簡介及相關注意點實施簡介及相關注意點.41.實施方法簡介.4外系統數據導入的一般步驟.4信息交換平臺服務器端文件目錄結構.52.Servlet 的 URL 地址參數與 XML 交換文檔頭屬性的關系.63.向 NC 系統發(fā)送數據方式.7手動界面發(fā)送

2、.7后臺預警發(fā)送.8自定義程序發(fā)送.114.回執(zhí)及異常出錯信息.12回執(zhí)格式.12異常和錯誤編碼.14查詢及回執(zhí)格式樣例.145.信息交換平臺總體參數設置.23外部系統默認帳套.24單篇最大傳輸上限.24導入過程是否記錄中間文件.25回執(zhí)文件后臺備份.25回執(zhí)和導出文件編碼格式.25單據導入規(guī)則設置.26設置客戶端IP范圍.266.單據流水號和單據并發(fā)控制.26單據流水號的概念和作用.26單據并發(fā)控制.277.日志查看.278.翻譯器配置.30第三章第三章單據交換規(guī)則定義單據交換規(guī)則定義.321.校驗文件全局配置.322.表記錄的配置.343.字段屬性項的配置.34第 3 頁第四章第四章基于信

3、息交換平臺的單據集成開發(fā)基于信息交換平臺的單據集成開發(fā).441.注冊單據相關信息.442.生成配置交換規(guī)則定義文件.453.輔助信息項設置.484.插件代碼維護.49第五章第五章 單據集成示例單據集成示例.511.問題描述.512.設計.513.具體開發(fā)指導.513.1單據插件信息注冊.513.2單據轉換規(guī)則定義.513.3插件代碼編寫和部署.523.4修改單據轉換規(guī)則.523.5手動加載測試.53第六章第六章 安全安全.541.加密類編寫.542.加密類注冊.56第七章第七章 擴展擴展.57第八章第八章 JMS 及大文件傳輸模式及大文件傳輸模式.591 信息交換平臺異步通信解決方案 .591

4、.1信息交換平臺現狀及存在的問題.591.2需求分析.591.3 JMS簡介.601.3JMS Client消息交互圖.621.5解決方案.622.JMS 傳輸模式.643. JMS Client For NC6.0.654 大文件傳輸模式 .85附錄附錄.861 發(fā)送結果錯誤碼 .862K 系統自定義項目檔案樣本 defdoc.xml.89常見問題常見問題.90第 1 頁第一章第一章 總體概述總體概述1. 信息交換平臺總體結構信息交換平臺總體結構外部交換平臺外系統自動發(fā)送數據手動加載數據自動加載代理NC基礎數據模塊Servlet接收外系統的文檔XML處理器解析數據并翻譯轉換NC財務業(yè)務模塊N

5、C供應鏈業(yè)務模塊日志和中間文件整理服務基礎數據對照表外部系統注冊外系統接收代理XML數據包XML數據包XML數據包XML數據包數據高速緩存NC業(yè)務模塊適配器輔助信息配置轉換規(guī)則定義圖 1.1.1 信息交換平臺總體結構圖信息交換平臺主要用于外部系統和 NC 系統進行集成。利用信息交換平臺,可以將外系統的基本檔案和業(yè)務數據發(fā)送到 NC 系統中,并進行相關的業(yè)務操作,如審批、棄審,也可以通過發(fā)送 XML 格式的查詢條件導出 NC 系統的數據(需業(yè)務插件支持) ,導出的數據可以附著在回執(zhí)文件中,也可以直接向外部系統回發(fā) HTTP 請求。2. 信息交換平臺功能特點信息交換平臺功能特點采用 XML 格式作

6、為統一的數據交換標準,為數據訪問提供簡便、 統一的模式。XML 格式在數據表達和描述方面有著很大的優(yōu)勢,逐漸成為業(yè)界的標準,采用 XML 格式作為交換標準格式可以很好的保護企業(yè)投資。面向服務的架構。這使得第三方系統可以隨時隨地向 NC 系統發(fā)送相關的業(yè)務數據,NC 內部的預警服務及工作流引擎使得 NC 系統可以在合適的時候向第三方系統傳送需要的數據,并且滿足第三方系統的格式規(guī)第 2 頁范。靈活配置。數據轉換的規(guī)則可靈活定義,獨立于應用集成和業(yè)務邏輯,也就是說根據不同的外部數據結構,直接通過修改交換規(guī)則文件的定義,即可達到各種異構數據無縫集成的目的。自由擴充。對于標準產品不支持的業(yè)務單據,如果有

7、集成需求,信息交換平臺提供了向導式的二次開發(fā)工具,集成了所有與二次開發(fā)相關的功能及配置,支持動態(tài)部署,可以在用戶環(huán)境上進行快速有效的開發(fā)。3. 信息交換平臺信息交換平臺 V50 版新增功能版新增功能與信息交換平臺 V3 序列產品相比,V50 版信息交換平臺在功能上得到了進一步的完善,在易用性上也有了很大改進。1)單據交換規(guī)則的定義更加豐富和靈活??梢詾槟骋粏螕P椭械哪骋蛔侄味x路徑,也可以為一個集合中的實體元素定義路徑,甚至可以為某個字段定義 XML 結構查詢的公式。這些都得益于對 XPath 功能的模擬,使得 XML 文件間結構轉換的能力更強,但這個交換規(guī)則的學習成本可能比較大,后續(xù)版本需

8、要圖形化和簡潔化。2)為基于信息交換平臺的自定義單據的集成提供了一個快速開發(fā)工具。這個工具以向導方式將集成一個自定義單據所要做的工作貫穿起來,包括:單據信息注冊、校驗文件生成、樣本數據導出、輔助信息格式配置、業(yè)務插件類代碼生成和編寫,甚至還包括業(yè)務插件類代碼的實時編譯和部署,樣本數據的導入測試和結果展示等。3)啟用 NCV50 新緩存機制。這不但使得外部系統設置、輔助信息設置和基礎數據對照表的設置能夠實時地作用于外部數據導入過程中,而且對于基本檔案數據的訪問也實現了實時性,效率得到了更高的優(yōu)化。4)基礎數據對照導入功能更加豐富。基礎數據對照在 V35 版根據基本檔案自動增加的基礎上,新增了基礎

9、數據對照的 XML 文件增加和EXCEL 文件增加的功能。5)信息交換平臺總體參數配置功能更加豐富和完整。這部分配置主要包括單據導入方式、接收公司匹配規(guī)則、導入過程是否記錄中間文件、回執(zhí)和導出文件編碼格式、設置客戶端 IP 范圍等,這些功能的可配置性極大地提高了信息交換平臺的靈活性和可擴展性。6)對單據導入過程中的并發(fā)程度進行控制。對于某一單據類型,一共給出了四種并發(fā)控制程度,實施人員可根據具體情況設置合理的并發(fā)控制級別,避免單據并發(fā)導入引發(fā)的錯誤。7)外系統數據實現后臺異步發(fā)送。借助預警平臺的定時觸發(fā)功能,系統可以自動將保存在服務端某個目錄下的外系統數據導入 NC 系統中,實現了異步駐留的數

10、據發(fā)送方式。8)對數據導入過程中的異常進行了重新劃分,對于錯誤信息進行了編碼。前者帶來的好處就是錯誤提示信息更加明確化,后者主要用于第三方系統程序內部識別導入過程中是否出現錯誤以及具體的錯誤信息。第 3 頁9)進一步約束信息交換平臺導入單據的語義。對每個單據需要定義一個組織字段,用于確保往某個接收方,比如說 A 公司做加載數據時,導入的數據能真正進入 A 公司,這個組織字段一般是公司或者主體賬簿。為單據定義組織字段之后,如果數據里相應組織字段的值不為空,則要求其值與接受方保持一致,如果數據里相應組織字段的值為空,則取接受方的內容為組織字段的值。10) 易用性改進。 【手動加載界面】對文件目錄、

11、回執(zhí)目錄、目標 URL 地址、加載成功轉移目錄的配置增加記憶功能,就是說以相同公司相同用戶登陸時,上述各項的配置內容默認顯示為最后一次用戶設置的值,避免用戶每次都需要重新設置。 【交換規(guī)則定義】增加了查找、定位字段的功能,單據交換規(guī)則樹上的右擊菜單也更加簡練明確,同時為字段的導入導出公式定義增加新版本的公式編輯器,定義公式更加方便簡潔。上述功能我們在接下來的內容中會具體提到。4. 信息交換平臺信息交換平臺 V55 版新增功能版新增功能1)最大傳輸上限界面最大 20M2)業(yè)務插件擴展功能 見第七章 擴展3)基礎數據對照界面 EXCEL 內外對照數據導入分為兩列,其中第一列為外系統值,第二列為 N

12、C 所對應值,系統會自動檢查 NC 值的合法性,不合法則置空。4)交換規(guī)則增加合并功能5)Ufinterfacevo 填充 NC 操作員信息6)增加日志統計和輸入流監(jiān)控,便于進行日志分析,定位網絡錯誤5. 信息交換平臺信息交換平臺 V60 版新增功能版新增功能1)信息交換平臺全面支持 NCV60 元數據進行數據處理。2)增加自定義翻譯器注冊界面,可以建立自定義的翻譯器。3)插件開發(fā)向導支持通過元數據和 VO 類生產交換規(guī)則。4)對枚舉類型數據的自動轉換。第 4 頁第二章第二章 實施簡介及相關注意點實施簡介及相關注意點NC 信息交換平臺的主要功能就是將不同外系統的數據導入 NC 系統。由于不同系

13、統之間對于相同單據的數據在表示上千差萬別,需要信息交換平臺對單據的 XML 格式的外系統數據進行格式轉換和數值翻譯,然后將轉換后生成的XML 格式的 NC 標準數據實例化為 NC 系統對應單據的數據對象,并調用業(yè)務模塊的接口(服務)進行保存或者更新。NC 系統在后臺有一個 Servlet 伺候服務,等待并處理客戶端的 POST 方法請求(信息交換平臺提供界面客戶端和預警客戶端,對于同步集成方式,外系統可以自定義發(fā)送客戶端) ??蛻舳送鶕?Servlet 的 URL 建立的連接的輸出流中寫待發(fā)送數據文件的內容,而后臺服務端則從請求的輸入流中讀取數據文件內容,然后再進行后續(xù)處理。關于客戶端發(fā)送數

14、據的具體內容請參考 2.3 節(jié)。2.1 節(jié)介紹了要將某個外系統的某種單據類型的數據文件導入至 NC 系統的最簡單方法。其余小節(jié)介紹了在實施數據導入過程中容易混淆而需要注意的地方,或者是一些常用的工具等。1. 實施方法簡介實施方法簡介外系統數據導入的一般步驟外系統根據單據類型將相同單據類型的數據組織在一個 XML 文件中,然后將其發(fā)送到 NC 系統的某個賬套下的某個組織中。一般來說,如果需要發(fā)送某種單據類型的數據至 NC 系統中,需要如下幾步:一、注冊外部系統。如果不存在可用的外系統的話,請在“外部系統信息設置”界面中注冊一個外部系統。 二、準備外系統數據。這份數據可能是外系統直接輸出的,也可能

15、是二次開發(fā)人員通過寫程序從第三方系統數據庫中抓出來的,或者由 Excel 格式或其他格式文件轉換過來的。寫這份數據時,可以參考 NC 安裝盤附帶的 XML 模板,XML 文件頭或者說文檔頭的屬性項請參照 2.2 節(jié)詳細說明。三、配置輔助信息(可選) 。如果要導入的單據數據需要輔助信息配置,在“輔助信息配置”界面根據外部系統、單據類型、接收組織為此次文件發(fā)送配置輔助信息。四、設置基礎數據對照(可選) 。如果要導入的單據數據需要作基礎數據對照(對于需要參照基本檔案的字段,如果其值不能按名稱或者編碼自動翻譯過來的話,在導入過程中系統會自動提示必須為該值做基礎數據對照) ,在“基礎數據對照”界面根據需

16、要參照的外部系統、需要參照的基本檔案、組織為需要第 5 頁對照的值做基礎數據對照。六、配置 Servlet 的 URL 地址。將要發(fā)送至的帳套編碼作為 account 屬性值寫入要發(fā)送到的 Servlet 的 URL 中(或者寫入 XML 文件的頭中) ;將接收集團編碼作為 groupcode 屬性寫入要發(fā)送到的 Servlet 的 URL 中(或者寫入 XML 文件的頭中) ;將接收組織的代碼作為 orgcode 屬性寫入要發(fā)送到的 Servlet 的URL 中(或者 XML 文件的頭中) 。詳細說明請參見 2.2 節(jié)。最后,就可以利用客戶端觸發(fā)該單據類型的數據文件的發(fā)送了。NC 信息交換平

17、臺內置了常用單據類型數據的導入功能,對于這些單據類型, 如果外系統數據遵照了這些單據類型的交換規(guī)則定義(即如果外系統的數據嚴格按照 NC 安裝盤附帶的相應單據的 XML 模板生成),那么按上述步驟相對比較簡單地就可以導入數據。但是如果外系統數據未能遵照單據類型的交換規(guī)則定義,則需要修改該單據類型的交換規(guī)則定義。做法就是將該單據的普通交換規(guī)則定義文件另存為另存為特定該外部系統的交換規(guī)則定義文件,并根據單據交換規(guī)則定義規(guī)范修改該特定交換規(guī)則定義文件,具體需要參見第三章單據交換規(guī)則定義,然后再行導入。對于非系統內置或者自定義的單據的導入,需要基于信息交換平臺做二次開發(fā),這部分內容可參見第四章。信息交

18、換平臺服務器端文件目錄結構信息交換平臺服務端的目錄結構安排如圖 2.1.1 所示,其中 NC_COMMON為安裝盤根目錄,也是中間件的工作目錄。從上圖可以看出,信息交換平臺配置文件目錄 pfxx 與 webapps 一樣同在安裝盤根路徑下,其中:pfxxtemp 目錄,存貯信息交換平臺接受到的原始數據文件、轉換翻譯完畢的標準 XML 文件、傳送失敗的文件。exportbills 目錄,存放信息交換平臺發(fā)送給外系統的數據文件。billdefine 目錄,存放所有需要交換的檔案和單據的交換規(guī)則文件。auxiregister 目錄,每個模塊在這個目錄下注冊一個文件,文件的內容是模塊所涉及單據的輔助信

19、息格式。詳細情況參考 4.3 節(jié)輔助信息項設置。businessprocessor 目錄,每個模塊在這個目錄下注冊一個文件,文件的內容是模塊所涉及單據在信息交換平臺的注冊信息,如單據類型、業(yè)務插件類名稱、元數據 ID、單據加鎖級別等。詳細內容參考 4.1 節(jié)注冊單據相關信息。globalset.xml 用于存放信息交換平臺的全局參數,如默認帳套、單篇最大傳輸上限等。第 6 頁圖 2.1.1 信息交換平臺服務端文件目錄結構2. Servlet 的的 URL 地址參數與地址參數與 XML 交換文檔頭屬性的關系交換文檔頭屬性的關系在外系統的單據數據的導入過程中需要用到一些初始化信息,如帳套、接收集團

20、、數據所屬外部系統(發(fā)送方) 、單據類型等。這部分數據可以在 Servlet的 URL 地址的參數中指定,也可以在 XML 數據文件的文檔頭屬性中指定,但是在 Servlet 的 URL 地址的參數中指定的信息比在 XML 數據文件的文檔頭屬性中指定的信息有更高的優(yōu)先級別。比如在 Servlet 的 URL 地址參數中指定groupcode=yk,而在 XML 數據文件的文檔頭屬性中指定 groupcode=yy,則最終還是將數據發(fā)送到 yk 組織。下面我們依據實例來逐一介紹各個常用屬性。圖 2.2.1 是一個典型的 NC 服務器的 Servlet 的 URL 地址, “http:/10.7.

21、3.226:80/service/XChangeServlet”是后臺 Servlet 的服務名。 “?”號之后的“account=0001&groupcode=xx&orgcode=yy”就是設置的 URL 地址參數,一般情況下這個地方只設置帳套編碼(account)、接收集團(groupcode),接收組織(orgcode)。至于這些屬性的含義下面會介紹到。圖 2.2.1 典型 Servlet 的 URL 地址圖 2.2.2 是一個典型的 XML 文檔頭,文檔頭的根標簽名是 ufinterface,后面跟著就是各種初始化信息的設置。我們將這些屬性分為三類:必須設置的屬性、根

22、據 Servlet 的 URL 參數設置決定是否必設的屬性和根據需要決定是否設置的屬性。圖 2.2.2 典型 XML 文檔頭【必須設置的屬性必須設置的屬性】:billtype 屬性,這個屬性值決定了這個 XML 文件(文檔)中所有單據的單據類型,信息交換平臺所有的處理都是圍繞單據類型的。sender 屬性,這個屬性值設置的是外系統編碼,指定的是數據的來源系統,即習慣上所說的發(fā)送方?!靖鶕鶕?Servlet 的的 URL 參數設置決定是否必設的屬性參數設置決定是否必設的屬性】:這些屬性其實也是必設屬性,但如果 Servlet 的 URL 參數里面設置了這幾第 7 頁個屬性的話,XML 文檔頭里

23、面可以不設置這幾個屬性值,即使設置了也不會起作用。account 屬性,這個屬性指定要將數據導入至 NC 系統的哪個帳套。groupcode 屬性,這個屬性值指定接收集團的編碼。orgcode 屬性,這個屬性值指定接收組織的編碼。【根據需要決定是否設置的屬性根據需要決定是否設置的屬性】:filename 屬性,在數據導入過程中,對于每張單據我們都可以記錄其原始數據、翻譯后數據,對整個文檔我們也可以記錄其導入后的回執(zhí)信息,這個filename 屬性的值就是用于記錄上述數據文件時的文件名。當然,如果您沒有設置的話,系統會為每個導入的文檔默認生成文件名。isexchange 屬性,這個屬性值決定了在

24、外系統的數據在導入 NC 系統的過程中,是否使用信息交換平臺提供的翻譯轉換和校驗功能。正常情況下應將這個屬性設置為“Y” ,或者干脆不設。除非從其他 NC 系統產生的符合 NC 轉換后標準的 XML 數據直接導入 NC 系統,并且很多基礎檔案數據字段直接用的是PK 值,此時可以設置屬性為“N”和“n” ,可避免無謂的翻譯轉換。replace 屬性,這個屬性值決定是否允許將相同單據往同一個接收方重復導入。V50 版的插件一般允許相同單據重復導入,除了將第一次導入視作新增之外,其余導入視作更新。關于這方面的具體內容請參見 2.6 節(jié)內容。如果不允許相同單據的重復導入,那么將這個屬性值設置為“N”或

25、者“n” 。否則將其設置為“Y”或者干脆不設。operator 屬性, 這個屬性指定當前發(fā)送方對應的 nc 操作員 pk,在手工加載界面會自動使用當前登陸用戶 pk,無需設置。對于外系統發(fā)送到 NC 系統,需要在其發(fā)送 url 里加上對應得 NC 操作員 pk總的來說,XML 文檔頭的【必須設置的屬性】和【根據 Servlet 的 URL 參數設置決定是否必設的屬性】 ,均為在外系統交換文檔發(fā)送過程中必須得到的初始化信息,可以在 Servlet 的 URL 地址參數中設置,也可以在 XML 文檔頭屬性中設置,但必須進行設置。而對于 XML 文檔頭的【根據需要決定是否設置的屬性】 ,也可以在 S

26、ervlet 的 URL 地址的參數中設置,但一般不推薦這么做。3. 向向 NC 系統發(fā)送數據方式系統發(fā)送數據方式NC 信息交換平臺支持客戶端以同步和異步兩種方式發(fā)送(加載)外部數據。其中 NC 信息交換平臺為異步加載方式內置了兩類客戶端:界面和預警,而對于同步加載方式,外系統需要編寫往 NC 后臺 Servlet 發(fā)送文件的代碼,下面分別介紹它們:手動界面發(fā)送 這是外部數據最簡單也最常用的一種客戶端發(fā)送方式,點擊:集成平臺-數據交換管理-手動加載界面,在打開的界面中選擇需要發(fā)送的文件,如有必要,修改目標 URL 地址的 groupcode 參數值,選擇“發(fā)送”菜單即可。詳細內容請參考信息交換

27、平臺的用戶手冊。第 8 頁圖 2.3.1 手動加載界面后臺預警發(fā)送點擊:開發(fā)平臺開發(fā)配置工具后臺任務類型注冊 增加,在彈出的后臺任務類型注冊對話框中配置一個類型為“外部交換數據后臺發(fā)送”的后臺任務條目。第 9 頁圖 2.3.2 后臺任務類型注冊其預警條件的配置如圖 2.3.2 所示。在該預警條件標簽頁中內置了四個預警條件:待發(fā)送文件目錄該預警條件閾值用于設置用戶數據文件目錄(不能為空) ;回執(zhí)目錄該預警條件閾值用于設置存放單據導入之后的回執(zhí)信息的目錄,每張單據一個回執(zhí)文件,如果用戶不設置這個閾值,系統在待發(fā)送文件目錄下默認創(chuàng)建目錄/logdir 作為回執(zhí)目錄;發(fā)送后文件轉移目錄該預警條件閾值對

28、于想將能夠成功加載的文件備份走的用戶有用(一般不用設置) ;發(fā)送配置信息該預警條件閾值是一個可擴展的預警條件閾值,它用于配置將什么樣的文件發(fā)送到哪個 URL 地址(不能為空) 。這個配置值的格式如下:第一部分是單據類型:第二部分是外系統編碼:第三部分是目的 URL 地址:上面所列發(fā)送配置信息項取值的意思就是將單據類型是“Test1” , 外第 10 頁部系統編碼為“1101”的文件發(fā)送到 NC 外部數據接收的 Servlet 地址:urladdress=http:/localhost:80/service/XChangeServlet?account=0001&groupcode=zz

29、。這個地方如果我們將單據類型的取值設為“XX”或“xx”的話,表示任何單據類型的文件都可以往某個地址發(fā)送,相當于通配符的意思,但對于外部系統編碼沒有通配符。后臺任務配置:企業(yè)建模平臺系統平臺后臺任務中心 后臺任務部署中點擊增加按鈕圖 2.3.3 任務條目部署發(fā)送配置信息是一個可擴展的預警條件閾值,其意思就是用戶可以在預警平臺的類型注冊對話框中修改名為“外部交換數據后臺發(fā)送”的預警第 11 頁類型定義,增加作為預警條件的發(fā)送配置信息項,以實現數據文件的多點發(fā)送。點擊:開發(fā)平臺開發(fā)配置工具后臺任務類型注冊選中“外部數據交換后臺發(fā)送”行修改,彈出“類型注冊”對話框,如圖2.3.4 所示,為其增加了一

30、個發(fā)送配置信息閾值項。需要注意的是該新增閾值項的名稱必須以字符串“postconfig”打頭,如“postconfig1” 、“postconfig2” ,等。這樣配置更多的發(fā)送配置信息,使得能有選擇地將某個特殊單據類型特殊外部系統的數據文件能夠發(fā)送到某個指定服務器地址去。圖 2.3.4 后臺任務類型注冊配置完畢,即可由預警平臺調度和執(zhí)行發(fā)送任務。另請注意,在待發(fā)送文件目錄、回執(zhí)目錄和發(fā)送后轉移目錄的設置上本地客戶端和服務器端文件系統的差別,如目錄“c:/aaa”指的是服務器端文件系統路徑而非客戶端文件系統地址。自定義程序發(fā)送以 Java 代碼為例,介紹外系統作為客戶端如何向 NC 系統發(fā)送數

31、據:為簡單起見,以下代碼未處理異常,close 方法也未放入 finally 里,具體寫代碼時請修改。/ 獲取Servlet連接并設置請求的方法第 12 頁String url = 25:8080/service/XChangeServlet;URL realURL = new URL(url);HttpURLConnection connection = (HttpURLConnection)realURL.openConnection();connection.setDoOutput(true);connection.setRequestProperty(Con

32、tent-type, text/xml);connection.setRequestMethod(POST);/ 將Document對象寫入連接的輸出流中File file = new File(C:/samples/psndoc.xml);BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream();BufferedInputStream input = new BufferedInputStream(new FileInputStream(file);int length;byte buff

33、er = new byte1000;while (length = input.read(buffer, 0, 1000) != -1) out.write(buffer, 0, length);input.close();out.close();/ 從連接的輸入流中取得回執(zhí)信息InputStream inputStream = connection.getInputStream();Document resDoc = XMLUtil.getDocumentBuilder().parse(inputStream); / 解析為Doc對象/ 對回執(zhí)結果的后續(xù)處理也可以調用 nc.vo.pfxx.

34、pub.PostFile 來發(fā)送 public static int sendFile(File file, String url, String backdir, String movedir, boolean bcompress) / fileQueue 傳空即可 public static SendResult sendFileWithResults(File file, String url, String backdir, String movedir, boolean bcompress, FileQueue fileQueue) public static String send

35、Document(Document doc, String url,String outputEncoding, boolean bcompress) throws Exceptionpublic static String sendDocument (Document doc, String url, String outputEncoding) throws Exception 說明 關于 XML 操作可以用 XMLUtil 類,關于發(fā)送的 API,如果您的程序可以依賴 uap的 jar 包,也可以直接用 PostFile 類 第 13 頁4. 回執(zhí)及異常出錯信息回執(zhí)及異常出錯信息回執(zhí)格式

36、加載外部系統數據時,對于導入的數據文件中的每張單據,都會給客戶端返回一個回執(zhí)信息,記錄單據導入成功與否,以及失敗的原因?;貓?zhí)信息也是一個 XML 文件,其一般格式如下: 12315601022323 -31202 單據12315601022323開始處理.(1)單據翻譯轉換錯誤:根據基礎檔案部門檔案無法翻譯pk_deptdoc字段,待翻譯值:部門yk,翻譯方式:按名稱., 翻譯參照的公司:yk。(2)單據翻譯轉換錯誤:根據基礎檔案崗位檔案無法翻譯pk_om_job字段,待翻譯值:測試,翻譯方式:按名稱., 翻譯參照的公司:yk。(3)單據翻譯轉換錯誤:根據基礎檔案人員類別無法翻譯pk_psnc

37、l字段,待翻譯值:測試人員yk,翻譯方式:按名稱., 翻譯參照的公司:yk。單據12315601022323處理錯誤:單據翻譯轉換錯誤:單據校驗轉換失敗 部門yk 測試 測試人員yk 圖 2.4.1 回執(zhí)文檔的一般格式回執(zhí)信息中還可以嵌套單據,這個時候可以將信息交換平臺看作簡單的信第 14 頁息中心,外系統發(fā)送過來一個消息,NC 系統回應一個消息。如查詢類的單據,外系統發(fā)送一個表示查詢條件的信息,NC 系統返回所有符合查詢條件的單據,這些單據就是內嵌在回執(zhí)信息中的。再如,用這個功能來實現 NC 系統和外系統在某種程度上的流程集成,外系統發(fā)送一張走流程平臺的單據,然后再由信息交換平臺返回流程平臺

38、處理后得到的單據。 異常和錯誤編碼異常信息對于使用信息交換平臺是極為重要的,有助于實施人員分析數據導入結果,查找數據導入失敗原因。信息交換平臺中的異常分類:環(huán)境初始化異常、單據轉換異常和業(yè)務插件處理異常。這個劃分是基于一個外系統某單據類型的 XML 交換文檔在導入 NC 系統過程中所需處理階段而給出的。如果單據導入失敗,那么在回執(zhí)信息的中會給出發(fā)生了什么異常以及出錯信息。如果需要更詳細的出錯信息,請檢查后臺日志,信息交換平臺對于導入數據過程中發(fā)生的異常,記錄在 nchome/nclogs/server/pfxx-log.log 日志文件中。錯誤編碼則直接定位于發(fā)生錯誤的分類:配置錯誤、數據錯誤

39、、系統錯誤,然后在某種錯誤下再進行細分。這些錯誤信息都通過錯誤編碼的方式在單據導入的回執(zhí)信息的中給出。這些錯誤編碼信息主要是給第三方系統程序內部用于識別數據交換過程中是否出現問題,以及具體出了什么問題,便于程序內進行控制。對于實施人員,如果拿到一份回執(zhí),只需要知道 1 表示正確傳送,其他的代表各種錯誤碼,一般均為負數。對于無法翻譯的文檔,在回執(zhí)中也有具體描述,其中段中部門 yk name 表示改文檔在外系統中對應的文檔名稱(如果 nc 基本檔案資源列表里沒有,則為基礎數據對照表中對應外系統檔案名稱),文本內容為其代翻譯的值。查詢及回執(zhí)格式樣例注冊查詢單據類型第 15 頁生成交換規(guī)則生成樣本文件

40、并保存為文件第 16 頁修改樣例 a a a a a a 2011-07-13 11:37:17 2011-07-13 11:37:17 N第 17 頁 0 0 a a a a a N 0 a a 插件樣例package pfxx.example11;import mon.NCLocator;import nc.bs.logging.Logger;import nc.bs.pfxx.ISwapContext;import nc.itf.uap.bd.accsubj.IAccsubjDataQuery;import nc.itf.uap.pfxx.IPFxxEJBService;import n

41、c.vo.bd.b02.AccsubjVO;import nc.vo.pfxx.auxiliary.AggxsysregisterVO;import nc.vo.pfxx.exception.PfxxPluginException;import nc.vo.pfxx.util.PfxxPluginUtils;import nc.vo.pfxx.util.PfxxUtils;import nc.vo.pub.BusinessException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Nod

42、eList;第 18 頁/* * 在此處簡要描述此類的功能 * * * 在此處添加此類的描述信息 * * * Create on 2006-4-6 16:00:51 * * author ufsoft * version Your Project Ver5.0 since V5 */public class QueryPlugin extends nc.bs.pfxx.plugin.AbstractPfxxPlugin /* * 將由XML轉換過來的VO導入NC系統。業(yè)務插件實現此方法即可。 * 請注意,業(yè)務方法的校驗一定要充分 * * param vo * 轉換后的vo數據,在NC系統中可能

43、為ValueObject,SuperVO,AggregatedValueObject,IExAggVO等 * 。 * param swapContext * 各種交換參數,公司,帳簿,接受方,發(fā)送方,主體帳簿等等 * param aggvo * 輔助信息vo * return * throws BusinessException * date 2006-1-11 */protected Object processBill(Object vo, ISwapContext swapContext, AggxsysregisterVO aggvo) throws BusinessException

44、 / 1.得到轉換后的VO數據,取決于向導第一步注冊的VO信息CommonQueryVO resvo = (CommonQueryVO) vo;KeyValueVO keyValueVOs = resvo.getConditions();int n = keyValueVOs.length;String keys = new Stringn;for (int i = 0; i n; i+) keysi = keyValueVOsi.getValue();/ 2.查詢此單據是否已經被導入過,有三個方法,具體使用哪一個請參考方法說明javadoc第 19 頁/ 1) String vopk = P

45、fxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo);/ 2) String vopk =/ PfxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo,resvo.getPk_corp);/ 3) String vopk =/ PfxxPluginUtils.queryBillPKBeforeSaveOrUpdate(ufvo,resvo/ .getPk_corp(),resvo.getPk_glogBook();/ 3. 如果單據設置有輔助信息,xsysvo為用戶配置的具體輔助信息/ 4.如果此單據沒

46、有導入過,那么準備保存新單據,保存單據前請進行必要的數據檢查,并給出明確的業(yè)務異常./ TODO/L(如果此單據沒有導入過,保存新單據.);/ 5.如果此單據已經導入過,請調用PfxxPluginUtils.checkBillCanBeUpdate(UfinterfaceVO/ ufvo)檢查單據是否允許更新/ 如果不允許更新,此方法會拋出業(yè)務異常/ TODO/L(如果單據已經導入過則進行單據更新.);/ !測試轉換后的單據數據,正式代碼里請刪除/ Document doc = XMLUtil.getNewDocument();/ new com.tho

47、ughtworks.xstream.XStream().toXML(resvo,doc);/ try/ / FileUtils.writeDocToXMLFile(doc,/ PfxxServerSidePathVocabulary.EXPORTBILLS_PATH+/ test/nc/uap/pfxx/kjkm/QueryPlugin.xml);/ catch (java.io.IOException e)/ / e.printStackTrace();/ / !測試代碼結束/ !查詢NC數據,通過回執(zhí)返回到外系統示例代碼開始Document resdoc = null;/* 獲取導出服務

48、*/IPFxxEJBService runner = PfxxUtils.lookUpPFxxEJBService();try /* 查詢需要導出的VO,這里查全部,實際應用應該通過XML傳遞條件過來進行查詢 */第 20 頁IAccsubjDataQuery queryService = NCLocator.getInstance().lookup(IAccsubjDataQuery.class);AccsubjVO vos = queryService.queryAccsubjVosByPks(keys);/ Collection col = (new/ nc.bs.dao.BaseDAO

49、().retrieveByClause(CommonQueryVO.class,1=1);/* 實例代碼僅演示ValueObject,如果是AGGVO請修改 */resdoc = runner.exportBills(vos, swapContext.getAccount(), bsaccsubj, swapContext.getOrgPk(), swapContext.getSender(), null);/get ids from document and insert to dbString docids = new Stringvos.length;NodeList basdocLis

50、t=resdoc.getDocumentElement().getElementsByTagName(basdoc);int total=basdocList.getLength();for(int i=0;itotal;i+)Element node=(Element)basdocList.item(i);docidsi=node.getAttribute(id);for (int i = 0; i docids.length; i+) PfxxPluginUtils.addDocIDVsPKContrast(bsaccsubj,docidsi, swapContext.getOrgPk()

51、, vosi.getPk_accsubj();/StringBuffer sbRet=new StringBuffer();/XMLUtil.writeXMLFormatString(sbRet, resdoc, 0);/System.out.println(); catch (Exception e) Logger.error(導出單據失敗, e);throw new PfxxPluginException(this.getClass().getName(), 導出單據失敗: + e.getMessage();/ !查詢NC數據,通過回執(zhí)返回到外系統示例代碼結束/ 6.如果希望單據將來可以更

52、新,請調用下列接口插入文檔流水號與生成PK的對照關系/ 第2步查詢對照關系相對應,也有三個方法,具體請看javadoc/ 1)PfxxPluginUtils.addDocIDVsPKContrast(ufvo,pk);/ 2)PfxxPluginUtils.addDocIDVsPKContrast(ufvo,resvo.getPk_corp,pk);/ 3)PfxxPluginUtils.addDocIDVsPKContrast(ufvo,resvo.getPk_corp(),resvo.第 21 頁/ getPk_glogBook(),pk);/ 7.準備返回值,此函數的返回值,最終會以字符

53、串的形式返回給外系統,/ 對于普通單據可以返回NC系統生成的PK值,對于憑證可能返回憑證號,具體視單據而定/ 對于查詢插件要求返回org.w3c.dom.Node數組 或者org.w3c.dom.Nodereturn resdoc;回執(zhí)結果 CORPe40702bkjkmquery kjkm1e9a8164U860.xml 1 單據CORPe40702bkjkmquery開始處理.單據CORPe40702bkjkmquery處理完畢! N True 01 2007 Y 0 01 2007 0001 N N 人民幣 應收利息 第 22 頁 N N N 000111100000000009RI 0

54、001 資產 第 23 頁 false 1132 應收利息 false false false 客商輔助核算 true 1 1-0002 5. 信息交換平臺總體參數設置信息交換平臺總體參數設置點擊:集成平臺-數據交換管理-交換平臺日志-參數設置,在交換平臺日志界面打開參數設置對話框,如圖 2.5.1 所示。在這個對話框中,可以設置在外部數據導入過程中起到相當作用的參數,您可以根據需要對這些參數的設置進行改動。設置的參數值實時生效,不用重起后臺服務器。第 24 頁圖 2.5.1 總體參數設置下面我們來介紹這些參數的功能及需要注意的地方:外部系統默認帳套將某個外系統數據文檔導入到哪個帳套是由 Se

55、rvlet 的 URL 地址的 account參數或者文檔根屬性 account 決定的,但是如果這兩個地方都沒有申明這個值,那么系統就將外部數據導入至這個參數設置的帳套中。系統默認沒有設置這個屬性,但打開對話框就會顯示當前系統所有帳套編碼。單篇最大傳輸上限對于要導入的單篇文檔或者單個文件來說,其大小是受服務器端系統性能影響的。系統默認單篇最大傳輸上限是 1024KB,這個大小一般系統的存儲器第 25 頁都能夠滿足。如果用戶導入的文件大于設置的值,回執(zhí)文件就會提示“文件長度超過設定長度”的錯誤。因此,用戶可以根據需要,如待導入文件的大小和機器性能調整這個值,目前在界面可設置最大值為 10M;該

56、值不建議設置過大,在 5000KB 以下,以便得到較好的傳輸性能。如確實需要傳輸超過 10M 文件,請自行在應用服務器上修改 NCHOME/pfxx/globalset.xml 中 max-transfer-size 的值,并考慮 OutOfMemory 的風險。導入過程是否記錄中間文件這個參數主要用于控制所導入文檔的每張單據是否在服務器本地做備份記錄,主要做兩次備份,分別是原始單據備份和轉換翻譯后單據的備份,前者備份至目錄 NC_HOME/pfxx/pfxxtemp/indocs/下,后者備份至目錄NC_HOME/pfxx/pfxxtemp/translated/下。這些信息在找錯排錯中是非

57、常有用的,比如發(fā)生找不到某個字段元素的錯誤,它可能是交換規(guī)則定義錯誤引起,也可能是外系統數據格式錯誤引起,這個時候將備份的導入原始單據和轉換后的單據做一個對比,便可以很快定位問題。系統默認是勾選“導入過程是否記錄中間文件” ?;貓?zhí)文件后臺備份對于導入的每一張單據,信息交換平臺都會給客戶端或者發(fā)送方一個回執(zhí)信息即一個 XML 格式的回執(zhí)文檔。如果您使用的數據發(fā)送方式是手動界面發(fā)送或者后臺預警發(fā)送的話,回執(zhí)信息都會以文件的形式保存到指定目錄下,但是如果通過自定義程序實時發(fā)送數據的話,當出現傳輸異常時就需要在后臺備份一下單據的每個回執(zhí)文件,目的就是檢查返回給發(fā)送方的數據是否正確?;貓?zhí)文件后臺備份這個

58、參數就是用于控制是否后臺備份這個文件,系統默認不進行備份?;貓?zhí)和導出文件編碼格式這也是一個便利工具,目的就是使得信息交換平臺導出的 XML 數據文件或者單據回執(zhí)文件的編碼格式可配置。如果與 NC 系統交互的第三方系統只能處理 gb2312 編碼格式的文件,經過配置之后就可以相當方便的達到目的,只是此時如果回執(zhí)信息包含非 gb2312 編碼字符,則可能顯示不正常。系統默認回執(zhí)和導出文件的編碼格式是 UTF-8,信息交換平臺同時支持 UTF-8 和 gb2312 格式文件的導入。第 26 頁單據導入規(guī)則設置 信息交換平臺以交換文檔中的單據為單位,支持非獨立事務和獨立事務兩種導入方式,即同一 XML

59、 文檔對象中的所有單據批量處理和同一 XML 文檔對象中的每張單據單獨處理。例如,一個憑證類型的 XML 文檔由一百張憑證組成,如果將交換平臺總體參數的單據導入規(guī)則設置為“同一文檔里的所有單據批量處理”的話,那么如果在導入這個文檔的過程中有任何一張憑證發(fā)生錯誤,將導致所有的這一百張憑證導入失敗,但是如果單據導入規(guī)則設置為“同一文檔里的每張單據獨立處理”的話,那么即使這一百張憑證里有些憑證在導入過程中失敗了,也不會影響到其余單據的成功導入。通俗一點的說話就是,非獨立事務就是文檔中的所有單據要么一塊兒成功,要么一塊兒失敗,而獨立事務就是文檔中的每張單據的成功導入與否不會受其他單據導入成功與否的影響

60、,當然如果從文檔中導入的單據有先后順序的話,選擇獨立事務可能也就起不到作用了。系統默認的單據導入方式是“同一文檔里的所有單據批量處理” 。設置客戶端 IP 范圍這個參數屬于信息交換平臺安全性方面的設置。我們在這里設置允許向NC 系統發(fā)送數據文件的地址范圍,這樣我們可以確保與合法的外部系統進行數據集成。如,假設目前我們只允許地址為 55 和 33 兩個 IP 地址的客戶端發(fā)送數據,那么我們就啟用這個屬性設置,并將這兩個 IP 地址輸入至其輸入框中,中間使用;號隔開。設置完這個屬性之后,我們再去利用這兩個之外的 IP 地址的客戶端發(fā)送外系統數據的話,回執(zhí)文件就會提示“發(fā)送方地址不合法!”

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論