NC客戶化開發(fā)全書(第三版)-nc56_第1頁
NC客戶化開發(fā)全書(第三版)-nc56_第2頁
NC客戶化開發(fā)全書(第三版)-nc56_第3頁
NC客戶化開發(fā)全書(第三版)-nc56_第4頁
NC客戶化開發(fā)全書(第三版)-nc56_第5頁
已閱讀5頁,還剩217頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

用友集團(tuán)ERP客戶化開發(fā)系列叢書目錄TOC\o"1-4"\h\z\u第一篇入門篇 71. 搭建NC環(huán)境 71.1. 內(nèi)容概述 71.2. 詳細(xì)介紹 81.2.1. 建立數(shù)據(jù)庫 81.2.2. 安裝NC 81.2.3. 配置啟動NC 121.2.4. Eclipse中建立NC開發(fā)環(huán)境 161.2.5. 產(chǎn)品參數(shù),檔案初始化 221.2.6. 權(quán)限管理 251.2.7. 產(chǎn)品主要目錄結(jié)構(gòu)介紹 272. NC基礎(chǔ)技術(shù) 282.1. 內(nèi)容概述 282.2. 詳細(xì)介紹 282.2.1. NC開發(fā)基本概念 282.2.2. NCUAP總體介紹 302.2.3. NC的開發(fā)模型 352.2.4. 開發(fā)遠(yuǎn)程接口 37. 定義接口 37. 實(shí)現(xiàn)該接口 37. 部署組件 37. 客戶端調(diào)用 38. 事務(wù)型組件發(fā)布 38. 客戶端代碼 403. NC數(shù)據(jù)庫持久化技術(shù) 413.1. 內(nèi)容概述 413.2. 詳細(xì)介紹 423.2.1. 核心類介紹 423.2.2. 通過JDBCFrameWork訪問數(shù)據(jù)庫 423.2.3. 通過BaseDao進(jìn)行對象的持久化 443.2.4. 結(jié)果集合操作 453.2.5. 結(jié)果集控制 46第二篇中級篇 484. 元數(shù)據(jù)建模 484.1. 內(nèi)容概述 484.2. 詳細(xì)介紹 484.2.1. 新建元數(shù)據(jù)模型 484.2.2. 建立模型文件 494.2.3. 建立數(shù)據(jù)實(shí)體 494.2.4. 發(fā)布元數(shù)據(jù) 594.2.5. 導(dǎo)出JAVA源代碼 604.2.6. 生成SQL腳本并執(zhí)行 604.2.7. 最終成果 615. 功能建模 625.1. 內(nèi)容概述 625.2. 詳細(xì)介紹 625.2.1. 進(jìn)入Workshop 625.2.2. 表單開發(fā)流程導(dǎo)航工具 65. 新建業(yè)務(wù)組件 65. 公共信息設(shè)置 66. 單據(jù)模板設(shè)置 66. 查詢模板設(shè)置 69. 配置打印模板 70. 建立單據(jù)類型 71. 單據(jù)動作編輯 71. 單據(jù)動作腳本設(shè)置 73. 單據(jù)VO交換 730. 單據(jù)號設(shè)置 741. 自定義按鈕設(shè)置 752. UI組裝 753. 發(fā)布UI 764. 生成代碼到本地 765.2.3. 權(quán)限分配 786. 單據(jù)開發(fā)技術(shù) 786.1. 內(nèi)容概述 786.2. 詳細(xì)介紹 786.2.1. UI工廠 78. UI工廠結(jié)構(gòu)圖 79. UI工廠最基礎(chǔ)類說明 79. 單據(jù)模型介紹 81. 界面加載 81. 事件處理 826.2.2. 參照開發(fā) 83. 參照的類結(jié)構(gòu)圖 83. 自定義參照開發(fā)規(guī)范 83. UIRefPane和refModle設(shè)置 866.2.3. 單據(jù)號 87. 單據(jù)號規(guī)則 87. 接口方法 896.2.4. 公式 91. 常用公式 91. 創(chuàng)建公式執(zhí)行器 92. 設(shè)置公式執(zhí)行器環(huán)境 93. 設(shè)置公式的值 93. 對公式進(jìn)行語法檢查 94. 提取公式變量 95. 給公式變量賦值 95. 取公式的值 966.2.5. 鎖 966.2.6. 日志 98. 日志API的選擇 99. 日志級別的選擇 1006.2.7. 異常 100第三篇高級篇 1017. 流程平臺 1027.1. 內(nèi)容概述 1027.2. 詳細(xì)介紹 1027.2.1. 流程平臺介紹 1027.2.2. 業(yè)務(wù)流程 104. 建立數(shù)據(jù)交換 104. 建立業(yè)務(wù)類型 109. 單據(jù)動作配置(推式流程配置) 109. 流程配置 110. 單據(jù)來源配置(拉式流程配置) 110. 動作約束配置 112. 動作事件控制配置 113. 動作驅(qū)動配置(推式流程配置) 114. 其他工作 1150. 推式流程過程 1161. 拉式單據(jù)過程(單據(jù)的上下游參照) 1167.2.3. 審批流 118. 審批流定義 118. 流程模型 120. 消息配置(MessageConfig) 121. 工作項(xiàng)的審批結(jié)果 122. 相關(guān)平臺類介紹 123. 動作處理時序圖 124. UI端調(diào)用-PfUtilClient 1241. 判斷是否進(jìn)行動作前提示 125. BS端調(diào)用 1251. 單據(jù)動作處理 1257.2.4. 消息中心 130. 展現(xiàn)樣式 131. 消息類型 1338. 查詢引擎 1348.1. 內(nèi)容概述 1348.2. 詳細(xì)介紹 1348.2.1. 進(jìn)入查詢引擎管理頁面 1348.2.2. 創(chuàng)建查詢對象 1348.2.3. 設(shè)置報(bào)表參數(shù) 1358.2.4. 制作查詢定義 1368.2.5. 查詢格式設(shè)計(jì) 1389. 預(yù)警平臺 1419.1. 內(nèi)容概述 1419.2. 詳細(xì)介紹 1419.2.1. 預(yù)警類型注冊 1419.2.2. 預(yù)警條目注冊 14310. 交換平臺 14810.1. 內(nèi)容概述 14810.2. 詳細(xì)介紹 14810.2.1. 交換平臺使用 148. 注冊外部系統(tǒng) 149. 準(zhǔn)備外系統(tǒng)數(shù)據(jù) 150. 配置輔助信息(可選) 151. 設(shè)置基礎(chǔ)數(shù)據(jù)對照(可選) 151. 配置Servlet的URL地址 152. 利用客戶端發(fā)送數(shù)據(jù) 15211. 會計(jì)平臺 15411.1. 內(nèi)容概述 15411.2. 詳細(xì)介紹 15511.2.1. 會計(jì)平臺注冊 15611.2.2. 代碼調(diào)用 16012. 單點(diǎn)登陸 16212.1. 內(nèi)容概述 16212.2. 詳細(xì)介紹 16312.2.1. 單點(diǎn)登陸 16312.2.2. 打開代辦事項(xiàng) 16513. NC開發(fā)webservice 16713.1. 內(nèi)容概述 16713.2. 詳細(xì)介紹 16713.2.1. 發(fā)布服務(wù) 167. 創(chuàng)建WSDL文件 168. 創(chuàng)建XSD文件 169. 配置UPM文件 17013.2.2. 客戶端調(diào)用 176. 創(chuàng)建相關(guān)JAVA類文件 176. 創(chuàng)建JAVA接口 177. 測試用例 178第四篇附錄 18214. XML和EXCEL 18214.1. 內(nèi)容概述 18214.2. 詳細(xì)介紹 18214.2.1. 利用XmlUtils讀取XML 18214.2.2. Excel文件讀寫 18815. 多語言 18915.1. 內(nèi)容概述 18915.2. 詳細(xì)介紹 18915.2.1. 生成資源文件 19015.2.2. 代碼調(diào)用 19016. 補(bǔ)丁與安裝盤 19116.1. 內(nèi)容概述 19116.2. 詳細(xì)介紹 19116.2.1. 安裝盤結(jié)構(gòu) 19116.2.2. 產(chǎn)品結(jié)構(gòu) 19116.2.3. 模塊結(jié)構(gòu) 19216.2.4. 制作補(bǔ)丁 19417. 設(shè)計(jì)開發(fā)規(guī)范 19717.1. 內(nèi)容概述 19717.2. 詳細(xì)介紹 19717.2.1. SQL規(guī)范 197. 概述 197. 書寫風(fēng)格 197. 性能優(yōu)化 198. 四、多數(shù)據(jù)庫的考慮 19917.2.2. JAVA開發(fā)規(guī)范 201. 文件 201. 命名規(guī)則 202. 注釋規(guī)范 206. 編碼規(guī)范 21118. 開發(fā)常見問題與技巧 21518.1. 內(nèi)容概述 21518.2. 詳細(xì)介紹 21518.2.1. 環(huán)境變量類nc.ui.pub.ClientEnvironment 21518.2.2. UAP發(fā)送待辦消息方法 21718.2.3. 模板中下拉框的值 21818.2.4. 數(shù)據(jù)權(quán)限過濾 21819. 技術(shù)紅皮書 22119.1. 內(nèi)容概述 22119.2. 詳細(xì)介紹 22119.2.1. 技術(shù)紅皮書目錄 221第一篇入門篇?dú)g迎您成為用友NC開發(fā)隊(duì)伍中的一員!如果您從未接觸過NC的開發(fā),本篇將從NC產(chǎn)品使用開始,循序漸進(jìn)的帶您步入精彩的NC產(chǎn)品世界.本學(xué)時教程是在完成NC產(chǎn)品使用入門閱讀的最佳起點(diǎn)。在開始學(xué)習(xí)之前,您需要掌握以下基本技能:Eclipse使用JAVA和J2EE基礎(chǔ)知識本學(xué)時教程中將會講述以下內(nèi)容:NC產(chǎn)品入門,本章旨在為那些對NC尚不了解的新進(jìn)人員就NC的大體形態(tài)做個簡單的講解,以便對NC產(chǎn)品有個簡單的認(rèn)識,并學(xué)習(xí)到與NC產(chǎn)品二次開發(fā)有關(guān)的產(chǎn)品操作技術(shù)入門知識。開發(fā)環(huán)境的安裝和搭建,本章是為第一次使用NC的人員做準(zhǔn)備,達(dá)到迅速的安裝和搭建NC環(huán)境。NC技術(shù)框架簡介,本章您將會學(xué)習(xí)NC技術(shù)框架理論概念,通過學(xué)習(xí)范例代碼掌握VO\BO\遠(yuǎn)程接口的概念。NC56的數(shù)據(jù)建模,介紹如何基于元數(shù)據(jù)進(jìn)行業(yè)務(wù)建模,以及如何在運(yùn)行時對元數(shù)據(jù)進(jìn)行管理。搭建NC環(huán)境內(nèi)容概述第一次在NC環(huán)境中做開發(fā),需要首先建立一個數(shù)據(jù)庫環(huán)境,這個數(shù)據(jù)庫環(huán)境中指定了NC所要使用的表空間,并預(yù)先建立了NC的系統(tǒng)表、視圖、索引等,并預(yù)置了大量的初始化數(shù)據(jù)。然后,在Eclipse中建立一個開發(fā)項(xiàng)目,引用UAP的jar包即可。經(jīng)過這兩步,就完成了NC開發(fā)環(huán)境的建立。NC環(huán)境安裝完成后還需要對系統(tǒng)進(jìn)行初始化,包括參數(shù),組織結(jié)構(gòu),權(quán)限,基本檔案的建立,這樣一個系統(tǒng)才算真正可以使用。詳細(xì)介紹建立數(shù)據(jù)庫在數(shù)據(jù)庫服務(wù)器(Oracle,MSSQLServer,DB2)中新建一個空數(shù)據(jù)庫,并執(zhí)行數(shù)據(jù)庫腳本建立NC需要的表空間,不同的數(shù)據(jù)庫使用的腳本不一樣(正式安裝盤下有安裝說明),以O(shè)racle為例:其數(shù)據(jù)文件存放在D:\sql\data下,那么數(shù)據(jù)庫腳本為:CREATETABLESPACENNC_DATA01DATAFILE'D:\sql\data\nnc_data01.dbf'SIZE500MAUTOEXTENDONNEXT50MEXTENTMANAGEMENTLOCALUNIFORMSIZE256K;CREATETABLESPACENNC_DATA01DATAFILE'D:\sql\data\nnc_data01.dbf'SIZE500MAUTOEXTENDONNEXT50MEXTENTMANAGEMENTLOCALUNIFORMSIZE256K;CREATETABLESPACENNC_DATA02DATAFILE'D:\sql\data\nnc_data02.dbf'SIZE300MAUTOEXTENDONNEXT50MEXTENTMANAGEMENTLOCALUNIFORMSIZE256K;CREATETABLESPACENNC_DATA03DATAFILE'D:\sql\data\nnc_data03.dbf'SIZE500MAUTOEXTENDONNEXT100MEXTENTMANAGEMENTLOCALUNIFORMSIZE512K;CREATETABLESPACENNC_INDEX01DATAFILE'D:\sql\data\nnc_index01.dbf'SIZE500MAUTOEXTENDONNEXT50MEXTENTMANAGEMENTLOCALUNIFORMSIZE128K;CREATETABLESPACENNC_INDEX02DATAFILE'D:\sql\data\nnc_index02.dbf'SIZE300MAUTOEXTENDONNEXT50MEXTENTMANAGEMENTLOCALUNIFORMSIZE128K;CREATETABLESPACENNC_INDEX03DATAFILE'D:\sql\data\nnc_index03.dbf'SIZE500MAUTOEXTENDONNEXT100MEXTENTMANAGEMENTLOCALUNIFORMSIZE256K;CREATEUSERNC50IDENTIFIEDBYNC50DEFAULTTABLESPACENNC_DATA01TEMPORARYTABLESPACEtemp;GRANTconnect,dbatoNC50;安裝NC該步驟的目的是建立NC測試服務(wù)器,并利用它建表,并初始化數(shù)據(jù)表。運(yùn)行NC56標(biāo)準(zhǔn)金盤中UAP模塊下的ncsetup.bat文件,進(jìn)入安裝向?qū)В狐c(diǎn)擊【下一步】按鈕,進(jìn)入版權(quán)申請頁面:選擇同意后,點(diǎn)擊【下一步】按鈕,進(jìn)入選擇安裝目錄頁面:目錄設(shè)置完成后,點(diǎn)擊【下一步】按鈕,進(jìn)入選擇安裝產(chǎn)品頁面:選擇客戶化模塊后,會將下面所有的功能都選擇上,點(diǎn)擊【下一步】按鈕,進(jìn)入安裝頁面后,點(diǎn)擊【開始安裝】按鈕后進(jìn)行產(chǎn)品的安裝:選擇第三方中間件,如果沒有則默認(rèn)使用NC自帶中間件,直接點(diǎn)擊【下一步】按鈕:點(diǎn)擊【完成】按鈕,完成安裝:執(zhí)行完此向?qū)Ш?,可以在你指定的NC_HOME目錄中創(chuàng)建NC服務(wù)器端環(huán)境,如下圖:配置啟動NC1)在NC_HOME\BIN目錄下運(yùn)行ncSysConfig.bat,首先需要建立數(shù)據(jù)源。2)修改服務(wù)器端口,可以在server頁簽修改web服務(wù)器的端口3)下面啟動NC自帶的中間件,方法是在上面的NC_HOME目錄中雙擊startup.bat,中間件即可啟動,啟動界面如下:4)利用InternetExplore作為客戶端登陸,在地址欄輸入/login.jsp,即可看到下面的界面:輸入用戶名root,密碼為空,登陸到系統(tǒng)管理帳套中 5)帳套管理里面新建帳套,用戶。前面建立了NC要使用的數(shù)據(jù)庫,并為數(shù)據(jù)庫設(shè)置了表空間信息,但這還不夠,還必須為其安裝NC的系統(tǒng)數(shù)據(jù)表和初始化數(shù)據(jù)。方法是點(diǎn)擊上面帳套管理頁面的“升級帳套”按鈕,開始進(jìn)行數(shù)據(jù)表的建立和初始化,如下圖:然后開始初始化:至此,NC數(shù)據(jù)環(huán)境已準(zhǔn)備好。注銷后再登陸到”學(xué)習(xí)帳套”,即進(jìn)入了真正的NC系統(tǒng),如下所示:Eclipse中建立NC開發(fā)環(huán)境在上一個步驟中,演示了怎么搭建NC的數(shù)據(jù)環(huán)境和測試環(huán)境,但作為開發(fā)人員,日常的工作都是在Eclipse開發(fā)環(huán)境中進(jìn)行。在Eclipse中建立開發(fā)環(huán)境分下面幾個步驟:1.在Eclipse插件中加入NC開發(fā)所需的MDE插件(nc.uap.mde.editor_1.0.1.jar和nc.uap.mde_1.0.2.jar),這些插件可以在相關(guān)工具\(yùn)Eclipse_NC插件中找到,拷貝到eclipse安裝路徑下的plugins目錄下即可。2.取得NC_HOME,NC_HOME包含了開發(fā)環(huán)境所需的所有jar包,NC_HONE就是安裝完NC產(chǎn)品的主目錄。通過Preferences中MDEDevelopment中設(shè)置NCHome。還可以設(shè)置數(shù)據(jù)源,模塊選擇。3.打開Eclipse,點(diǎn)擊菜單“新建/項(xiàng)目”,彈出下面的對話框:選擇MDEDevelopment下的MoudleProject即可。4.點(diǎn)擊下一步,開始創(chuàng)建MoudleProject,在下面的對話框中填入信息:5.點(diǎn)擊完成后,會創(chuàng)建項(xiàng)目,形成下圖所示的目錄結(jié)構(gòu):6.至此,開發(fā)環(huán)境已建立完畢。在開發(fā)環(huán)境中調(diào)試程序,一般需要首先啟動NC中間件,然后啟動UAP客戶端調(diào)試器。下面我們在eclipse調(diào)試器中建立這兩個程序:建立中間件調(diào)試啟動點(diǎn),方法是在調(diào)試點(diǎn)管理界面左邊列表的ModuleApplication下新建一個調(diào)試點(diǎn),MDE插件會為它設(shè)置默認(rèn)參數(shù),我們只需改變一下調(diào)試點(diǎn)名稱,如下所示:programarguments設(shè)置如下:${FIELD_NC_HOME}/ierp/bin/prop.xml-Dnc.server.location=${FIELD_NC_HOME}-DEJBConfigDir=${FIELD_NC_HOME}/ejbXMLs-DExtServiceConfigDir=${FIELD_NC_HOME}/ejbXMLsVMarguments設(shè)置如下:-Dnc.server.location=${FIELD_NC_HOME}-DEJBConfigDir=${FIELD_NC_HOME}/ejbXMLs-DExtServiceConfigDir=${FIELD_NC_HOME}/ejbXMLsWorkingdirectory選擇Other內(nèi)容為${FIELD_NC_HOME}啟動中間件快捷方式是在工程點(diǎn)擊右鍵,在runas出點(diǎn)擊NCMilldeware就可以。建立UAP客戶端調(diào)試器啟動點(diǎn),該調(diào)試器的入口類是nc.starter.test.Jstarter,因此可以新建一個JavaApplication類型的調(diào)試點(diǎn),輸入入口類,如下所示:在設(shè)立這兩個調(diào)試點(diǎn)之后,要注意兩個問題:一是你的項(xiàng)目所使用的JRE的安全策略必須是:grant{grant{ permissionjava.security.AllPermission;};這可以通過修改{$JRE根目錄}/jre/lib下的java.policy文件來實(shí)現(xiàn),否則在啟動中間件時會出現(xiàn)java.security.AccessControlException;二是要成功運(yùn)行UAP客戶端調(diào)試器(JStarter),必須將jre/lib下的plugin.jar,Tools.jar也加入到項(xiàng)目默認(rèn)的JRE的classpath中,如下所示:此時即可先啟動中間件,再啟動客戶端調(diào)試環(huán)境。即可進(jìn)入NC登陸界面,如下所示:至此,NC的環(huán)境完全建立起來。產(chǎn)品參數(shù),檔案初始化利用NC-UAP進(jìn)行開發(fā)的時候并不是做一個單據(jù),報(bào)表就可以運(yùn)行的,NC作為一個ERP軟件,需要對系統(tǒng)進(jìn)行一些初始化才可以正常運(yùn)行,主要是對組織機(jī)構(gòu),人員,權(quán)限,會計(jì)期間,參數(shù),檔案的初始化。(本節(jié)只對這些設(shè)置進(jìn)行簡單描述,詳細(xì)介紹可參考相應(yīng)產(chǎn)品手冊,比如基本檔案,權(quán)限手冊)參數(shù)在NC管理軟件中,參數(shù)設(shè)置平臺管理系統(tǒng)所有的參數(shù),并對參數(shù)按實(shí)際需要進(jìn)行逐級分配,實(shí)現(xiàn)既能統(tǒng)一控制,又能滿足單位靈活運(yùn)用。參數(shù)包括公共參數(shù)和業(yè)務(wù)參數(shù),以集團(tuán)進(jìn)入還是以公司進(jìn)入看到的參數(shù)設(shè)置界面內(nèi)容是不同的。主菜單中雙擊【客戶化】-【參數(shù)設(shè)置】:必須設(shè)置的參數(shù)是集團(tuán)本位幣。幣種對于全集團(tuán)用到的幣種在本功能中進(jìn)行設(shè)置??偣净蛏霞墕挝淮_定集團(tuán)公司或所屬下級單位使用的全部幣種,包括本位幣。幣種設(shè)置完成后,集團(tuán)公司所有內(nèi)部單位還需在各自單位賬中錄入相應(yīng)的主輔幣信息及匯率信息,待這些信息錄入完畢后,方能在日常業(yè)務(wù)使用的這些幣種。在主菜單中雙擊【客戶化】-【基礎(chǔ)數(shù)據(jù)】-【幣種】,系統(tǒng)將彈出界面。屬于集團(tuán)檔案會計(jì)期間方案和會計(jì)期間會計(jì)期間方案用來定義賬套擁有的會計(jì)期間數(shù)目,然后為每個期間方案定義一套會計(jì)期間。在主菜單中雙擊【客戶化】-【基礎(chǔ)設(shè)置】-【會計(jì)期間】會計(jì)期間節(jié)點(diǎn)用來定義賬套的會計(jì)月度和會計(jì)季度。啟用多賬簿的情況下會計(jì)期間按照會計(jì)期間方案分別進(jìn)行設(shè)置。公司目錄公司目錄用于定義集團(tuán)公司所有公司的基本信息、聯(lián)系信息,包括公司編號、名稱、聯(lián)系方式等相關(guān)信息,并確定分子公司之間的關(guān)系。以公司身份登陸后,只能查詢。在主菜單中雙擊【客戶化】-【基礎(chǔ)數(shù)據(jù)】-【公司目錄】建公司帳新建公司賬是為已經(jīng)存在公司目錄中的公司建賬、增補(bǔ)系統(tǒng)模塊,以便初始化業(yè)務(wù)數(shù)據(jù)及業(yè)務(wù)參數(shù),已建賬的公司才能處理有關(guān)業(yè)務(wù)。新建公司賬還可為已建賬公司增補(bǔ)功能節(jié)點(diǎn)。在主菜單中雙擊【客戶化】-【建公司賬】-【新建公司賬】基本檔案在基本檔案節(jié)點(diǎn)為集團(tuán)和公司建立基本信息,以便于業(yè)務(wù)系統(tǒng)使用,包括部門、人員、庫存、自定義項(xiàng)、組織機(jī)構(gòu)、財(cái)務(wù)信息、業(yè)務(wù)信息、制造信息等等。除少數(shù)幾個檔案只能在集團(tuán)增加外,其他檔案受集團(tuán)參數(shù)設(shè)置節(jié)點(diǎn)的【客戶化】中的【基本檔案】參數(shù)決定,為“是”公司和集團(tuán)均可增加檔案內(nèi)容,為“否”則公司不能增加。常見的檔案添加比如:部門檔案在公司增加,人員類別在集團(tuán),人員檔案在公司。具體檔案初始化參考基本檔案產(chǎn)品手冊,不一一介紹。權(quán)限管理NCV5.0權(quán)限管理與之前版本最大的區(qū)別在于在權(quán)限管理中引入了“角色”概念。先規(guī)劃好各種角色并分配權(quán)限,再將用戶與角色關(guān)聯(lián)起來,將角色作為橋梁把“用戶”和“權(quán)限”連接起來。換句話說就是:通過規(guī)劃好各種角色先將用戶分類,再為各類用戶分配權(quán)限。資源權(quán)限控制界面用來為當(dāng)前登錄公司以及當(dāng)前登錄公司的下屬公司啟用按鈕權(quán)限控制和數(shù)據(jù)權(quán)限控制。NC系統(tǒng)中的權(quán)限由三個部分構(gòu)成,分別為功能權(quán)限、數(shù)據(jù)權(quán)限和按鈕權(quán)限。功能權(quán)限是指節(jié)點(diǎn)的查看和打開的權(quán)限;數(shù)據(jù)權(quán)限是指檔案的參照權(quán)限,而按鈕權(quán)限是只指各個界面上按鈕的查看和使用權(quán)限。如果不啟用權(quán)限控制,則不需要分配權(quán)限,系統(tǒng)默認(rèn)角色具有所有權(quán)限;啟用權(quán)限控制后,可以為具體的角色分配具體的權(quán)限。NCV5.0系統(tǒng)默認(rèn)啟用了功能權(quán)限控制,且該設(shè)置不可修改;數(shù)據(jù)權(quán)限和按鈕權(quán)限的權(quán)限控制默認(rèn)為不啟用狀態(tài),但可在本界面對設(shè)置進(jìn)行修改。在用戶管理界面可以為當(dāng)前登錄公司以及當(dāng)前登錄公司的下級公司增加用戶,還可以為在這些公司創(chuàng)建的用戶委派角色。用戶必須被委托角色才有相應(yīng)權(quán)限角色管理的界面如圖所示。角色管理節(jié)點(diǎn)用來為當(dāng)前登錄公司以及當(dāng)前登錄公司的下屬公司創(chuàng)建角色,將創(chuàng)建的角色分配給下屬公司以及為角色關(guān)聯(lián)用戶。權(quán)限分配的界面如圖所示。權(quán)限分配節(jié)點(diǎn)用來為當(dāng)前登錄公司和當(dāng)前登錄公司下屬公司的角色分配功能權(quán)限、按鈕權(quán)限以及檔案的數(shù)據(jù)權(quán)限。經(jīng)過以上操作可以為公司建立角色,用戶,并賦予相應(yīng)權(quán)限。深入的權(quán)限管理參考權(quán)限管理產(chǎn)品手冊。產(chǎn)品主要目錄結(jié)構(gòu)介紹ierp/bin:與整個產(chǎn)品相關(guān)的配置文件都存放在該目錄,如日志配置文件pertiesmodules:NC產(chǎn)品模塊存放的目錄,下面的所有模塊在系統(tǒng)啟動時得到加載modules/<模塊名>:某個模塊的目錄,模塊名必須是小寫的英文字母,在能表達(dá)意義的基礎(chǔ)上盡量的短modules/<模塊名>/META-INF/module.xml:必須存在,配置模塊的一些通用屬性,如名稱,描述,classloader等,注意名稱必須與模塊名稱同名modules/<模塊名>/lib:模塊公開的API類,如接口,接口相關(guān)的VO等,放JAR包modules/<模塊名>/classes:模塊公開的API類,如接口,接口相關(guān)的VO等,放帶目錄的.class文件等,用于補(bǔ)丁modules/<模塊名>/META-INF/lib:模塊私有的代碼,如DMO,業(yè)務(wù)實(shí)現(xiàn)等,放JAR包modules/<模塊名>/META-INF/classes:模塊私有的代碼,放帶目錄的.class文件等,用于補(bǔ)丁modules/<模塊名>/extension/lib,classes:用于二次擴(kuò)展的公開的APImodules/<模塊名>/extension/META-INF/lib,classes:用于二次擴(kuò)展的私有的APImodules/<模塊名>/client/lib,classes:用于從目標(biāo)上來說不屬于公共的API,但是客戶端用到的代碼webapps/nc_web:NC產(chǎn)品的web應(yīng)用hotwebs:下面放其他的web應(yīng)用,如hrss,lfw等resource:存放與整個產(chǎn)品相關(guān)的資源,如產(chǎn)品的多與資源lib,classes,external/lib,classes:由平臺維護(hù)和提供的類庫,不允許第三方調(diào)整NC基礎(chǔ)技術(shù)內(nèi)容概述本章將介紹UAP-NC平臺的技術(shù)結(jié)構(gòu),開發(fā)模型,并通過一個例子親身感受遠(yuǎn)程接口開發(fā)。詳細(xì)介紹NC開發(fā)基本概念單據(jù):比如報(bào)銷時的報(bào)銷單,一般由表頭和表體組成(有些時候還含有表尾)。表頭中包含了單據(jù)的主信息,比如日期、部門、預(yù)算項(xiàng)目;表體包含了單據(jù)的明細(xì)信息,比如具體的事項(xiàng)和金額;單據(jù)類型:一個業(yè)務(wù)系統(tǒng)為了使結(jié)構(gòu)更清晰,通常也是分層的。比如,供應(yīng)鏈系統(tǒng)包含了采購、庫存等子系統(tǒng),每個子系統(tǒng)都具有一個系統(tǒng)類型,而每個子系統(tǒng)都會具有很多張單據(jù),為了區(qū)分這些單據(jù),為每張單據(jù)命名一個單據(jù)類型,作為唯一標(biāo)識;模板:單據(jù)開發(fā)涉及到三大模板(單據(jù)模板、查詢模板、打印模板)。單據(jù)模板定義了單據(jù)的顯示外觀和基本框架,查詢模板定義了單據(jù)的查詢對話框,打印模板定義了單據(jù)信息打印到打印機(jī)的樣式和格式;VO是ValueObject的簡寫,在NC中是一個抽象類,它實(shí)現(xiàn)了Cloneable和Serializable接口。是NC業(yè)務(wù)數(shù)據(jù)的載體在系統(tǒng)各層之間傳遞業(yè)務(wù)數(shù)據(jù)。CircularlyAccessibleValueObject是ValueObject的子類,提供了對自身的屬性進(jìn)行存取操作的方法。SuperVO是CircularlyAccessibleValueObject的子類,是NC系統(tǒng)中最常使用的VO類型,它與一張數(shù)據(jù)庫表對應(yīng),可以方便的利用NC的JDBCFramework進(jìn)行持久化操作。以上是對一個數(shù)據(jù)對象的抽象,在NC產(chǎn)品中,絕大部分功能是通過單據(jù)的形式提供的,而NC的單據(jù)大部分是一對多的關(guān)系,我們稱之為一個主表記錄對應(yīng)多個子表記錄。AggregatedValueObject就是用于存儲一對多關(guān)系的主子表數(shù)據(jù)。對于一主多子的情況,實(shí)現(xiàn)IExAggVO接口。聚合VO:單據(jù)一般由表頭和表體構(gòu)成,因此單據(jù)的數(shù)據(jù)表通常設(shè)計(jì)成主表和子表。聚合VO是對單據(jù)數(shù)據(jù)的抽象,它用于裝載主表VO和一組子表VO.;UI工廠:雖然能通過三大模板定義出單據(jù)的顯示,但每張單據(jù)都有一些公共的或特殊的行為。UI工廠是一種單據(jù)開發(fā)框架,它將常用單據(jù)抽象成了很多類型,因此,UI工廠相當(dāng)于是單據(jù)開發(fā)的代碼模板,預(yù)置了單據(jù)的各種公共行為,比如增、刪、改、查,并且可以連接到NC流程平臺,支持審批、單據(jù)驅(qū)動等應(yīng)用。遠(yuǎn)程接口:V5遠(yuǎn)程組件開發(fā)都是基于接口(替代原先的BO訪問),訪問也都是基于接口。參照:是一種輔助的數(shù)據(jù)輸入方式,通常彈出界面的形式提供可以參考的數(shù)據(jù),比如在錄入省份信息時,提供一個全國省份列表以供選擇。單據(jù)開發(fā)中,有很多輸入字段存在類似的需求。NC系統(tǒng)中預(yù)置了很多種常見參照(基本覆蓋了所有的基本檔案,比如人員參照,存貨參照),如果要自定義一種參照,則需要簡單的開發(fā)工作。ToftPanel:提供對NC產(chǎn)品功能節(jié)點(diǎn)開發(fā)的支持,統(tǒng)一功能節(jié)點(diǎn)的注冊類型(ToftPanel)。提供了節(jié)點(diǎn)開發(fā)過程中按鈕的注冊機(jī)制以及按鈕與界面的互動機(jī)制(通過ToftPanel的onButtonClick(bo)方法進(jìn)行事件響應(yīng))。節(jié)點(diǎn)打開時,真正運(yùn)行的是FramePanel實(shí)例,它提供了ButtonBar進(jìn)行按鈕展示,TitlePanel進(jìn)行節(jié)點(diǎn)標(biāo)題的顯示,同時將用戶開發(fā)的ToftPanel子類放置到中心位置進(jìn)行展現(xiàn)。下圖是ToftPanel區(qū)域介紹:FramePanelFramePanelButtonBarToftPanelTitlePanelNCUAP總體介紹UAP-NC作為基于多組織架構(gòu)的企業(yè)應(yīng)用運(yùn)行平臺、基于模式化的開發(fā)平臺、開放的系統(tǒng)集成平臺及統(tǒng)一的系統(tǒng)管理平臺,是建立在Java語言所提供的強(qiáng)大功能的基礎(chǔ)上開發(fā)的。Java是一種簡單的、面向?qū)ο蟮?、分布式的、結(jié)構(gòu)中立的、安全的、可移植的、性能優(yōu)異的、多線程的、動態(tài)的開發(fā)語言,適合構(gòu)建基于網(wǎng)絡(luò)計(jì)算的企業(yè)應(yīng)用。由于Java的平臺無關(guān)性,使得UAP-NC可以運(yùn)行在不同硬件平臺、不同操作系統(tǒng)平臺上?;赨AP-NC所開發(fā)的應(yīng)用軟件采用Browser/Server(瀏覽器/服務(wù)器)的方式來運(yùn)行。B/S的運(yùn)行方式最大限度地方便了用戶部署和維護(hù)大型軟件系統(tǒng),保證了瘦客戶機(jī)運(yùn)行,從而大大降低了用戶目標(biāo)系統(tǒng)的總體擁有成本(TCO)。系統(tǒng)框架層主要指基礎(chǔ)軟件,如操作系統(tǒng)、數(shù)據(jù)庫及J2EE應(yīng)用服務(wù)器。UAP-NC支持多種操作系統(tǒng)(Solaris、AIX、Linux、Windows等),可運(yùn)行于符合J2EE規(guī)范的多種應(yīng)用服務(wù)器(IBMWebSphere、BEAWebLogic、UFIDAApplicationServer等),支持多種數(shù)據(jù)庫DBMS(DB2、Oracle、SQLServer、OSCAR等)。UAP-NC還提供Portal服務(wù)器進(jìn)行內(nèi)容集成以使用戶對企業(yè)資源有一個統(tǒng)一的訪問點(diǎn)。技術(shù)框架層是在系統(tǒng)框架層(操作系統(tǒng)、數(shù)據(jù)庫及應(yīng)用服務(wù)器)和應(yīng)用系統(tǒng)之間建立的一層技術(shù)封裝層和系統(tǒng)資源監(jiān)控和管理層。技術(shù)框架層屏蔽不同具體技術(shù)實(shí)現(xiàn)的細(xì)節(jié),減少直接使用系統(tǒng)資源帶來的復(fù)雜性、異構(gòu)性、不安全性及不穩(wěn)定性;技術(shù)框架層監(jiān)控和管理系統(tǒng)資源,保證系統(tǒng)資源的可用性及其合理使用;技術(shù)框架層提供最佳編程模式,加快在不同技術(shù)平臺上開發(fā)和部署應(yīng)用的速度,保證應(yīng)用的健壯性。技術(shù)框架層所屏蔽技術(shù)實(shí)現(xiàn)細(xì)節(jié)包括界面風(fēng)格、遠(yuǎn)程接入、EJB實(shí)現(xiàn)/訪問、多數(shù)據(jù)庫適配、事務(wù)處理、并發(fā)處理、緩存處理、安全管理等等。企業(yè)服務(wù)架構(gòu)(EnterpriseServiceArchitecture,ESA)企業(yè)服務(wù)架構(gòu)是一個服務(wù)集成總線,支持異構(gòu)環(huán)境的服務(wù)、消息及基于事件的交互。通過ESA,可以使用與實(shí)現(xiàn)無關(guān)的接口來定義服務(wù),可發(fā)現(xiàn)和調(diào)用所需的服務(wù),可解決服務(wù)之間的相互依賴。連接框架(ConnectFramework)連接框架連接客戶端與服務(wù)器,使不同客戶端(瀏覽器小應(yīng)用程序、Java應(yīng)用程序、瀏覽器JSP)可通過不同訪問協(xié)議(HTTP/HTTPS,RMI)使用服務(wù)器提供的服務(wù)。同步(Synchronization)同步服務(wù)實(shí)現(xiàn)客戶端與服務(wù)器代碼和數(shù)據(jù)的同步,及集群環(huán)境下服務(wù)器之間的資源同步。SQL翻譯器(SQLTranslator)SQL翻譯器將SQL翻譯成適合目標(biāo)數(shù)據(jù)庫的SQL語句,以適配不同數(shù)據(jù)庫廠商提供的產(chǎn)品;優(yōu)化SQL,充分發(fā)揮不同數(shù)據(jù)庫的最大性能。元數(shù)據(jù)管理(MetadataManagement)元數(shù)據(jù)是描述系統(tǒng)數(shù)據(jù)(包括界面定義、規(guī)則定義、流程定義等)的數(shù)據(jù)。通過元數(shù)據(jù)管理,對系統(tǒng)數(shù)據(jù)統(tǒng)一進(jìn)行維護(hù)以支持用戶自定義,如改變字段的可編輯屬性、字段的取值范圍等。工作流引擎(Workflow) 工作流引擎根據(jù)工作過程的描述,通過執(zhí)行一系列已定義的工作項(xiàng),完成此工作過程。UAP-NC的工作流引擎支持多種工作流模式,如分支、合并、并行、選擇、循環(huán)、回退等;支持工作項(xiàng)的搶占與會簽;支持可配置的動作執(zhí)行腳本,等等。規(guī)則引擎(RuleEngine) 規(guī)則引擎用來定義和執(zhí)行各種規(guī)則,包括界面規(guī)則、關(guān)聯(lián)關(guān)系、計(jì)算規(guī)則、條件跳轉(zhuǎn)規(guī)則等。使用規(guī)則可以讓應(yīng)用更加富有柔性。規(guī)則需要通用的行業(yè)化語言精確表達(dá)且淺顯易懂。規(guī)則引擎需要滿足一定的計(jì)算速度,支持規(guī)則的批量處理及理解外部數(shù)據(jù)。持久化框架(PersistenceFramework)封裝不同持久化技術(shù)(如JDBC、普通文件、XML、Excel)。持久化框架可解決對象與關(guān)系之間的“阻抗失配”問題?;A(chǔ)算法(BasicAlgorithms)提供統(tǒng)一的基本算法,如排序,XML文檔操作,方便開發(fā)與編程,統(tǒng)一代碼規(guī)范。登錄和安全(Login/CASecurity)統(tǒng)一管理系統(tǒng)登錄時的身份認(rèn)證。支持多種身份認(rèn)證策略,如靜態(tài)密碼認(rèn)證、基于USBKey的CA身份認(rèn)證等。支持對業(yè)務(wù)敏感數(shù)據(jù)使用證書進(jìn)行簽名和驗(yàn)證以防止數(shù)據(jù)篡改和提供抗抵賴性。調(diào)度引擎(Scheduler) 調(diào)度引擎對服務(wù)和線程進(jìn)行統(tǒng)一管理,以屏蔽不同應(yīng)用服務(wù)器的異構(gòu)性。調(diào)度引擎調(diào)度各種服務(wù)、常駐系統(tǒng)服務(wù)、客戶端的請求服務(wù)、以及一些服務(wù)的組合。異常(Exception)統(tǒng)一解釋與封裝異常消息,如不同廠商的數(shù)據(jù)庫異常的不一致。緩存(Cache)提供在服務(wù)器端與客戶端的臨時內(nèi)存中進(jìn)行緩存的機(jī)制,包括對象的創(chuàng)建、共享訪問、假脫機(jī)(Spooling)、失效等,加快對用戶操作的響應(yīng)。日志(Log)日志機(jī)制提供對系統(tǒng)運(yùn)行時的監(jiān)控及支持對系統(tǒng)異常的追蹤與定位。日志機(jī)制可控制日志輸出的格式、日志信息的級別、日志信息輸出的目的地(文件、控制臺、SocketServer等)。通過配置文件進(jìn)行靈活的設(shè)置,用戶可以細(xì)致地控制日志的生成過程,而不需修改程序代碼。應(yīng)用框架層是基于企業(yè)建模理論的、以業(yè)務(wù)導(dǎo)向和驅(qū)動的、可快速構(gòu)建應(yīng)用軟件的軟件平臺。應(yīng)用框架層的出現(xiàn)是一種技術(shù)創(chuàng)新,它使軟件平臺多了一個具有革命性意義的戰(zhàn)略層次,為降低大型復(fù)雜軟件系統(tǒng)的實(shí)現(xiàn)難度提供了新的途徑。將應(yīng)用軟件的業(yè)務(wù)邏輯和開發(fā)技術(shù)相對分開,使得應(yīng)用軟件的開發(fā)者可以僅關(guān)注應(yīng)用的業(yè)務(wù)邏輯,而不必關(guān)注其繁瑣的技術(shù)實(shí)現(xiàn)。這使管理層與業(yè)務(wù)人員參與應(yīng)用軟件的開發(fā)成為可能。UAP-NC應(yīng)用框架層基于業(yè)務(wù)和管理層面,以業(yè)務(wù)建模(組織、流程、功能、資源、信息)為基本手段,從而構(gòu)造、開發(fā)和維護(hù)業(yè)務(wù)應(yīng)用系統(tǒng)。使用UAP-NC提供的應(yīng)用框架層,可大大縮短研發(fā)周期,提高研發(fā)效率,加快應(yīng)用開發(fā)的速度;減少企業(yè)信息系統(tǒng)開發(fā)的風(fēng)險;降低開發(fā)成本;實(shí)現(xiàn)最終用戶的個性化的需求;支持用戶在發(fā)展過程中各種各樣的需求變化;提供應(yīng)用的高價值。國際化(I18N)實(shí)現(xiàn)界面的多語化及數(shù)據(jù)和展示的本地化。界面的多語化是指根據(jù)用戶登錄時指定的語種顯示相應(yīng)的語言界面。企業(yè)用戶可以修改相應(yīng)的語言信息及顯示的圖片。數(shù)據(jù)和展示的本地化指日期、時間、數(shù)字、貨幣、匯率等可根據(jù)企業(yè)用戶本地的習(xí)慣進(jìn)行展示。消息管理(MessageManagement)消息管理集中顯示通過ESA所傳送的消息,如應(yīng)用系統(tǒng)所產(chǎn)生的預(yù)警消息,通知消息,業(yè)務(wù)流程相關(guān)的消息,及企業(yè)公告和用戶對發(fā)消息等。移動管理(MobileManagement)支持通過移動設(shè)備進(jìn)行消息的交互及操縱業(yè)務(wù)數(shù)據(jù)等。對無線設(shè)備的廣泛支持,UAP-NC帶來的是企業(yè)管理的無處不在和服務(wù)的無限拓展,同時也為企業(yè)決策人員提供了高端、迅捷的管理機(jī)制。組織管理(OrganizationManagement)提供從不同維度管理企業(yè),如公司、部門、主體賬簿等。數(shù)據(jù)傳輸(DataTransfer)數(shù)據(jù)傳輸負(fù)責(zé)傳輸以規(guī)則定義的數(shù)據(jù)集以支持?jǐn)?shù)據(jù)層的應(yīng)用集成。數(shù)據(jù)交換(DataExchange)與第三方系統(tǒng)進(jìn)行數(shù)據(jù)交換,提供靈活的數(shù)據(jù)映射及數(shù)據(jù)綁定,支持根據(jù)業(yè)務(wù)規(guī)則的轉(zhuǎn)換,同時結(jié)合工作流平臺整合業(yè)務(wù)流程。動態(tài)會計(jì)平臺(FinancialAccountPlatform)通過定義會計(jì)科目類別和憑證模板,使用憑證生成器,根據(jù)業(yè)務(wù)數(shù)據(jù)生成實(shí)時憑證。在保持業(yè)務(wù)數(shù)據(jù)與財(cái)務(wù)數(shù)據(jù)相對獨(dú)立的基礎(chǔ)上保證數(shù)據(jù)的一致性和及時性。 預(yù)警平臺(PreAlert) 在預(yù)警平臺上可定義多種方式的預(yù)警條件以進(jìn)行形式多樣的預(yù)警,如時間條件、庫存大小、生日等。預(yù)警還可配置在用戶登錄時觸發(fā)。預(yù)警消息可以用HTML網(wǎng)頁的形式發(fā)布,可以通過郵件發(fā)布,還可使用短消息發(fā)送。業(yè)務(wù)流程和審批流程的編排(BusinessProcessandApprovalFlowOrchestration)用來定義業(yè)務(wù)流程和審批流中數(shù)據(jù)的流向,數(shù)據(jù)間的關(guān)系及以人員的關(guān)系。 訪問控制(AccessControl)使用基于用戶角色和對象權(quán)限的權(quán)限分配方式。每一角色都包含公有權(quán)限和屬于某一具體公司的私有權(quán)限。角色還提供信任功能。應(yīng)用模式(ApplicationPatterns)UAP-NC根據(jù)經(jīng)驗(yàn)積累與用戶實(shí)施,總結(jié)出一套與應(yīng)用界面相關(guān)的模式(表單、報(bào)表和打?。?,更好地提供滿足用戶需求的界面展現(xiàn),更快地滿足用戶個性化的需求。NC的開發(fā)模型系統(tǒng)前端為客戶端UI代碼,UI端代碼繼承ToftPanel,UI代碼通過調(diào)用遠(yuǎn)程組件與服務(wù)器端進(jìn)行交互,中間傳遞的數(shù)據(jù)模型為VO,遠(yuǎn)程組件調(diào)用底層的業(yè)務(wù)實(shí)現(xiàn)代碼,完成整個交互邏輯。通過JDBCFramework,系統(tǒng)提供了一套良好的數(shù)據(jù)持續(xù)機(jī)制,解決數(shù)據(jù)庫交互的復(fù)雜問題。下圖是NCV5的代碼結(jié)構(gòu)圖NC5后將代碼分區(qū)域存放:Public目錄存放接口和公共代碼(比如VO和公共算法)Private目錄存放實(shí)現(xiàn)和其它實(shí)現(xiàn)細(xì)節(jié)Client目錄存放客戶端代碼META-INF目錄存放模塊配置文件目錄,包括module.xml文件和xxx.module接口配置文件。針對上面的開發(fā)模式,我們規(guī)范一下代碼的包結(jié)構(gòu):nc.itf.<模塊>:表示該模塊定義的接口nc.impl.<模塊>:表示該模塊定義的接口實(shí)現(xiàn)nc.vo<模塊>:表示VO的實(shí)現(xiàn)nc.bs.<模塊>:普通的后臺應(yīng)用nc.ui.<模塊>.*:客戶端代碼開發(fā)遠(yuǎn)程接口V5.0版本的遠(yuǎn)程組件開發(fā)是基于接口,因此遠(yuǎn)程組件的開發(fā)按照下面兩個步驟開發(fā):定義遠(yuǎn)程接口,注意這里的遠(yuǎn)程接口不用實(shí)現(xiàn)java.rmi.Remote接口,普通接口就可以了對該接口進(jìn)行實(shí)現(xiàn)把該組件部署為遠(yuǎn)程組件下面以HelloWord為例子:定義接口packagenc.itf.sample.service;publicclassIHelloWorld{ StringsayHello(StringtoName);}實(shí)現(xiàn)該接口packagenc.impl.sample.service;publicclassHelloWorldImplimplementsIHelloWorld{ publicStringsayHello(StringtoName){ StringretValue="Welcome"+toName+"exploreV5"; System.out.println(retValue); returnretValue;}部署組件編輯或新建該產(chǎn)品模塊下的模塊部署描述文件(META-INF下的.module文件),加入一個公共組件:<?xmlversion="1.0"encoding="UTF-8"?><modulename="sample"><public><componentremote=”true”><interface>nc.itf.sample.service.IHelloWorld</interface><implementation>nc.impl.sample.service.HelloWorldImpl</implementation></component></public></module>遠(yuǎn)程組件只要指出他的remote屬性為true即可??蛻舳苏{(diào)用接下來客戶端就可以通過下面的方式進(jìn)行遠(yuǎn)程訪問了:IHelloWorldhello=NCLocator.getInstance().lookup("nc.itf.sample.service.IHelloWorld");System.out.println(hello.sayHello("uap"));系統(tǒng)輸出:WelcomeuapexploreV5你的一個實(shí)現(xiàn)可以同時實(shí)現(xiàn)多個接口,并且可以在部署的時候選擇性的公布出你需要遠(yuǎn)程分布的接口,例如你的一個實(shí)現(xiàn)類,實(shí)現(xiàn)了多個接口IService1,IService2,IService3,你可以選擇只遠(yuǎn)程公布接口IService2,IService3,部署信息如下:<?xmlversion="1.0"encoding="UTF-8"?><modulename="sample"><public><componentremote="true"supportAlias="true"><interface>nc.itf.sample.service.IService2</interface><interface>nc.itf.sample.service.IService3</interface><implementation>nc.impl.sample.service.MultiServiceImpl</implementation></component></public></module>注意我們使用了supportAlias屬性,指出我們可以通過兩個接口中的任何接口進(jìn)行遠(yuǎn)程組件的查找。supportAlias為true只有在公共組件中才起作用。事務(wù)型組件發(fā)布定義遠(yuǎn)程接口,就是普通接口,分有事務(wù)和無事務(wù),區(qū)別在于部署文件時放在private下而不是public下,部署成private的接口需要生成ejb代碼,否則無法調(diào)用,部署成public的代碼不需要生成ejb代碼。一般來說,增刪改操作發(fā)布成private接口,查詢發(fā)布成public接口。下面是兩種接口的發(fā)布事例:<?xmlversion="1.0"encoding="UTF-8"?><?xmlversion="1.0"encoding="UTF-8"?><module><public><componentpriority="0"singleton="true"remote="true"tx="NONE"><interface>nc.itf.sample.IHelloPub</interface><implementation>nc.impl.sample.HelloWorldPub</implementation></component></public><private><componentname="IHelloWorld"priority="0"singleton="false"><implementation>nc.impl.sample.HelloWorldImpl</implementation></component></private></module>配置文件規(guī)范:所有的屬性中不能出現(xiàn)(除系統(tǒng)生成的proxy外)supportAlias=”所有的屬性中不能出現(xiàn)(除系統(tǒng)生成的proxy外)supportAlias=”true|false”priority屬性只對活動組件有用公共組件約定:公共組件的屬性中不能出現(xiàn):name=””,公共組件可以出現(xiàn)以下屬性:tx=”NONE”,singleton=”true”//根據(jù)不同情況進(jìn)行決定,建議采用trueremote=”true|false”私有組件約定私有組件的節(jié)點(diǎn)中不能出現(xiàn):<interface>…</interface>不能出現(xiàn)以下屬性:tx=””,remote=”” 可以出現(xiàn)以下屬性:singleton=”true”//根據(jù)不同情況進(jìn)行決定,建議采用truename=名稱以接口名稱為準(zhǔn)(不包含包名稱)對于事務(wù)型的組件(是指該組件的方法調(diào)用中事務(wù)處理會自動參與)可通過后綴名來判斷事務(wù)類型:方法名后綴RequiresNew:新事物方法名后綴Mandatory:必須在一個已有的事務(wù)環(huán)境中運(yùn)行改方法方法名后綴Supports:只是支持事務(wù),不建議使用方法名后綴NotSupported:不支持事務(wù),不建議使用方法名后綴Never:不能有事務(wù),否則出錯沒有方法名后綴:如果有事務(wù),就在該事務(wù)環(huán)境下工作,否則新啟事務(wù),這是大部分事務(wù)型組件的情況事務(wù)型組件一般都是針對數(shù)據(jù)庫等事務(wù)性資源進(jìn)行操作,如果沒有對事務(wù)性資源進(jìn)行操作,請不要把組件定義為事務(wù)性組件。對于發(fā)布成private的組件,需要點(diǎn)擊xxx.module部署文件,在代理組件生成頁簽,選擇需要發(fā)布的接口,輸入ejb名字,點(diǎn)擊生成就可將代碼生成到gen目錄下。只有這樣,才可以調(diào)用private的接口。安裝nc產(chǎn)品后通過sysconfig部署代碼操作也是這個過程??蛻舳舜a客戶端調(diào)試代碼可以通過junit和注冊Toftpanel來實(shí)現(xiàn)。通過junit運(yùn)行調(diào)試接口比較方便,不需要進(jìn)行客戶端登陸。新做一個類繼承AbstractTestCase,實(shí)現(xiàn)一個以test開頭的方法,在方法里面寫調(diào)用遠(yuǎn)程組件的方法。然后以JUnit來運(yùn)行。Toftpanel方式是寫一個ToftPanel的子類,將此類注冊成nc節(jié)點(diǎn),然后通過eclipse啟動jstarter來進(jìn)入nc,點(diǎn)擊相應(yīng)節(jié)點(diǎn)執(zhí)行相應(yīng)方法。通過擴(kuò)展ToftPanel,實(shí)現(xiàn)getTitle()方法,在postInit()方法中初始化界面,調(diào)用setButtons(ButtonObject[])方法設(shè)置菜單,實(shí)現(xiàn)onButtonClicked(ButtonObject)方法響應(yīng)菜單事件。NC數(shù)據(jù)庫持久化技術(shù)內(nèi)容概述在NC中很多時候需要我們直接操作數(shù)據(jù)庫,對數(shù)據(jù)庫德訪問NC提供了框架類。JDBCFrameWork為NC訪問數(shù)據(jù)庫提供統(tǒng)一的數(shù)據(jù)操作訪問,簡化數(shù)據(jù)訪問操作。BaseDao是在JDBCFrameWork之上提供數(shù)據(jù)持久化的工具類。下圖是NC數(shù)據(jù)庫訪問的層次圖:詳細(xì)介紹核心類介紹PersistenceManager管理連接會話的生命周期,并提供了對單表VO操作的常用實(shí)現(xiàn)可以傳遞構(gòu)造參數(shù)選擇不同的數(shù)據(jù)源JdbcSession對JDBC的API封裝和簡化SQLParameter封裝執(zhí)行SQL的參數(shù)ResultSetProcessor結(jié)果集處理回調(diào)接口,封裝結(jié)果集處理DbException封裝不同數(shù)據(jù)庫的異常,和統(tǒng)一處理不同數(shù)據(jù)庫的ErrorCodeBaseDAO/IUAPQueryBS/IVOPersistence管理連接會話的生命周期,提供了對單表VO操作的常用實(shí)現(xiàn)通過JDBCFrameWork訪問數(shù)據(jù)庫通過代碼和注釋來看如何通過JdbcSession訪問數(shù)據(jù)庫PersistenceManagersessionManager=null;try{sessionManager=PersistenceManager.getInstance();//構(gòu)造參數(shù)可指定數(shù)據(jù)源JdbcSessionsession=sessionManager.getJdbcSession();//開始jdbc會話Stringsql="updatebd_invmandocsetpk_invmandoc='0001AA10000000000DDD'wherepk_invmandoc=?”;SQLParameterparameter=newSQLParameter();構(gòu)造參數(shù)對象parameter.addParam("0001AA10000000000DDD");添加參數(shù),JdbcSession會將參數(shù)對象中的每個對象放入到預(yù)處理對象的相應(yīng)位置session.executeUpdate(sql,parameter);}catch(DbExceptione){//根據(jù)數(shù)據(jù)庫的不同統(tǒng)一異常處理if(e.isBadSQLGrammar())//如果是語法錯誤//todo相關(guān)處理if(e.isDataIntegrityViolation())//如果是數(shù)據(jù)一致性錯誤//todo相關(guān)處理}}finally{if(sessionManager!=null)sessionManager.release();//需要關(guān)閉會話}下面是幾種參數(shù)語法介紹:1.無參查詢Stringsql="select*frombd_deptdoc";//構(gòu)造查詢語句Listlist=(List)session.executeQuery(sql,newArrayListProcessor());2.有參查詢Stringsql="select*frombd_deptdocwheredept_code=?";SQLParameterparam=newSQLParameter();//構(gòu)造參數(shù)對象param.addParam(“aaa”);//添加參數(shù)Listlist=(List)session.executeQuery(sql,param,newArrayListProcessor());3.有參更新Stringsql="updatebd_deptdocsetdept_code=‘a(chǎn)aa’wheredept_code=?”;SQLParameterparam=newSQLParameter();//構(gòu)造參數(shù)對象param.addParam(“bbb”);//添加參數(shù)session.executeUpdate(sql,param);5.無參批量更新Stringsql="updatebd_deptdocsetdept_code=‘a(chǎn)aa’wheredept_code=‘bbb’";session.addBatch(sql);//添加需要執(zhí)行的同構(gòu)SQLintrows=session.executeBatch();//執(zhí)6.特殊參數(shù)1.Null參數(shù)param.addNullParam(java.sql.Types.INTEGER);2.Blob參數(shù)param.addBlobParam(newObject());3.Clob參數(shù)param.addClobParam(newString());通過BaseDao進(jìn)行對象的持久化通過持久層框架可以很方便的實(shí)現(xiàn)把內(nèi)存中的對象持久化到數(shù)據(jù)庫、把數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)加載到內(nèi)存中。作為入門的一個例子,我們使用一個簡單的JavaBeanPerson類(注意需要進(jìn)行持久化的VO類必須符合JavaBean規(guī)范)1.前臺數(shù)據(jù)訪問:使用IVOPersistence服務(wù)組件,進(jìn)行增刪改操作;使用IUAPQueryBS服務(wù)組件,進(jìn)行查詢操作。IUAPQueryBSiUAPQueryBS=(IUAPQueryBS)NCLocator.getInstance().lookup(IUAPQueryBS.class.getName());iUAPQueryBS.executeQuery()2.后臺數(shù)據(jù)訪問:使用BaseDAO工具類3.對象讀取BaseDAOdao=newBaseDAO();//構(gòu)造參數(shù)可以指定數(shù)據(jù)源PersonVOMetameta=newPersonVOMeta();dao.retrieveByClause(Person.class,meta,"id=5");4.對象寫入BaseDAOdao=newBaseDAO();Personperson=newPerson();person.setName(“tom”);person.setAge(“20”);PersonVOMetameta=newPersonVOMeta();dao.insertObject(person,meta);//默認(rèn)會為Person對象生成主鍵類說明Person是普通值對象,PersonVOMeta映射元數(shù)據(jù)類實(shí)現(xiàn)IMappingMeta接口,用于影射值對象和數(shù)據(jù)庫關(guān)系,SupperVO不需要實(shí)現(xiàn)影射類結(jié)果集合操作對查詢結(jié)果集合的操作,主要由ResultProcessor類來實(shí)現(xiàn),這是一個接口ResultProcessor包含有一個簡單的方法,不同的ResultProcessor實(shí)現(xiàn)返回不同的結(jié)果對象。系統(tǒng)提供了一系列常用的默認(rèn)實(shí)現(xiàn)。ArrayProcessor數(shù)組處理器,返回一個對象數(shù)組,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果集中每一列對應(yīng)數(shù)組的一個元素。ArrayListProcessor數(shù)組集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個數(shù)組,每個數(shù)組對應(yīng)結(jié)果集中的一行數(shù)據(jù),其中結(jié)果集中每一列對應(yīng)數(shù)組的一個元素。MapProcessorHashMap處理器,返回一個HashMap,結(jié)果集中只有一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應(yīng)HashMap的一個關(guān)鍵字和相應(yīng)的值。MapListProcessorHashMap集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個HashMap,每個HashMap對應(yīng)結(jié)果集中的一行數(shù)據(jù),其中結(jié)果集合中每一列的列名和列值對應(yīng)HashMap的一個關(guān)鍵字和相應(yīng)的值。BeanProcessor值對象處理器,返回一個JavaBean,結(jié)果集中只有一行數(shù)據(jù),該處理器能自動把結(jié)果集中的值按列的名稱映射到j(luò)avaBean中,如結(jié)果集中有名稱為”name”的字段,那么只要該java對象中有g(shù)etName()方法就能把結(jié)果集合中”name”對應(yīng)的值映射到對象中。BeanListProcessor值對象集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個javaBean,每個javaBean對應(yīng)結(jié)果集合中一行數(shù)據(jù),其中每個JavaBean中的數(shù)據(jù)映射關(guān)系和BeanProcess同理。還有ColumnProcessor,BeanMappingListProcessor,BeanMappingProcessor幾個類BeanListProcessor作為結(jié)果集的例子:ArrayListlist=(ArrayList)session.executeQuery(sql,param,newBeanListProcessor(TrainReqmatbillVO.class));//TrainReqmatbillVO是一個普通vo類intlistcount=list.size();TrainReqmatbillVO[]vos=newTrainReqmatbillVO[listcount];for(inti=0;i<vos.length;i++){ vos[i]=(TrainReqmatbillVO)list.get(i);}結(jié)果集控制在NC持久層中為了防止執(zhí)行大查詢后返回結(jié)果集合過多導(dǎo)致系統(tǒng)內(nèi)存溢出系統(tǒng)默認(rèn)設(shè)置了最大返回結(jié)果集行數(shù)是10萬行,如果如要返回更多行數(shù)或者不限制返回行數(shù),需要做如下設(shè)置:在SuperDMO中設(shè)置返回行數(shù)SuperDMOsuperDmo=newSuperDMO();superDmo.setMaxRows(行數(shù));如果rows=-1表示不限制返回行數(shù)在BaseDAO中設(shè)置返回行數(shù)BaseDAObaseDao=newBaseDAO();BaseDAO.setMaxRows(行數(shù));如果rows=-1表示不限制返回行數(shù)在ResultsetProcessor中設(shè)置返回行數(shù)BaseProcessorprocessor=newArrayListProcessor();Processor.setMaxRows(行數(shù));在結(jié)果集中設(shè)置返回行數(shù)CrossDBResultsetresultset=(CrossDBResultset)rs;Resultset.setMaxRows(行數(shù));第二篇中級篇經(jīng)過入門篇的學(xué)習(xí),你已經(jīng)初步了解了NC的環(huán)境,使用和技術(shù)規(guī)范。但是離真正的業(yè)務(wù)開發(fā)還差很遠(yuǎn),通過本篇的學(xué)習(xí),你將真正進(jìn)入NC的業(yè)務(wù)開發(fā),了解NC單據(jù)的開發(fā),數(shù)據(jù)庫操作,報(bào)表等技術(shù),通過本章的學(xué)習(xí),你將可以具備實(shí)用的需求業(yè)務(wù)開發(fā)能力。元數(shù)據(jù)建模內(nèi)容概述本文檔主要介紹了如何基于元數(shù)據(jù)進(jìn)行業(yè)務(wù)建模,以及如何在運(yùn)行時對元數(shù)據(jù)進(jìn)行管理。最后列舉了元數(shù)據(jù)的一些典型應(yīng)用。目的是盡可能地讓大家在使用元數(shù)據(jù)的時候更加方便。關(guān)于元數(shù)據(jù)本身的代碼架構(gòu),以及元數(shù)據(jù)的基本概念,請參見《NCV5.5-元數(shù)據(jù)開發(fā)紅皮書》。詳細(xì)介紹新建元數(shù)據(jù)模型為方便操作,將eclipse設(shè)為“NC模型設(shè)計(jì)器”模式,如下圖。建立元數(shù)據(jù)模型的流程如下:建立模型文件模型文件概念:一個模型文件(bmf文件),對應(yīng)一個元數(shù)據(jù)模型,對應(yīng)一個業(yè)務(wù)組件。本例具體操作:如下圖,在[MDP資源瀏覽器]中,新建模型文件,輸入模型文件名。建立數(shù)據(jù)實(shí)體一個數(shù)據(jù)實(shí)體,可以理解為對應(yīng)一個數(shù)據(jù)庫表。一張主子表的單據(jù)應(yīng)包含一個主實(shí)體、一個子實(shí)體。一個bmf文件中,有且僅有一個主實(shí)體。[建立數(shù)據(jù)實(shí)體]總結(jié)為4個必要步驟:1建立空實(shí)體,2指定實(shí)體的properties,3為實(shí)體添加屬性,4實(shí)現(xiàn)業(yè)務(wù)接口。建立空實(shí)體操作簡介如上圖,在工具箱中,點(diǎn)擊“實(shí)體”,然后在左側(cè)畫布區(qū)域點(diǎn)擊,即可建立一個空實(shí)體。建立后的實(shí)體如下圖所示。本例具體操作本示例需要建立兩個實(shí)體,如下表實(shí)體對應(yīng)數(shù)據(jù)表對應(yīng)VO主實(shí)體采購訂單主表采購訂單主VO子實(shí)體采購訂單子表采購訂單子VO指定數(shù)據(jù)的properties操作簡介如上圖,選中實(shí)體對象,在Properties頁簽中指定實(shí)體的property值。下表為關(guān)鍵property值代表的含義。propertyvalue訪問器類型AggVO:指聚合實(shí)體,主實(shí)體要設(shè)為這個POJO:暫不知含義NCVO:指普通實(shí)體,子實(shí)體要設(shè)為這個包裝類名當(dāng)選擇AggVO時,才出現(xiàn)。指聚合VO類類名稱指VO類名名稱實(shí)體名稱,一般設(shè)為VO名稱相同缺省表名數(shù)據(jù)庫表名顯示名稱在畫布中的顯示名稱,在NC元數(shù)據(jù)管理中的顯示名稱主屬性實(shí)體的主鍵,需要[為實(shí)體添加屬性]后指定本示例的具體操作本例中,按下表,指定實(shí)體的properties。PropertyValue主實(shí)體訪問器類型AggVO包裝類名自動生成類名稱自動生成名稱OrderHVO缺省表名ln_order_h顯示名稱采購訂單主表主屬性訂單主鍵([為實(shí)體添加屬性]后指定)子實(shí)體訪問器類型NCVO包裝類名自動生成類名稱自動生成名稱OrderBVO缺省表名ln_order_b顯示名稱采購訂單子表主屬性明細(xì)主鍵([為實(shí)體添加屬性]后指定)為實(shí)體添加屬性操作簡介如上圖,在[模型視圖]中增加實(shí)體屬性。上圖中關(guān)鍵的列含義解釋見下表:列value名稱屬性在VO中的名稱顯示名稱在畫布實(shí)體中的顯示名稱,NC元數(shù)據(jù)管理中的顯示名稱類型樣式SINGLE:簡單類型,UFID、Sring、Integer、UFDouble等REF:參照類型ARRAY:子實(shí)體聚合在主實(shí)體中,共同組成一張單據(jù)。那么,子實(shí)體在主實(shí)體中就是ARRAY。類型VO中的屬性類型。UFID:主鍵類型,一定要用這個,20位長度;前邊選REF時,要在這兒選擇具體的參照,如:公司目錄。字段名稱數(shù)據(jù)庫表中的字段名字段類型數(shù)據(jù)庫表中的字段類型。參照名稱下拉框,選參照時,帶過來的,有時會有多個參照,擇適合自己的。記問策略nc.md.model.access.BodyOfAggVOAccessor:主實(shí)體中的聚合子實(shí)體,一定選這個實(shí)體中必須添加的屬性見下表名稱顯示名稱類型樣式類型字段名稱字段類型參照名稱訪問策略主實(shí)體(名稱中的“主鍵”、“子表明細(xì)”用的漢字,我為了表達(dá)清晰,別傻呵呵的寫漢字,練練英文)主鍵主鍵SINGLEStringpk_order_hcharpk_corp公司IDREF公司目錄Pk_corp公司目錄(集團(tuán))vbillno單據(jù)號SINGLEStringvbillnovarcharvbillstatus單據(jù)狀態(tài)SINGLEIntegervbillstatusintpk_billtype單據(jù)類型REF單據(jù)類型pk_billtype影響因素單據(jù)類型pk_busitype業(yè)務(wù)類型REF業(yè)務(wù)類型pk_busitype業(yè)務(wù)類型voperatorid制單人REF用戶voperatorid用戶vapproveid審批人REF用戶vapproveid用戶dapprovedate審批日期SINGLEUFDatedapprovedateCharvapprovenote審批批語SINGLEStringvapprovenoteVarchar子表明細(xì)明細(xì)ARRAY采購訂單明細(xì)pk_order_hCharnc.md.model.access.BodyOfAggVOAccessor賦值方法:在此處加上此字段即可,不用為其手工設(shè)置類型樣式、類型,在完成下一步操作“設(shè)置組合關(guān)系”時,會自動賦值。但“字段名稱”你千萬別省事,一般設(shè)為與主鍵相同,代表此屬性是子表的外鍵。子實(shí)體(其實(shí),除了主鍵,沒有必須的屬性)子表主鍵設(shè)置組合關(guān)系操作簡介如上圖,在[工具箱]中點(diǎn)擊組合,從主實(shí)體畫向子實(shí)體。完成后,選中新畫的組合關(guān)系,在[Properties]頁簽中為其設(shè)置屬性值,如下圖,關(guān)鍵的Property介紹如下Propertyvalue顯示名稱畫布中的組合名稱。源屬性選擇:主實(shí)體中建立的那個ARRAY屬性,子表明細(xì)。此將作為主表在子表中的外鍵。目標(biāo)組合的目標(biāo),也就是子實(shí)體源點(diǎn)組合的源點(diǎn),也就是主實(shí)體實(shí)現(xiàn)業(yè)務(wù)接口操作簡介業(yè)務(wù)接口詳細(xì)使用可見《NCV5.5-元數(shù)據(jù)建模及管理紅皮書》。

如上圖,在[MDP資源瀏覽器]的引用模型中,找到需要引用實(shí)現(xiàn)的業(yè)務(wù)接口,鼠標(biāo)拖拽到畫布,如上圖,在[工具箱]中點(diǎn)擊“業(yè)務(wù)接口實(shí)現(xiàn)”,由實(shí)體畫向業(yè)務(wù)接口,操作完成。本示例的具體操作本示例中,元數(shù)據(jù)的主實(shí)體要實(shí)現(xiàn)如下業(yè)務(wù)接口:接口名接口路徑作用流程信息獲取引用模型\uap\pf\pfbizitf.bmf指定制單人、單據(jù)號等。沒有此接口,保存不了單據(jù),拋沒有實(shí)現(xiàn)IFlowBusInf接口異常。交換前后對單據(jù)VO的調(diào)整處理同上數(shù)據(jù)交換時使用單據(jù)主子VO查詢同上參照本單據(jù)時使用業(yè)務(wù)接口屬性映射完成此步之前,要選中主實(shí)體,在[模型視圖]中完成。指定模型文件的Properties操作簡介如上圖,在畫布空白區(qū)域點(diǎn)擊,在[properties頁簽]中,指定property值,關(guān)鍵property含義見下表:propertyvalue顯示名稱起一個可讀的名字主實(shí)體這兒選“采購訂單主表”發(fā)布元數(shù)據(jù)在保證中間已啟動、且數(shù)據(jù)庫連接正常的情況下,在畫布區(qū)城右擊(如上圖),點(diǎn)擊“發(fā)布元數(shù)據(jù)”。若發(fā)布元數(shù)據(jù)時,出現(xiàn)如下圖所示的錯誤,則說明沒有啟動中間件,或數(shù)據(jù)庫連接有問題。導(dǎo)出JAVA源代碼操作簡介在中間件已啟動、且數(shù)據(jù)庫連接有問題時,右鍵數(shù)據(jù)實(shí)體(如上圖),點(diǎn)擊“導(dǎo)出為JAVA源文件”,在隨后彈出的導(dǎo)出路徑選擇框中,選擇導(dǎo)出到{%當(dāng)前eclipse工程%/src/public包}。生成SQL腳本并執(zhí)行操作簡介啟動中間件、連接數(shù)據(jù)庫,右鍵畫布任意區(qū)域(如上圖),點(diǎn)擊“生成建庫SQL腳本并執(zhí)行”,在隨后彈出的路徑選擇框中,選擇任意有意義的路徑。最終成果經(jīng)過上述步驟,元數(shù)據(jù)模型完成,其實(shí),我們還附帶完成了導(dǎo)出VO代碼、執(zhí)行建表腳本的操作。最終的完成的成果見下表。成果項(xiàng)成果描述元數(shù)據(jù)模型即bmf文件,元數(shù)據(jù)模型如下圖。若以后修改此文件,則需要重新發(fā)布元數(shù)據(jù)。VO代碼聚合VO、主VO、子VO。SQL腳本數(shù)據(jù)庫建表腳本。數(shù)據(jù)表數(shù)據(jù)表已建立到數(shù)據(jù)庫中功能建模內(nèi)容概述NC中最重要的概念就是單據(jù),幾乎大部分業(yè)務(wù)數(shù)據(jù)錄入都是通過單據(jù)完成,所以單據(jù)開發(fā)是NC中最重要的技術(shù)。單據(jù)開發(fā)中重要的技術(shù)是單據(jù)模板和UI工廠。我們開發(fā)可以通過集成開發(fā)工具向?qū)瓿沙醪介_發(fā),經(jīng)過集成開發(fā)工具設(shè)計(jì)的單據(jù),已經(jīng)可以完成日常的操作,比如增刪改,審核等工作,如果有需要,可以把集成開發(fā)工具生成的代碼導(dǎo)出到eclipse,然后繼續(xù)修改,完成復(fù)雜業(yè)務(wù)邏輯功能。UAP發(fā)展到現(xiàn)在,已經(jīng)提供了不少二次開發(fā)工具和其他輔助性開發(fā)工具,更重要的是,也同時積累下來了一些標(biāo)準(zhǔn)的開發(fā)流程。作為NC內(nèi)部和外部的開發(fā)者,通常的疑惑是如何使用這些工具,以及標(biāo)準(zhǔn)開發(fā)流程到底是什么(比如在表單開發(fā)中,何時該導(dǎo)入數(shù)據(jù)字典,何時配置單據(jù)模板)。NC集成開發(fā)工具(UAPDeveloperWorkshop)的目標(biāo)就是:集成UAP現(xiàn)有的所有二次開發(fā)工具,對其進(jìn)行一定的組織;集成內(nèi)置標(biāo)準(zhǔn)開發(fā)流程的(具有增值性)開發(fā)工具,比如表單開發(fā)工具、報(bào)表開發(fā)工具,以插件的形式組裝起來。詳細(xì)介紹進(jìn)入Workshop登陸到NC后,點(diǎn)擊功能節(jié)點(diǎn)客戶化/二次開發(fā)工具/UAP集成開發(fā)工具,可打開下面的頁面:點(diǎn)擊最左邊的圖標(biāo)即可進(jìn)入UAP集成開發(fā)工具中,主界面為:上面菜單和工具欄,主要針對中心編輯區(qū)。組件導(dǎo)航和組件資源導(dǎo)航兩個頁簽,中心是用戶編輯

溫馨提示

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

評論

0/150

提交評論