tuxedo服务设计和编码规范-融金教育_第1页
tuxedo服务设计和编码规范-融金教育_第2页
tuxedo服务设计和编码规范-融金教育_第3页
tuxedo服务设计和编码规范-融金教育_第4页
tuxedo服务设计和编码规范-融金教育_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TUXEDO服务设计和编码规范,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,概 述,制定编码规范的最主要的目的是为了对产出代码的长期维护。通常负责维护代码的人大多都不是开发者本人,如果有一个统一的代码格式以及说明就可以减少混淆提高理解速度。因此,下列的编码规范是基于良好的编码习惯和可读性的原则来制定的。TUXEDO服务是在UNIX C&C+或UNIX PRO*C&C+的开发环境设计和开发,对于文件排版、变量命名规范、语句编写规范等不再给出,该部分内容请参考,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,文件体系结构,Run /* 开发环境根目录 */| - cfg /* 配置文件目录 存放TUXDEO环境参数文件 */ /* 数据库登录参数文件和其它参数文件 */| - include /*头文件目录 */| - shell /* shell脚本文件目录 */| - bin /* 可执行文件目录 */| - lib /* 静态库文件目录 */| - log /*日志文件目录*/| - public /*公共功能文件目录 */| - | - bin /*可运行程序 */| - | - server /* TUXDEO服务端公共功能源代码*/| - | - client /* TUXDEO客户端公共功能源代码 */| - ()/* 应用程序目录 */ ,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,源文件结构,C、pc、cpp文件都在文件头加入文件注释。H头文件结构如下:#ifndef_DATA_DEF_H_#define_DATA_DEF_H_#inlcude /*incluede区*/#define MM 30/* 宏定义区 */* 结构、类、变量等定义区 */#endif,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,TUXEDO服务程序组成,* 业务处理程序* TUXEDO服务程序* 公共程序文件,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,文件命名规范,业务处理文件TUXEDO服务文件头文件命名规范,业务处理文件命名规范,文件名称模板: cXY.Y.cp c - 文件名第一个字符,为固定字符c(Component) X - 文件归属的子系统编号 Y.Y - 功能缩写,建议不超过20个字符.cp - pro*c文件后缀文件名称举例:cxCustInfo.cp,TUXEDO服务文件命名规范,文件名称模板:RXYY.cp名称模板说明: R - 文件名第一个字符,为固定字符R() 每个文件定义一个或多个TUXEDO服务,组成一个服务组 X - 文件归属的子系统编号 Y.Y - 功能缩写,建议不超过20个字符 .cp - pro*c文件后缀 即使程序文件不包括对数据库操作,为了统一风格,建议设计为*.cp文件文件名称举例:RxGetFMCode.cp,头文件命名规范命名规范,头文件名称模板:XYY.h名称模板说明: X - 文件归属的子系统编号 YY 业务描述,建议不超过20个字符 .h - 后缀头文件名称举例: Xcm.h,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,TUXEDO服务命名规范,服务名称模板:sX ABCD名称模板说明: s - 服务名第一个字符,为固定字符s(server) X - 文件归属的子系统编号说明:TUXEDO服务在服务组文件定义服务名称举例:sxGetCustName,结构体的命名,结构体名称模板:sXAJABCs - 结构名称第一个字符,小写,structX - 结构归属的子系统编号AJ - 业务含义,建议不超过20个字符ABC 有三种情况 In 输入参数 Out 输出参数,提纲,旧版TUXEDO规范新版TUXEDO规范,1,1.1 概述1.2 文件体系结构 1.3 源文件结构 1.4 TUXEDO服务程序组成1.5 文件命名规范 1.6 TUXEDO服务命名规范1.7 编码规则,服务编码规则 -1,规则1 常连接必须定义放在tpsvrinit函数中,断开放在tpsvrdone函数中。int tpsvrinit(int argc, char *argv)spublicDBLogin(NULL,NULL,sGetWorkData,LABELDBCHANGE);return(0);void tpsvrdone()spublicDBClose(LABELDBCHANGE);,服务编码规则 -2,规则2 必须使用get_input_parms32_2函数取TUXEDO的传入参数。废弃get_input_parms32函数。规则3 必须使用add_value32函数向TUXEDO中压入一个值。规则4 必须使用Fget32函数从TUXEDO中读取多行中取一个值。规则5 数据库登录必须用spublicDBLogin函数登录。规则6 必须使用sChkDBLogin函数校验数据库连接。此函数用于数据库常连接的数据库连接验证。,服务编码规则 -3,规则7 TUXEDO服务中不能出现SQL语句,所有的SQL语句必须出现在公用函数中。规则8 控制注释的输出。注释采用统一的注释控制规则,对日志进行非类,分监控类、调试类等,原则上服务中不能出现printf等语句。使用DBUG_ENTER、DBUG_PRINT等函数。规则9 调用服务统一入口函数CallTuxedo,跟踪服务的入口参数信息。规则10 输入输出参数的长度不能超过1000个字节,否则会溢出。规则11 TUXEDO的错误代码和错误信息必须放在SVC_ERR_NO32和SVC_ERR_MSG32中,不能占用GPARM32_X的位置。,服务编码规则 -4,规则12TUXEDO的返回值的数量不能超过50个;如果超过50个参数,参数按行放在第一列GPARM32_0中。规则13输出参数缓冲的内存分配,必须调用函数MemoryAllocate32。规则14一个TUXEDO SERVER中的SERVICE不能超过10个。规则15每个SERVICE的函数说明,必须在SERVICE前说明清楚,包括描述、输入输出,返回值。,提纲,旧版TUXEDO规范新版TUXEDO规范,2,2.1 技术架构2.2 开发流程 2.3 案例开发,技术架构-概述,技术架构-uType介绍,接口标准化,所有系统函数的接口格式统一扩展性强,在接口不变的情况的下,参数可以树状扩充升级、维护简单,风险小跨平台应用,可以在任意平台间轻便移植,技术架构-uType介绍,【重点关注蓝色字体部分的描述】typedef struct tagutype utype;typedef struct tague int type; /包含的uType数据条数 union char v_char; int v_int; long v_long; double v_double; char * p_char; utype * p_utype; value; ue; struct tagutype int cnt; int capacity; ue *ppe;,技术架构-uType介绍,uType函数原型要求系统内的函数全部采用一下接口进行描述,不同函数只是functionName不同。函数原型如下:utype* functionName(utype *puInParam, TCtrlInfo *ptCtrlInfo)3.2uType接口数据定义utype是个树状的数据结构描述,在uType结构体内可以无限级扩展。,技术架构-组件分层,SERVER,SERVICE,BP(Business Process),BC(Business Component),所有业务集中在BC/BP,Server/Service不能有逻辑,提纲,旧版TUXEDO规范新版TUXEDO规范,2,2.1 技术架构2.2 开发流程 2.3 案例开发,开发流程-目录结构,开发目录结构:framework/* 开发环境根目录 */bin/* 可执行文件目录 */include/* 头文件目录 */lib/* 静态库目录 */src/* 源代码目录 */ baselib/* 基础库类库 */ BossLib/* BOSS基础库目录 */ 。/* 其他基础库 */ custsvc/* 客户服务子系统 */ business/* 业务组件 */ custsvcBCP/* 原子服务 */ server/* 业务组件发布 */ prodmng/* 产品管理子系统 */ 。/* 其他子系统 */ svctest/* 业务测试目录 */ tools/* 辅助工具 */ test/* 测试目录 */synlib/* 动态库目录 */tools/* 辅助工具 */,开发流程-开发步骤,开发流程-开发步骤,以“客户服务”为例:原子服务开发使用autoBC 工具生成原子服务原子服务的命名规则:c + 操作的表名 + .cpp,例如cdCustMsg.cpp内部函数命名规则:c + 数据操作符(Q、I、U、D)+ 操作的表名 + .cpp,例如:cQdCustMsg(查询用户资料),cIdCustMsg(插入用户资料), cUdCustMsg(更新用户资料), cDdCustMsg(删除用户资料)修改makefile文件,将生成的原子服务编译成库libcustsvcBCP.a,供业务构件使用将生成的原子服务函数在头文件中custsvcBCP.h声明业务组件开发业务组件发布,开发流程-开发步骤,以“客户服务”为例:原子服务开发业务组件开发编写业务组件,执行一个完整的业务逻辑,需要调用libcustsvcBCP.a中的原子服务业务组件的命名规则:pub + 业务名称 + .cpp,例如:pubCreateUser.cpp修改makefile文件,将业务组件编译成客户服务组件库 libcustsvc.a将生成的业务组件在头文件中 custsvc.h声明业务组件发布,开发流程-开发步骤,以“客户服务”为例:原子服务开发业务组件开发业务组件发布编写业务组件发布文件,在文件中添加自己业务组件,extern C void sMovePhone(TPSVCINFO *transb)TuxInterface(sCMultiUser, transb, LABELDBCHANGE, CreateMultiUser, CreateMultiUser, LONG_CONN_TYPE,0);发布文件命名规则:R + 业务名称 + .cpp,例如:RCreateUser.cpp修改makefile文件,添加业务组件编译项编译业务组件文件,重新启动服务(server),开发流程-BC生成器,使用autoBC脚步可以直接生成访问数据库实体表的原子接口函数,包括select insert update delete等接口,通过原子接口可以屏蔽外围系统对数据库的直接访问。语法如下:autoBC dbcustadm/dbcustadmahlt X X cFuncName sqlfile suffix,开发流程-BC生成器,开发流程-测试工具,使用clut 工具可以对编写完成的utype输入输出格式的Tuxedo服务进行测试:clut.sh 业务名称.clut,开发流程-测试工具,clut文件格式“-”+ 数据类型 + 值 + 注释信息以“-”开头,每个嵌套层比上一层多一个“-”,类似于XML文件格式“#”为注释符号举例:-utype #TOprInfo-string 0208091200000008 #sCustOrderId-long 2000012805097 #lLoginAccept-string 1104 #sOpCode-string ba0001 #sLoginNo-string CODCDOJHGECIFONG #sLoginPwd-string 172.16.24.100 #sIpAddress-string 10032 #sOprGroupId-string 20080912 09:59:01 #sOpTime,开发流程-开发案例,以“用户开户”业务组件为例:SQL文件准备自动生成BC原子服务编写业务组件发布业务组件测试业务组件,提纲,旧版TUXEDO规范新版TUXEDO规范,2,2.1 技术架构2.2 开发流程 2.3 案例开发,开发流程-开发案例,SQL文件准备在framework/src/custsvc/custsvcBCP/sqlFile目录下编写插入dCustMsg表的SQL文件cIdCustMsg.sql ,文件内容:INSERT INTO dCustMsg(ID_NO,CUST_ID,CONTRACT_NO,IDS,PHONE_NO)VALUES(:ID_NO,:CUST_ID,:CONTRACT_NO,:IDS,:PHONE_NO)sqlFile规则:只能是单条insert/update/delete/select的SQL语句绑定变量名称和字段名称一致,前面加“:”号,后面跟“”,对于number型字段大于8的用long型表示,小于8的用int表示,开发流程-开发案例,自动生成BC原子服务执行如下语句,自动生成BC原子服务到上一级的cdCustMsg.cpp:autoBC dbcustadm/dbcustadmahlt cIdCustMsg 0 0 cIdCustMsg.sql ./cdCustMsg.cpp修改custsvcBCP.h文件,增加函数声明和结构定义utype* cIdCustMsgExt(utype * inParam,TCtrlInfo *errInfo);修改makefile文件,增加cdCustMsg编译项修改同级目录下的all.sh,增加该语句备份其他“用户开户”要用到的原子服务生成步骤和上面步骤相同,开发流程-开发案例,编写业务组件在framework/src/custsvc/business目录下编写pubCreateUser.cpp“用户开户”业务组件编写规则:头文件引用 #include ”custsvc.h“对于函数中用到的utype类型,定义uAutoPtr类型,如果返回该类型需要调用release()方法存取utype类型,使用utSetXXX和utGetXXX方法修改文件,增加函数声明和结构定义utype* CreateMultiUser(utype *puInParam, TCtrlInfo *ptCtrlInfo);修改makefile文件,增加pubCreateUser编译项,开发流程-开发案例,发布业务组件在framework/src/custsvc/server目录下发布RCreateUser.cpp “用户开户”业务组件/* * inparam sCMultiUser 批量开户函数 */extern C void sCMultiUser(TPSVCINFO *transb) TuxInterface(sCMultiUser, transb, LABELDBCHANGE, CreateMultiUser, CreateMultiUser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论