




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
TUXEDO服務(wù)設(shè)計和編碼規(guī)范
提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則概述制定編碼規(guī)范的最主要的目的是為了對產(chǎn)出代碼的長期維護。通常負責維護代碼的人大多都不是開發(fā)者本人,如果有一個統(tǒng)一的代碼格式以及說明就可以減少混淆提高理解速度。因此,下列的編碼規(guī)范是基于良好的編碼習慣和可讀性的原則來制定的。TUXEDO服務(wù)是在UNIXC&C++或UNIXPRO*C&C++的開發(fā)環(huán)境設(shè)計和開發(fā),對于文件排版、變量命名規(guī)范、語句編寫規(guī)范等不再給出,該部分內(nèi)容請參考<C&C++編碼規(guī)范>提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則文件體系結(jié)構(gòu)Run/*–
開發(fā)環(huán)境根目錄*/|-cfg/*配置文件目錄存放TUXDEO環(huán)境參數(shù)文件*//*數(shù)據(jù)庫登錄參數(shù)文件和其它參數(shù)文件*/|-include/*頭文件目錄*/|-shell/*shell腳本文件目錄*/|-bin/*可執(zhí)行文件目錄*/|-lib/*靜態(tài)庫文件目錄*/|-log/*日志文件目錄*/|-public/*公共功能文件目錄*/|-|-bin/*可運行程序*/|-|-server/*TUXDEO服務(wù)端公共功能源代碼*/|-|-client/*TUXDEO客戶端公共功能源代碼*/|-<src>(…)/*應(yīng)用程序目錄*/…
…提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則源文件結(jié)構(gòu)C、pc、cpp文件都在文件頭加入文件注釋。H頭文件結(jié)構(gòu)如下:#ifndef _DATA_DEF_H_#define _DATA_DEF_H_#inlcude<stdio.h>/*incluede區(qū)*/#defineMM30/*宏定義區(qū)*//*結(jié)構(gòu)、類、變量等定義區(qū)*/#endif
提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則TUXEDO服務(wù)程序組成*業(yè)務(wù)處理程序*TUXEDO服務(wù)程序*公共程序文件提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則文件命名規(guī)范業(yè)務(wù)處理文件TUXEDO服務(wù)文件頭文件命名規(guī)范業(yè)務(wù)處理文件命名規(guī)范文件名稱模板:cXY...Y.cpc-文件名第一個字符,為固定字符c(Component)X-文件歸屬的子系統(tǒng)編號
Y...Y-功能縮寫,建議不超過20個字符.cp-pro*c文件后綴文件名稱舉例:cxCustInfo.cpTUXEDO服務(wù)文件命名規(guī)范文件名稱模板:RXYY.cp名稱模板說明:
R-文件名第一個字符,為固定字符R(…)
每個文件定義一個或多個TUXEDO服務(wù),組成一個服務(wù)組
X-文件歸屬的子系統(tǒng)編號
Y...Y-功能縮寫,建議不超過20個字符
.cp-pro*c文件后綴即使程序文件不包括對數(shù)據(jù)庫操作,為了統(tǒng)一風格,建議設(shè)計為*.cp文件文件名稱舉例:RxGetFMCode.cp頭文件命名規(guī)范命名規(guī)范頭文件名稱模板:XY…Y.h名稱模板說明:
X-文件歸屬的子系統(tǒng)編號
Y…Y–
業(yè)務(wù)描述,建議不超過20個字符
.h-后綴頭文件名稱舉例:Xcm.h提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則TUXEDO服務(wù)命名規(guī)范服務(wù)名稱模板:sX<表意>ABCD名稱模板說明:
s-服務(wù)名第一個字符,為固定字符s(server)X-文件歸屬的子系統(tǒng)編號說明:TUXEDO服務(wù)在服務(wù)組文件定義服務(wù)名稱舉例:sxGetCustName結(jié)構(gòu)體的命名結(jié)構(gòu)體名稱模板:sXA…JABCs-結(jié)構(gòu)名稱第一個字符,小寫,structX-結(jié)構(gòu)歸屬的子系統(tǒng)編號A…J-業(yè)務(wù)含義,建議不超過20個字符ABC–
有三種情況
In–
輸入?yún)?shù)
Out–
輸出參數(shù)提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范11.1概述1.2文件體系結(jié)構(gòu)1.3源文件結(jié)構(gòu)1.4TUXEDO服務(wù)程序組成1.5文件命名規(guī)范1.6TUXEDO服務(wù)命名規(guī)范1.7編碼規(guī)則服務(wù)編碼規(guī)則-1規(guī)則1
常連接必須定義放在tpsvrinit函數(shù)中,斷開放在tpsvrdone函數(shù)中。inttpsvrinit(intargc,char*argv[]){ spublicDBLogin(NULL,NULL,"sGetWorkData",LABELDBCHANGE); return(0);}voidtpsvrdone(){ spublicDBClose(LABELDBCHANGE);}服務(wù)編碼規(guī)則-2規(guī)則2
必須使用get_input_parms32_2函數(shù)取TUXEDO的傳入?yún)?shù)。廢棄get_input_parms32函數(shù)。規(guī)則3
必須使用add_value32函數(shù)向TUXEDO中壓入一個值。規(guī)則4
必須使用Fget32函數(shù)從TUXEDO中讀取多行中取一個值。規(guī)則5
數(shù)據(jù)庫登錄必須用spublicDBLogin函數(shù)登錄。規(guī)則6必須使用sChkDBLogin函數(shù)校驗數(shù)據(jù)庫連接。此函數(shù)用于數(shù)據(jù)庫常連接的數(shù)據(jù)庫連接驗證。服務(wù)編碼規(guī)則-3規(guī)則7TUXEDO服務(wù)中不能出現(xiàn)SQL語句,所有的SQL語句必須出現(xiàn)在公用函數(shù)中。規(guī)則8控制注釋的輸出。注釋采用統(tǒng)一的注釋控制規(guī)則,對日志進行非類,分監(jiān)控類、調(diào)試類等,原則上服務(wù)中不能出現(xiàn)printf等語句。使用DBUG_ENTER、DBUG_PRINT等函數(shù)。規(guī)則9調(diào)用服務(wù)統(tǒng)一入口函數(shù)CallTuxedo,跟蹤服務(wù)的入口參數(shù)信息。規(guī)則10輸入輸出參數(shù)的長度不能超過1000個字節(jié),否則會溢出。規(guī)則11TUXEDO的錯誤代碼和錯誤信息必須放在SVC_ERR_NO32和SVC_ERR_MSG32中,不能占用GPARM32_X的位置。服務(wù)編碼規(guī)則-4規(guī)則12 TUXEDO的返回值的數(shù)量不能超過50個;如果超過50個參數(shù),參數(shù)按行放在第一列GPARM32_0中。規(guī)則13
輸出參數(shù)緩沖的內(nèi)存分配,必須調(diào)用函數(shù)MemoryAllocate32。規(guī)則14
一個TUXEDOSERVER中的SERVICE不能超過10個。規(guī)則15
每個SERVICE的函數(shù)說明,必須在SERVICE前說明清楚,包括描述、輸入輸出,返回值。提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范22.1技術(shù)架構(gòu)2.2開發(fā)流程2.3案例開發(fā)技術(shù)架構(gòu)-概述技術(shù)架構(gòu)-uType介紹接口標準化,所有系統(tǒng)函數(shù)的接口格式統(tǒng)一擴展性強,在接口不變的情況的下,參數(shù)可以樹狀擴充升級、維護簡單,風險小跨平臺應(yīng)用,可以在任意平臺間輕便移植技術(shù)架構(gòu)-uType介紹【重點關(guān)注藍色字體部分的描述】typedefstructtagutypeutype;typedefstructtague{inttype;//包含的uType數(shù)據(jù)條數(shù)
union{charv_char;intv_int;longv_long;doublev_double;char*p_char;utype*p_utype;}value;}ue;
structtagutype{intcnt;intcapacity;ue**ppe;};utypeintstringutypedoublestringutypestringstringstring技術(shù)架構(gòu)-uType介紹uType函數(shù)原型要求系統(tǒng)內(nèi)的函數(shù)全部采用一下接口進行描述,不同函數(shù)只是functionName不同。函數(shù)原型如下:utype*functionName(utype*puInParam,TCtrlInfo*ptCtrlInfo)3.2 uType接口數(shù)據(jù)定義utype是個樹狀的數(shù)據(jù)結(jié)構(gòu)描述,在uType結(jié)構(gòu)體內(nèi)可以無限級擴展。技術(shù)架構(gòu)-組件分層SERVERSERVICEBP(BusinessProcess)BC(BusinessComponent)所有業(yè)務(wù)集中在BC/BP,Server/Service不能有邏輯提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范22.1技術(shù)架構(gòu)2.2開發(fā)流程2.3案例開發(fā)開發(fā)流程-目錄結(jié)構(gòu)開發(fā)目錄結(jié)構(gòu):framework /*開發(fā)環(huán)境根目錄*/├─bin /*可執(zhí)行文件目錄*/├─include /*頭文件目錄*/├─lib /*靜態(tài)庫目錄*/├─src /*源代碼目錄*/│├─baselib /*基礎(chǔ)庫類庫*/││├─BossLib /*BOSS基礎(chǔ)庫目錄*/││└─。。。。。。 /*其他基礎(chǔ)庫*/│├─custsvc /*客戶服務(wù)子系統(tǒng)*/││├─business /*業(yè)務(wù)組件*/││├─custsvcBCP /*原子服務(wù)*/││└─server /*業(yè)務(wù)組件發(fā)布*/│├─prodmng /*產(chǎn)品管理子系統(tǒng)*/│├─。。。。。。 /*其他子系統(tǒng)*/│├─svctest /*業(yè)務(wù)測試目錄*/│├─tools /*輔助工具*/│└─test /*測試目錄*/├─synlib /*動態(tài)庫目錄*/└─tools /*輔助工具*/開發(fā)流程-開發(fā)步驟開發(fā)流程-開發(fā)步驟以“客戶服務(wù)”為例:原子服務(wù)開發(fā)使用autoBC工具生成原子服務(wù)原子服務(wù)的命名規(guī)則:c+操作的表名+.cpp,例如cdCustMsg.cpp內(nèi)部函數(shù)命名規(guī)則:c+數(shù)據(jù)操作符(Q、I、U、D)+操作的表名+.cpp,例如:cQdCustMsg(查詢用戶資料),cIdCustMsg(插入用戶資料),cUdCustMsg(更新用戶資料),cDdCustMsg(刪除用戶資料)修改makefile文件,將生成的原子服務(wù)編譯成庫libcustsvcBCP.a,供業(yè)務(wù)構(gòu)件使用將生成的原子服務(wù)函數(shù)在頭文件中custsvcBCP.h聲明業(yè)務(wù)組件開發(fā)業(yè)務(wù)組件發(fā)布開發(fā)流程-開發(fā)步驟以“客戶服務(wù)”為例:原子服務(wù)開發(fā)業(yè)務(wù)組件開發(fā)編寫業(yè)務(wù)組件,執(zhí)行一個完整的業(yè)務(wù)邏輯,需要調(diào)用libcustsvcBCP.a中的原子服務(wù)業(yè)務(wù)組件的命名規(guī)則:pub+業(yè)務(wù)名稱+.cpp,例如:pubCreateUser.cpp修改makefile文件,將業(yè)務(wù)組件編譯成客戶服務(wù)組件庫libcustsvc.a將生成的業(yè)務(wù)組件在頭文件中custsvc.h聲明業(yè)務(wù)組件發(fā)布開發(fā)流程-開發(fā)步驟以“客戶服務(wù)”為例:原子服務(wù)開發(fā)業(yè)務(wù)組件開發(fā)業(yè)務(wù)組件發(fā)布編寫業(yè)務(wù)組件發(fā)布文件,在文件中添加自己業(yè)務(wù)組件,extern"C"voidsMovePhone(TPSVCINFO*transb){ TuxInterface("sCMultiUser",transb,LABELDBCHANGE,"CreateMultiUser",CreateMultiUser,LONG_CONN_TYPE,0);}發(fā)布文件命名規(guī)則:R+業(yè)務(wù)名稱+.cpp,例如:RCreateUser.cpp修改makefile文件,添加業(yè)務(wù)組件編譯項編譯業(yè)務(wù)組件文件,重新啟動服務(wù)(server)開發(fā)流程-BC生成器使用autoBC腳步可以直接生成訪問數(shù)據(jù)庫實體表的原子接口函數(shù),包括selectinsertupdatedelete等接口,通過原子接口可以屏蔽外圍系統(tǒng)對數(shù)據(jù)庫的直接訪問。語法如下:
autoBCdbcustadm/dbcustadmahltXXcFuncNamesqlfile[suffix]開發(fā)流程-BC生成器autoBCdbcustadm/dbcustadmahlt
X
Y
cFuncName
sqlfile
[suffix]數(shù)據(jù)庫連接串輸入?yún)?shù)形式:0/10:單值,1:多值輸出參數(shù)形式:0/10:單值,1:多值原子函數(shù)名數(shù)據(jù)庫操作SQL文件(可選參數(shù))動態(tài)表后綴名開發(fā)流程-測試工具使用clut工具可以對編寫完成的utype輸入輸出格式的Tuxedo服務(wù)進行測試:
clut.sh業(yè)務(wù)名稱.clut開發(fā)流程-測試工具clut文件格式“-”+數(shù)據(jù)類型+值+注釋信息以“-”開頭,每個嵌套層比上一層多一個“-”,類似于XML文件格式“#”為注釋符號舉例:-utype#TOprInfo--string0208091200000008#sCustOrderId--long2000012805097#lLoginAccept--string1104#sOpCode--stringba0001#sLoginNo--stringCODCDOJHGECIFONG#sLoginPwd--string172.16.24.100#sIpAddress--string10032#sOprGroupId--string2019091209:59:01#sOpTime開發(fā)流程-開發(fā)案例以“用戶開戶”業(yè)務(wù)組件為例:SQL文件準備自動生成BC原子服務(wù)編寫業(yè)務(wù)組件發(fā)布業(yè)務(wù)組件測試業(yè)務(wù)組件提綱舊版TUXEDO規(guī)范新版TUXEDO規(guī)范22.1技術(shù)架構(gòu)2.2開發(fā)流程2.3案例開發(fā)開發(fā)流程-開發(fā)案例SQL文件準備 在framework/src/custsvc/custsvcBCP/sqlFile目錄下編寫插入dCustMsg表的SQL文件cIdCustMsg.sql,文件內(nèi)容:
INSERTINTOdCustMsg
(ID_NO,CUST_ID,CONTRACT_NO,IDS,PHONE_NO……)
VALUES
(:ID_NO<long>,:CUST_ID<long>,:CONTRACT_NO<long>,:IDS<int>,:PHON
E_NO<char
[15+1]>……)
sqlFile規(guī)則:只能是單條insert/update/delete/select的SQL語句綁定變量名稱和字段名稱一致,前面加“:”號,后面跟“<字段類型>”,對于number型字段大于8的用long型表示,小于8的用int表示開發(fā)流程-開發(fā)案例自動生成BC原子服務(wù) 執(zhí)行如下語句,自動生成BC原子服務(wù)到上一級的cdCustMsg.cpp:
autoBCdbcustadm/dbcustadmahltcIdCustMsg00cIdCustMsg.sql>../cdCustMsg.cpp
修改custsvcBCP.h文件,增加函數(shù)聲明和結(jié)構(gòu)定義
utype*cIdCustMsgExt(utype*inParam,TCtrlInfo*errInfo);
修改makefile文件,增加cdCustMsg編譯項
修改同級目錄下的all.sh,增加該語句備份
其他“用戶開戶”要用到的原子服務(wù)生成步驟和上面步驟相同開發(fā)流程-開發(fā)案例編寫業(yè)務(wù)組件 在framework/src/custsvc/business目錄下編寫pubCreateUser.cpp“用戶開戶”業(yè)務(wù)組件 編寫規(guī)則:頭文件引用#include”custsvc.h“對于函數(shù)中用到的utype類型,定義uAutoPtr類型,如果返回該類型需要調(diào)用release()方法存取utype類型,使用utSetXXX和utGetXXX方法
修改文件,增加函數(shù)聲明和結(jié)構(gòu)定義
utype*CreateMultiUser(utype*puInParam,TCtrlInfo*ptCtrlInfo);
修改makefile文件,增加pubCreateUser編譯項
開發(fā)流程-開發(fā)案例發(fā)布業(yè)務(wù)組件
在framework/src/custsvc/server目錄下發(fā)布RCreateUser.cpp“用戶開戶”業(yè)務(wù)組件
/** *inparamsCMultiUser批量開戶函數(shù) */ extern"C"voidsCMultiUser(TPSVCINFO*transb) { TuxInterface("sCMultiUser",transb,LABELDBCHANGE,"
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生理學(xué)綜合試題及答案
- 無菌操作院感試題及答案
- 大學(xué)化學(xué)考試重點解析試題及答案
- 注冊土木工程師學(xué)習路徑規(guī)劃試題及答案
- 組織病理學(xué)試題及答案
- 綠色中國考試題及答案
- 快速市場進入策略的試題及答案
- 護士加考試題及答案
- 金融資產(chǎn)投資公司股權(quán)投資試點方案優(yōu)化與實施
- 家具行業(yè)創(chuàng)意設(shè)計的未來趨勢考核試題及答案
- 內(nèi)河船舶船員基本安全知識考試題庫300題(含答案)
- 2025年人教版中考生物復(fù)習七八年級4冊知識點提綱
- 校長論壇交流發(fā)言:引領(lǐng)教師專業(yè)成長的核心能力點燃教育變革的引擎
- 2024 年普通高等學(xué)校招生全國統(tǒng)一考試新課標 I 卷-數(shù)學(xué)試卷-全國
- 《春夏中醫(yī)養(yǎng)生》課件
- 2024年02月北京2024年北京銀行總行社會招考(217)筆試歷年參考題庫附帶答案詳解
- 《高速公路設(shè)計審查技術(shù)指南》
- 燃氣崗位安全培訓(xùn)
- 《pmp項目管理培訓(xùn)》課件
- 機械設(shè)計基礎(chǔ)B知到智慧樹章節(jié)測試課后答案2024年秋哈爾濱工程大學(xué)
- 云南省職業(yè)技能大賽(健康照護賽項)理論參考試題及答案
評論
0/150
提交評論