UESB平臺開發(fā)說明_第1頁
UESB平臺開發(fā)說明_第2頁
UESB平臺開發(fā)說明_第3頁
UESB平臺開發(fā)說明_第4頁
UESB平臺開發(fā)說明_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、UESB平臺開發(fā)說明摘要1. 系統(tǒng)架構2. 基本概念3. 開發(fā)過程4. 通用節(jié)點5. 開發(fā)規(guī)范系統(tǒng)架構TCP/IP通訊HTTP通訊MQ通訊TUXDO通訊服務識別路由分揀服務鑒權同步服務異步服務定時服務輪詢服務計時服務Web Service通訊流量控制消息總線消息總線渠道隔離服務層路由層通訊層同步服務的請求應答時序圖請求方通訊層路由層同步服務拒絕服務檢查通過檢查未通過組服務拒絕報文服務提供方調服務流程同步通訊請求同步通訊應答接收報文記錄IP、請求時間、分配ID身份認證服務識別服務鑒權路由分揀流量控制源碼目錄結構(1) - uesb |- bin |- doc - 文檔 |- inc - 頭文件

2、|- lib |- mak - 編譯選項 |- Makefile - src - 源碼 - src (接左邊) |- appfunc - 應用相關函數(shù) |- baffle - 擋板 |- common - 通用函數(shù) |- esbcore - 平臺主控 |- Makefile |- node - 節(jié)點函數(shù) |- recover - 沖正重發(fā) |- router - 路由 |- service - 服務 |- timer - 計時 |- tools - 工具類 |- transport - 通訊 - unittest - 節(jié)點單元測試源碼目錄結構(2) |- common (通用函數(shù)) | |-

3、config - 配置文件 | |- dbapi - 數(shù)據(jù)庫 | |- dict - 字典 | |- flow - 流程引擎 | |- ipc - IPC相關 | |- logger - 日志 | |- Makefile | |- msgconv - 報文解析 | |- net - 通訊類 | |- soften - 加解密 | - utils - 其它工具 |- service (服務) | |- async - 異步服務 | |- cron - 定時服務 | |- Makefile | |- poll - 輪詢服務 | |- reject - 拒絕服務 | |- sync - 同步服務 |

4、 - timeout - 超時服務運行環(huán)境目錄結構 |- runtime | |- bin - 可執(zhí)行程序 | |- data - 數(shù)據(jù)文件 | |- dep - 第三方依賴庫 | |- etc - 運行配置 | |- flow - 流程文件 | |- lib - 動態(tài)庫 | |- log - 日志 | |- sql - SQL文件 | |- tbin - 腳本 | - var - 運行時文件 |- etc (運行配置) | |- .DBUSERFILE - 數(shù)據(jù)庫密碼 | |- esb.conf - 主配置文件 | |- ftp.conf - FTP配置 | |- log.conf - 日志

5、配置 | |- msgrule - 拆組包規(guī)則 | | |- 8583 - 類8583 | | |- delim - 分隔符 | | - xml - XML | - tcp.conf - TCP通訊配置基本概念l數(shù)據(jù)字典KEY-VALUE類型的鍵值對,即數(shù)據(jù)可按照不同的字典名放置在HASH結構的內存里,使用時可根據(jù)字典名將數(shù)據(jù)取出;數(shù)據(jù)類型:dict_t * 它指向所有字典存放的內存數(shù)據(jù)區(qū)地址常用函數(shù):dict_put() 存入字典,dict_get() 取出字典;l節(jié)點函數(shù)統(tǒng)一接口類型的動態(tài)庫函數(shù),使用dlopen方式打開相應動態(tài)庫并調用;函數(shù)接口:node_function(dict_t

6、*in, dict_t *out);l流程文件將節(jié)點函數(shù)按業(yè)務邏輯串聯(lián)起來并以XML文件格式保存,每個節(jié)點函數(shù)就相當于XML的樹形結構里的子節(jié)點;數(shù)據(jù)字典相關函數(shù)(1) int dict_get (dict_t *pDict, char *sKey, char *ppValue) 從數(shù)據(jù)字典里按字典名取值 int dict_put (dict_t *ppDict, char *sKey, char *sValue, int iSize) 按字典名將值存入數(shù)據(jù)字典, 同名字典則會覆蓋原值 void dict_del (dict_t *ppDict, char *sKey) 按照名稱刪除字典 vo

7、id dict_free (dict_t *ppDict) 刪除整個數(shù)據(jù)字典數(shù)據(jù)字典相關函數(shù)(2) void dict_copy (char *name, dict_t *ppDest, dict_t *pSrc) 將以相同名稱開頭的字典從源數(shù)據(jù)字典復制到目的數(shù)據(jù)字典 void dict_move (char *name, dict_t *ppDest, dict_t *pSrc) 將以相同名稱的字典從源數(shù)據(jù)字典復制到目的數(shù)據(jù)字典 void dict_rename (char *src_name, dict_t *pSrc, char *dest_name, dict_t *ppDest) 將

8、源數(shù)據(jù)字典復制到目的數(shù)據(jù)字典并重新命名 void dict_clone (dict_t *ppDest, dict_t *pSrc) 將源數(shù)據(jù)字典全部復制到目的數(shù)據(jù)字典 void dict_print (dict_t *pDict) 輸出數(shù)據(jù)字典的內容常用的數(shù)據(jù)字典l SYS_ENTER_CODE -返回值l SYS_ENTER_NAME -節(jié)點IDl SYS_ENTER_DESC -節(jié)點名稱l SYS_RSPCODE - 響應碼l SYS_RSPINFO - 響應信息l SYS_SVCCODE 內部服務標識碼l SYS_PLATSEQNO 平臺流水號l SYS_DATETIME 系統(tǒng)日期時間

9、(YYYYMMDDhhmmss)l SYS_DATE - 系統(tǒng)日期(YYYYMMDD)l SYS_TIME 系統(tǒng)時間(hhmmss)l SYS_MSGTOBESENT 要發(fā)送的報文l SYS_MSGRECEIVED 接收到的報文節(jié)點函數(shù)參數(shù)傳遞l接口統(tǒng)一: int node_function(dict_t *in, dict_t *out);l所有的入?yún)⒍夹枰ㄟ^入口數(shù)據(jù)區(qū)in來傳遞,簡稱為I表;l所有的出參都放置到出口數(shù)據(jù)區(qū)out,簡稱為O表;l不同節(jié)點函數(shù)間傳遞參數(shù)時,還有一個隱藏的公共數(shù)據(jù)區(qū)public,稱為P表;l節(jié)點函數(shù)調用前,流程引擎會從P表按入口參數(shù)的要求取數(shù)據(jù)并放入I表,如果有

10、需要傳出的參數(shù),則將字典放到O表,流程引擎會從O表根據(jù)出口參數(shù)的設置取數(shù)據(jù)放入P表,以供下一節(jié)點函數(shù)使用;節(jié)點函數(shù)配置 identifier:節(jié)點ID,用來在流程文件里定位節(jié)點filename:節(jié)點函數(shù)所在的動態(tài)庫functionname:節(jié)點函數(shù)名origin 入?yún)㈩愋停校簐ariable, allparam, literal, changeparam, getenv, inheritvar, inheritconst, table, istrmerge, pstrmerge, istrsplit, pstrsplit, lpadded, rpaddedtype:調用類型:so - 動態(tài)庫

11、flow - 子流程null 設固定值origin 出參類型:allparam, variable, changeparam, tablevalue 節(jié)點返回值identifier 下一節(jié)點IDprint:打印標識,若為true則在日志里輸出P表的字典內容節(jié)點函數(shù)入?yún)㈩愋停?)l allparam 將P表里的所有字典都傳入I表,name和value都為空:l variable 將P表里指定名字的字典傳入I表,name=“字典名”,value為空,例如:l literal 將字面值賦給字典并傳入I表,name=“字典名”,value=“字面值”,如: 即字典FILENAME的值就是”tcp.co

12、nf”l changeparam 將P表里字典A的值賦給字典B并傳入I表,name=“字典B”, value=“字典A” 即字典BBB的值來自于字典AAAl getenv 取環(huán)境變量值賦給字典并傳入I表,如: 字典DIR的值為環(huán)境變量$RUNDIR節(jié)點函數(shù)入?yún)㈩愋停?)l lpadded 左補字符,name為字典名,value為填充格式,如:其中:value的格式為逗號,分隔的三部分:最大長度,填充字符,字典/固定值,”40, ,+XM”表示將字典XM的值左補空格至總長度為40字節(jié),有加號+表示從字典取值,否則取字面值;l rpadded 與lpadded類似,為右補字符;l istrmerg

13、e 將value里的內容合并到一個字符串里并賦給name表示的字典,并傳入I表;其中value里的格式表示將環(huán)境變量$RUNDIR拼上固定字符串”/etc/msgrule/delim/HLDB/host_”,再拼上字典TRANCODE的值(從第0位開始取4位,若為-1則表示取全部),最好拼上固定字符串”.cfg”,得到的字符串賦給字典DELIM_CFG_FILE,并傳入I表;l pstrmerge 與istrmerge類似,只是字典還會保存到P表,下個節(jié)點還能訪問到這個字典(注意:p表示public,i表示in)節(jié)點函數(shù)入?yún)㈩愋停?)l inheritvar 類似于changeparam,但是

14、字典會被保存到P表(inherit表示繼承) 字典BBB不僅會傳入I表,也會存到P表l inheritconst 類似于literal,name字典取value里放的字面值,同時保存到P表l istrsplit 字符串拆分,將name字典里的值,按照value里的格式拆分到各個字典里 即從SOURCE字典取值,從第0位開始取4位放到字典AAAA里,從第5位取8位放到字典BBBB里,從12位開始取8位到CCCC里l pstrsplit 類似于istrsplit,只是拆分后各字典的值還會保存到P表l table 表格類型,會將P表里name+.開頭的字典都復制到I表 復制list.1, list.

15、2, list.2.1, 等等以”list.”開頭的字典節(jié)點函數(shù)出參類型l 出參類型只有4種l allparam 所有設置到O表里的字典都復制到P表l variable 將設置到O表里的name字典保存到P表l changeparam 將設置到O表里的name字典,復制到P表里的value字典l table 將O表里所有name+.開頭的字典都復制到P表里通用節(jié)點(1)類別類別動態(tài)庫動態(tài)庫節(jié)點函數(shù)節(jié)點函數(shù)說明說明通訊libtcpnode.sonode_tcp_callTCP同步通訊節(jié)點libhttpnode.sonode_http_callHTTP同步通訊節(jié)點libftpnode.sonode

16、_ftp_getFTP下載文件節(jié)點node_ftp_putFTP上傳文件節(jié)點拆組包libmsgxmlnode.sonode_xml_unpackXML解包節(jié)點node_xml_packXML組包節(jié)點libmsg8583node.sonode_8583_unpack8583解包節(jié)點node_8583_pack8583組包節(jié)點邏輯運算liblogicnode.sonode_logic_switch多路選擇節(jié)點node_logic_judge邏輯判斷節(jié)點node_simple_calc簡單運算節(jié)點通用節(jié)點(2)類別類別動態(tài)庫動態(tài)庫節(jié)點函數(shù)節(jié)點函數(shù)說明說明數(shù)據(jù)庫libdbpubnode.sonode_

17、db_insert通用插入節(jié)點node_db_update通用更新節(jié)點node_db_select通用單行查詢節(jié)點node_db_delete通用刪除節(jié)點node_db_get_row獲取單行記錄節(jié)點node_db_get_all_rows獲取多行記錄節(jié)點node_db_exec_sql執(zhí)行SQL節(jié)點node_db_start_tranaction開始事務節(jié)點node_db_commit提交事務節(jié)點node_db_rollback回滾事務節(jié)點node_db_mselect_runparam從內存運行參數(shù)表里取參數(shù)值通用節(jié)點(3)類別類別動態(tài)庫動態(tài)庫節(jié)點函數(shù)節(jié)點函數(shù)說明說明平臺libplatno

18、de.sonode_apply_timer申請計時節(jié)點node_clear_timer清除計時節(jié)點node_pack_imheader裝配內部報文頭節(jié)點node_send_to_queue將報文發(fā)送至指定隊列節(jié)點文件libfilenode.sonode_file_load將文件內容全部加載到字典里node_write_to_file將字典內容寫到文件里node_file_load_to_linebuf將文本文件逐行加載到字典里node_file_delete刪除文件節(jié)點 更詳細的節(jié)點說明文檔可參見 doc/html/index.html主配置文件 $RUNDIR/etc/esb.conf pr

19、ocess-sysname#程序名=進程標識timerp = TIMERrouterin = ROUTERINrouterout = ROUTEROUTtcp_server = TCPSERVERtcp_client = TCPCLIENT sync_service = SYNCSVCasync_service = ASYNCSVCtmo_service = TMOSVC cron_service = CRONSVCpoll_service = POLLSVC process-number#程序名=進程個數(shù)timerp = 0routerin = 1routerout = 1tcp_serve

20、r = 2tcp_client = 0sync_service = 1async_service = 0tmo_service = 0cron_service = 5poll_service = 60:不啟動6:啟動6個進程主配置文件 $RUNDIR/etc/esb.conf message-queue#消息隊列名=消息隊列IPC鍵值QTtoRI = 0 x8000000QRItoP = 0 x8000001QPtoRO = 0 x8000002QROtoT = 0 x8000003QPtoTM = 0 x8000004QTMtoP = 0 x8000005QRItoR = 0 x800000

21、6#注意:整個主機上的IPC鍵值都不能重復 TCPSERVER:1 #通訊服務配置 #TCPSERVER是process-sysname里的tcp_server對應的進程標識,:號后面的數(shù)字表示啟動的是第n個tcp_server進程,n=1,2, routeid = 15 #通訊配置都要有一個路由ID cfgfile = tcp.conf #該通訊程序使用的配置文件主配置文件 $RUNDIR/etc/esb.conf SYNCSVC service-mode = 1 #服務模式 - 同步 ASYNCSVC service-mode = 2 #服務模式 - 異步 #服務進程會以此為消息類型讀取Q

22、RItoP隊列 CRONSVC:1 #1號定時服務 service-mode = 4 #服務模式 - 定時 service-code = s1200 #調用的服務碼 cron-mode = 0 18 * * * #每天18:00被調起 CRONSVC:2 #2號定時服務 CRONSVC:* #定時服務默認配置 即除了1和2號外的定時進程都使用這個配置 POLLSVC:1 #1號輪詢服務 service-tag = dlmsg_s9000 #日志文件名前綴,方便區(qū)分不同的日志 service-mode = 3 #服務模式 輪詢 service-code = 9000 #調用的服務碼 servic

23、e-limit = 1000 #輪詢次數(shù)上限 poll-time-gap = 60 #輪詢時間間隔(秒) POLLSVC:2 #2號輪詢服務 POLLSVC:* #輪詢服務默認配置,即除了1和2外的輪詢進程都使用這個配置項 定時服務和輪詢服務里的service-code可以配置成一個列表,如: service-code = 9000 9001 9002 表示一次調用可以依次執(zhí)行列表里的多個服務日志配置文件$RUNDIR/etc/log.conf formats # 輸出格式 default = %d(%m-%d %T).%ms%f:%L%V%m%n modern = %d(%m-%d %T).

24、%ms%p%f:%L%V%m%n simple = %m%n rules # 輸出規(guī)則 #標識.日志級別 文件名, 轉儲大小; 日志格式 term.* stdout; simple esb.* %E(RUNDIR)/log/esb.log; default normal.* %E(RUNDIR)/log/%M(program_name)_%p.log, 10M; default comm.* %E(RUNDIR)/log/com_R_%M(route_id)_%p.log, 10M; default comm_type.* %E(RUNDIR)/log/com_R_%M(route_id)_%

25、M(type).log; modern local.* ./%M(program_name).log; default 通訊配置文件$RUNDIR/etc/tcp.conf TCPSERVER:1 # 配置標識 mode = server # 模式:服務端 max-connection = 3 # 并發(fā)連接數(shù) timeout = 10 # 超時時間 ip = # 綁定IP listen-port = 8001 # 監(jiān)聽端口 msglen-getlen = 4 # 預讀報文長度 msglen-size = 4 # 報文長度信息自身占的字節(jié)數(shù) msglen-offset = 0 #

26、 報文長度信息在預讀報文中的偏移量 msglen-type = 7 # 報文長度的類型 #報文體長度信息的類型# 0:字符類型,含自身長度; 1:字符類型,不含自身長度;2:BCD類型,含自身長度; 3:BCD類型,不含自身長度; 4:HEX類型,不含自身長度;5:HEX類型,含自身長度; 6:INT類型,含自身長度;7:INT類型,不含自身長度;8:EBCDIC字符類型,含自身長度; 9:EBCDIC字符類型,不含自身長度;10: 定長類型通訊配置文件$RUNDIR/etc/tcp.conf HLDB_HOST # 配置項標識 mode = client # 模式:客戶端 max-conne

27、ction = 1 # 并發(fā)連接數(shù) timeout = 30 # 超時時間 ip = 1 # 連接的服務端IP port = 6666 # 連接的服務端端口 msglen-getlen = 8 # 同步應答時預讀報文長度 msglen-size = 8 # 報文長度信息本身占的字節(jié)數(shù) msglen-offset = 0 # 報文長度信息在預讀報文里的偏移量 msglen-type = 1 # 報文長度獲取類型平臺常用工具1.數(shù)據(jù)庫表對應結構體生成工具: getdbstructl用法:getdbstruct 表名 簡稱l示例:getdbstruct plat_service

28、info SVCINFl可以把輸出的結果保存到頭文件: $HOME/uesb/inc/dbstruct.h2.數(shù)據(jù)庫用戶注冊工具:dbusertooll用法:dbusertool 按屏幕提示操作l注意:輸入用戶名時,要與環(huán)境變量的$ORACLE_DBU的值完全一致3.單獨執(zhí)行流程文件工具:execflowl用法:execflow 流程文件名 日志標識l其中:流程文件的相對路徑為$RUNDIR/flow,日志標識為執(zhí)行流程產生的日志文件名前綴4.獲取數(shù)據(jù)庫用戶密碼工具:getdbpassl用法:getdbpass - 用于shell腳本里需要取密碼的地方部署開發(fā)環(huán)境 ( Linux版)1.建議Linux 64位操作系統(tǒng)版本:RHEL6.5以上,Cent OS 6.5以上,內核2.6.32以上2.root創(chuàng)建用戶:#useradd uesb#passwd uesb3.創(chuàng)建runtime目錄結構a)上傳runtime.YYYYMMDD.tar.gz至uesb用戶主目錄b)解壓:tar xzvf runtime.YYYYMMDD.tar.gz4.部署源碼a)上傳uesb.YYYYMMDD.tar.gz至uesb用戶主目錄b)解壓:tar xzvf uesb.YYYYMMDD.

溫馨提示

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

評論

0/150

提交評論