u8c開發(fā)入門培訓_第1頁
u8c開發(fā)入門培訓_第2頁
u8c開發(fā)入門培訓_第3頁
u8c開發(fā)入門培訓_第4頁
u8c開發(fā)入門培訓_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

U8cloud開發(fā)入門培訓U8CHR開發(fā)部王立高級開發(fā)工程師2018年3月6日目錄01搭建開發(fā)環(huán)境02U8C數(shù)據(jù)庫持久化技術03開發(fā)一個普通單據(jù)04開發(fā)一個支持審批流的節(jié)點搭建開發(fā)環(huán)境01搭建開發(fā)環(huán)境本文軟件開發(fā)環(huán)境操作系統(tǒng):Windows10數(shù)據(jù)庫設計工具:SybasePowerDesigner(以下簡稱PD)數(shù)據(jù)庫:MSSQLServer2012開發(fā)工具:Eclipse3.8.22.建立開發(fā)工程打開eclipse,新建MDE工程。如果是在原工程增加節(jié)點,則省略此步。用友網(wǎng)絡科技股份有限公司新建工程用友網(wǎng)絡科技股份有限公司UAP集成開發(fā)配置選擇U8CHOME配置數(shù)據(jù)源支持3種數(shù)據(jù)庫用友網(wǎng)絡科技股份有限公司U8C數(shù)據(jù)庫持久化技術02U8C數(shù)據(jù)庫持久化技術在U8C中很多時候需要我們直接操作數(shù)據(jù)庫,對數(shù)據(jù)庫的訪問U8C提供了框架類。JDBCFrameWork為U8C訪問數(shù)據(jù)庫提供統(tǒng)一的數(shù)據(jù)操作訪問,簡化數(shù)據(jù)訪問操作。BaseDao是在JDBCFrameWork之上提供數(shù)據(jù)持久化的工具類。下圖是U8C數(shù)據(jù)庫訪問的層次圖:用友網(wǎng)絡科技股份有限公司核心類介紹PersistenceManager管理連接會話的生命周期,并提供了對單表VO操作的常用實現(xiàn);可以傳遞構造參數(shù)選擇不同的數(shù)據(jù)源。

JdbcSession對JDBC的API封裝和簡化SQLParameter封裝執(zhí)行SQL的參數(shù)ResultSetProcessor結果集處理回調(diào)接口,封裝結果集處理DbException封裝不同數(shù)據(jù)庫的異常,和統(tǒng)一處理不同數(shù)據(jù)庫的ErrorCodeBaseDAO/IUAPQueryBS/IVOPersistence管理連接會話的生命周期,提供了對單表VO操作的常用實現(xiàn)用友網(wǎng)絡科技股份有限公司JdbcSession幾種參數(shù)語法無參查詢Stringsql="select*frombd_deptdoc";//構造查詢語句Listlist=(List)session.executeQuery(sql,newArrayListProcessor());有參查詢Stringsql="select*frombd_deptdocwheredept_code=?";SQLParameterparam=newSQLParameter();//構造參數(shù)對象param.addParam(“aaa”);//添加參數(shù)Listlist=(List)session.executeQuery(sql,param,newArrayListProcessor());用友網(wǎng)絡科技股份有限公司JdbcSession幾種參數(shù)語法有參更新Stringsql="updatebd_deptdocsetdept_code=‘a(chǎn)aa’wheredept_code=?”;SQLParameterparam=newSQLParameter();//構造參數(shù)對象param.addParam(“bbb”);//添加參數(shù)session.executeUpdate(sql,param);無參批量更新Stringsql="updatebd_deptdocsetdept_code=‘a(chǎn)aa’wheredept_code=‘bbb’";session.addBatch(sql);//添加需要執(zhí)行的同構SQLintrows=session.executeBatch();//執(zhí)行用友網(wǎng)絡科技股份有限公司特殊參數(shù)Null參數(shù)param.addNullParam(java.sql.Types.INTEGER);Blob參數(shù)param.addBlobParam(newObject());Clob參數(shù)param.addClobParam(newString());用友網(wǎng)絡科技股份有限公司結果集合操作對查詢結果集合的操作,主要由ResultProcessor類來實現(xiàn),這是一個接口ResultProcessor包含有一個簡單的方法,不同的ResultProcessor實現(xiàn)返回不同的結果對象。系統(tǒng)提供了一系列常用的默認實現(xiàn)。用友網(wǎng)絡科技股份有限公司結果集合ArrayProcessor數(shù)組處理器,返回一個對象數(shù)組,結果集中只有一行數(shù)據(jù),其中結果集中每一列對應數(shù)組的一個元素。ArrayListProcessor數(shù)組集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個數(shù)組,每個數(shù)組對應結果集中的一行數(shù)據(jù),其中結果集中每一列對應數(shù)組的一個元素。MapProcessorHashMap處理器,返回一個HashMap,結果集中只有一行數(shù)據(jù),其中結果集合中每一列的列名和列值對應HashMap的一個關鍵字和相應的值。MapListProcessorHashMap集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個HashMap,每個HashMap對應結果集中的一行數(shù)據(jù),其中結果集合中每一列的列名和列值對應HashMap的一個關鍵字和相應的值。BeanProcessor

值對象處理器,返回一個JavaBean,結果集中只有一行數(shù)據(jù),該處理器能自動把結果集中的值按列的名稱映射到javaBean中,如:結果集中有名稱為”name”的字段,那么只要該java對象中有getName()方法就能把結果集合中”name”對應的值映射到對象中。BeanListProcessor值對象集合處理器,返回一個ArrayList集合,集合中的每一個元素是一個javaBean,每個javaBean對應結果集合中一行數(shù)據(jù),其中每個JavaBean中的數(shù)據(jù)映射關系和BeanProcess同理。還有ColumnProcessor,BeanMappingListProcessor,BeanMappingProcessor幾個類用友網(wǎng)絡科技股份有限公司BeanListProcessor作為結果集的例子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);}用友網(wǎng)絡科技股份有限公司單表對象持久化-前臺數(shù)據(jù)訪問使用IVOPersistence服務組件,進行增刪改操作;使用IUAPQueryBS服務組件,進行查詢操作。-后臺數(shù)據(jù)訪問使用BaseDAO工具類,進行單表對象的CRUD操作;使用PersistenceManager,進行單表對象的CRUD操作。-U8C系統(tǒng)中特殊的單表VO值對象,已經(jīng)包含了對象表映射信息-UAP集成開發(fā)工具自動生成使用規(guī)則SuperVO用友網(wǎng)絡科技股份有限公司開發(fā)一個普通單據(jù)03基本概念單據(jù):比如報銷時的報銷單,一般由表頭和表體組成(有些時候還含有表尾)。表頭中包含了單據(jù)的主信息,比如日期、部門、預算項目;表體包含了單據(jù)的明細信息,比如具體的事項和金額。單據(jù)類型:一個業(yè)務系統(tǒng)為了使結構更清晰,通常也是分層的。比如,供應鏈系統(tǒng)包含了采購、庫存等子系統(tǒng),每個子系統(tǒng)都具有一個系統(tǒng)類型,而每個子系統(tǒng)都會具有很多張單據(jù),為了區(qū)分這些單據(jù),為每張單據(jù)命名一個單據(jù)類型,作為唯一標識。模板:單據(jù)開發(fā)涉及到三大模板(單據(jù)模板、查詢模板、打印模板)。單據(jù)模板定義了單據(jù)的顯示外觀和基本框架,查詢模板定義了單據(jù)的查詢對話框,打印模板定義了單據(jù)信息打印到打印機的樣式和格式。VO:值對象,用作傳輸數(shù)據(jù)的載體。聚合VO:單據(jù)一般由表頭和表體構成,因此單據(jù)的數(shù)據(jù)表通常設計成主表和子表。聚合VO是對單據(jù)數(shù)據(jù)的抽象,它用于裝載主表VO和一組子表VO。UI工廠:雖然能通過三大模板定義出單據(jù)的顯示,但每張單據(jù)都有一些公共的或特殊的行為。UI工廠是一種單據(jù)開發(fā)框架,它將常用單據(jù)抽象成了很多類型,因此,UI工廠相當于是單據(jù)開發(fā)的代碼模板,預置了單據(jù)的各種公共行為,比如增、刪、改、查,并且可以連接到U8cloud流程平臺,支持審批、單據(jù)驅(qū)動等應用。用友網(wǎng)絡科技股份有限公司單據(jù)開發(fā)主要流程U8cloud平臺對開發(fā)過程進行很多抽象和封裝,使得單據(jù)開發(fā)變得非常容易。一般地,開發(fā)環(huán)境中,開發(fā)一個單據(jù)主要包括以下步驟:第一步、PowerDesigner中建立單據(jù)的物理模型(數(shù)據(jù)庫表),保存成pdm文件(xml);第二步、利用PowerDesigner生成單據(jù)的建表腳本(SQL語句),在數(shù)據(jù)庫中執(zhí)行此腳本建立數(shù)據(jù)庫表結構;第三步、利用U8cloud二次開發(fā)平臺中的數(shù)據(jù)字典生成工具導入pdm文件,生成相應的數(shù)據(jù)字典;第四步、利用企業(yè)建模平臺中的模版管理生成單據(jù)模版,將單據(jù)涉及的數(shù)據(jù)表生成VO對象;第五步、以UI工廠為基礎,應用Template模式,編寫自己的單據(jù)類。用友網(wǎng)絡科技股份有限公司生成pdm步驟第一步、啟動PD,會出現(xiàn)如下界面,選擇新建一個物理模型。用友網(wǎng)絡科技股份有限公司生成pdm步驟第二步、點擊確定后左側面板中會出現(xiàn)一個節(jié)點,右鍵properties后彈出畫面,設置此模型的name,code等。用友網(wǎng)絡科技股份有限公司生成pdm步驟第三步、在新建節(jié)點上點擊右鍵選擇New->Table或者點擊右側Toolbox,拖動下圖圈選圖標至主面板。先點擊這個圖標,然后在面板空白處點擊,出現(xiàn)一個table,雙擊彈出右邊的屬性界面用友網(wǎng)絡科技股份有限公司生成pdm步驟第四步、在Columns選項卡中定義列,列的中文描述。注意此處列的數(shù)據(jù)類型,一般地,主鍵前綴為pk_,數(shù)據(jù)類型為char(20),boolean類型的列前綴為b,數(shù)據(jù)類型為char(1),日期類型前綴為d,數(shù)據(jù)類型為char(10)等。用友網(wǎng)絡科技股份有限公司數(shù)據(jù)庫表pdm及SQL腳本的生成用友網(wǎng)絡科技股份有限公司導入數(shù)據(jù)字典數(shù)據(jù)字典是U8cloud二次開發(fā)工具中探測數(shù)據(jù)庫表結構的數(shù)據(jù)基礎,而不是采用每次需要數(shù)據(jù)都連接數(shù)據(jù)庫的方式。數(shù)據(jù)字典由上一步驟生成的pdm文件生成,U8cloud二次開發(fā)工具提供了相應的生成工具。步驟如下:第一步、啟動U8cloud企業(yè)建模平臺,選擇菜單系統(tǒng)管理工具->數(shù)據(jù)字典管理。用友網(wǎng)絡科技股份有限公司導入數(shù)據(jù)字典第二步、在彈出的界面中,選擇菜單項工具->導入數(shù)據(jù)字典。用友網(wǎng)絡科技股份有限公司確認數(shù)據(jù)字典是否導入成功在數(shù)據(jù)字典管理節(jié)點,點擊查找,根據(jù)編碼查找用友網(wǎng)絡科技股份有限公司生成VOVO值對象是數(shù)據(jù)傳遞的載體,其結構和數(shù)據(jù)庫表結構緊密相關。一般我們在一個專門的包中存放VO對象,VO對象命名規(guī)則表現(xiàn)為類名以VO結尾。U8cloud二次開發(fā)工具中也提供了相應的工具,用于生成數(shù)據(jù)庫表的VO類。

首先要生成的SQL腳本,生成數(shù)據(jù)庫表。建立了數(shù)據(jù)庫表后就可以手動生成VO了。

第一步、啟動企業(yè)建模平臺二次開發(fā)平臺,選擇集成開發(fā)工具。用友網(wǎng)絡科技股份有限公司生成VO用友網(wǎng)絡科技股份有限公司功能注冊用友網(wǎng)絡科技股份有限公司自定義菜單新建的功能節(jié)點,可以自定義菜單,修改菜單的位置。用友網(wǎng)絡科技股份有限公司權限分配

權限管理中引入了“角色”概念。先規(guī)劃好各種角色并分配權限,再將用戶與角色關聯(lián)起來,將角色作為橋梁把“用戶”和“權限”連接起來。換句話說就是:通過規(guī)劃好各種角色先將用戶分類,再為各類用戶分配權限。用友網(wǎng)絡科技股份有限公司建立單據(jù)模板第一步,輸入單據(jù)模板類型,再點顯示模板第二步,選擇對應的主子表第三步,增加用友網(wǎng)絡科技股份有限公司建立單據(jù)模板彈出的界面的右上是我們剛才選擇的數(shù)據(jù)表,左上為表頭部分,左中為表體部分。左鍵單擊選中主表(wa_tm_apply_main)不放,拖動到表頭區(qū)域松開,此時會彈出對話框。用友網(wǎng)絡科技股份有限公司建立單據(jù)模板同樣的方法,我們可以把一個子表拖到表體位置,再拖另外一個表體的時候我們先右鍵點這個按鈕用友網(wǎng)絡科技股份有限公司建立單據(jù)模板把開始新建的項目刪除掉。用友網(wǎng)絡科技股份有限公司單據(jù)模板項目顯示屬性與高級屬性單據(jù)模板相應區(qū)域,項目上點擊右鍵可以新加項目,項目排序;在編輯區(qū)選擇某個屬性控件后可以在右下方的屬性編輯區(qū)進行屬性編輯。可以設置其可見性、是否必輸項、參照信息等屬性。在高級頁簽可以設置數(shù)據(jù)類型,編輯,顯示公式。數(shù)據(jù)類型選擇參照時,可以通過下拉框選擇系統(tǒng)內(nèi)置的參照。

對于一些字段我們可能需要顯示公式,編輯公式。顯示公式界面加載時會執(zhí)行,編輯公式在編輯框發(fā)生改變時會被執(zhí)行。用友網(wǎng)絡科技股份有限公司根據(jù)單據(jù)模板生成查詢打印模板用友網(wǎng)絡科技股份有限公司建立工程包結構Public目錄存放接口和公共代碼(比如VO和公共算法)Private目錄存放實現(xiàn)和其它實現(xiàn)細節(jié)Client目錄存放客戶端代碼META-INF目錄存放模塊配置文件目錄,包括module.xml文件和xxx.upm接口配置文件。詳細代碼結構請看視頻講解。用友網(wǎng)絡科技股份有限公司各個目錄區(qū)別與關系用友網(wǎng)絡科技股份有限公司配置文件規(guī)范用友網(wǎng)絡科技股份有限公司后臺接口packagenc.itf.sample;

public

interfaceIHelloWorld{ StringsayHello(StringtoName);}packagenc.impl.sample;

importnc.itf.sample.IHelloWorld;

public

classHelloWorldImplimplementsIHelloWorld{

publicStringsayHello(StringtoName){ StringretValue="Welcome"+toName+"exploreU8C"; System.out.println(retValue);

returnretValue; }}用友網(wǎng)絡科技股份有限公司部署組件<?xmlversion="1.0"encoding="gb2312"?><module

name="nc.itf.ncdemo.ejb.NCDEMOSpublicEJB">

<public>

<component

priority="0"

remote="true"

singleton="true"

supportAlias="false"

tx="CMT">

<interface>nc.itf.sample.IHelloWorld</interface>

<implementation>nc.impl.sample.HelloWorldImpl</implementation>

</component>

</public></module>編輯或新建該產(chǎn)品模塊下的模塊部署描述文件(META-INF下的ncdemo.upm文件),加入一個公共組件:遠程組件只要指出他的remote屬性為true即可。用友網(wǎng)絡科技股份有限公司Junit客戶端調(diào)用packagenc.ui.sample;importmon.NCLocator;importnc.bs.framework.test.AbstractTestCase;importnc.itf.sample.IHelloWorld;public

classTestHelloWorldRemotInterfaceextendsAbstractTestCase{

public

voidtest123(){

try{ IHelloWorldhello=(IHelloWorld)NCLocator.getInstance().lookup(

"nc.itf.sample.IHelloWorld"); System.out.println(hello.sayHello("u8c")); }catch(java.lang.ThrowableivjExc){ ivjExc.printStackTrace(); } }

publicTestHelloWorldRemotInterface(){

super(); }

protected

StringgetHost(){

returnSystem.getProperty("nc.host","localhost");

}}用友網(wǎng)絡科技股份有限公司UIFrame框架實現(xiàn)層結構圖數(shù)據(jù)通訊機制-觀察者模式按鈕管理狀態(tài)管理標準動作實現(xiàn)開發(fā)一個支持審批流的節(jié)點04升級demo支持審批流用友網(wǎng)絡科技股份有限公司增加單據(jù)類型用友網(wǎng)絡科技股份有限公司增加單據(jù)類型項目說明:類型代碼:手工輸入,最大長度為4個字符,可以輸入字母和數(shù)字,不允許重復。類型名稱:業(yè)務單據(jù)名稱,手工輸入,不允許重復。單據(jù)大類:表示單據(jù)類別,用于區(qū)分單據(jù)類型的主子關系。節(jié)點編號:標識單據(jù)類型的關聯(lián)UI,一般為關聯(lián)的制單功能節(jié)點編碼。審批節(jié)點編號:標識單據(jù)類型的關聯(lián)UI,一般為關聯(lián)的審批維護類功能節(jié)點編碼。主表參照的固定條件語句:被其它單據(jù)參照時自己填寫的固定的SQL條件語句。參照查詢對應的DMO類:用于查詢單據(jù)VO數(shù)據(jù)的業(yè)務邏輯類。必須實現(xiàn)接口nc.bs.pub.pf.IQueryData以及nc.bs.pub.pf.IQueryData2(參見后面章節(jié))。審批流檢查類:通過編寫審批流檢查類,并在該類中實現(xiàn)審批流相關接口,來達到使用審批流管理業(yè)務單據(jù)以及控制審批流行為的目的(參見后面章節(jié))。實現(xiàn)IcheckState,IbackCheckState(可不實現(xiàn))的接口的DMO類文件會計平臺類:財務會計平臺所需的類。實現(xiàn)IaccountProcMsgIAccountRetVoucher的接口的DMO類文件是否項目核算:項目是否參與核算。是否為根節(jié)點:針對單據(jù)大類,用于實現(xiàn)單據(jù)主子關系。是否發(fā)送會計平臺:用于財務會計平臺。如果該單據(jù)不直接傳送財務會計平臺,則不選擇自定義1(def1)

溫馨提示

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

評論

0/150

提交評論