




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、接口详细设计文档作者:唐为(为哥)审核:赵锟日期:2005-5-27接口详细设计文档 11 编写目的52 名词解释53 组件分布图64 程序结构84.1 接入处理线程类图 84.2 接收线程类图94.3 启动控制图95 程序设计说明105.1 对原系统的改动105.2 ThreadlnSvcProcessor接入处理器5.2.1 类图 时序图.125.2.3 流程图.125.2.4 Thread In SvcProcessor 类说明5.3 PatternNewSy ncAsy nclnn erDir同异步向内处理模式215.3.1 类图 描述
2、流程图 类说明235.4 ThreadReplySvcProcessor 异步应答返回处理器29541 类图29542 类说明295.5 Clie ntI nfo客户端连接数据 395.5.1 类图395.5.2 类描述395.6 ClientlnfoT able客户端连接数据表 405.6.1 类图405.6.2 类描述405.7 ClientlnfoT ableMonitor客户端连接数据表监控程序 455.7.1 类图455.7.2 类说明455.8 FrontMain主控程序475.8.1 类间关系 流程图485.8.3 类说明505.9 问题531编写
3、目的预期读者:对接口行为和目的有一定了解的人背景说明软件系统名称:接口前端接入服务器描述 接口 接收不同商家的接入, 接收数据转发给主机服务器, 并同步/异步将返回数据发给接入商家的行为2名词解释ChannelBase渠道,通信基类,提供数据收发和释放的方法接口用子类实现来封装了不同通信方式目前有TCP短连接接入,从ACE Message_Queue 中读取(IPC MessageQueue- ACE_Message_Queue )Trade* trade商家对象,代表的其实是针对该商家处理方法的集合将接入数据的商家称为服务商家而将请求面向的商家称为主机商家,主机商家负责同步/异步返回交易的应
4、答数据给接口平台而接口(数据交换)平台是在两者之间的交换平台发送数据的渠道工厂统渠道工厂:把接入数据的渠道工厂统一定为服务渠道工厂,定为主机通道工厂3组件分布图银联注各种服务渠道和主机通道抽象类都是相同 的基类ChannelBase,只是作用不同ATM连接队列IPC消息队查不到,丢弃TCP渠道IPC消息队通知清除超IPC消息队连接记表后台服务器列渠道IPC消息队列接收 线程IPC消Pall-0 (TUMertfe icAsGlWl&rD IfTraaeChJiProcsaO *Cle-AjHQatitQu3ld*Tfa-jelrFrflcesrs. | *w_in_raum()i *hs 也碍
5、cnMg口亡 口 | m EbQ如gOicrcl门詡T対斜IPatternNewSyncAsyncInnerDir 是ProcessPattern 的一个子类,实 现发送主机服务器并判断同/异步返回Pa tte mASyric InnarDiriffrarn DLX)!*Pnace5S0曲品wrlelg巾nglOD|和4程序结构4.1接入处理线程类图ThreadlnSvcProcessor是接入处理线程的 主流程收数,接包无误后将处理控制权交给ProcessPattern是后续处理的全部流程抽象类同步直接返回给接入商家 异步只做相应记录4.2接收线程类图Cliertb 悔rtnuauijiri
6、w trjdt.iode 術側 亀nterfitjd; aM 呼 *0(jgejd - lit hCi&rtiifcTable&TLt輻 忙 E_F(ead_MuleK rrs:ance_iT-iei : iC-z_ThrEad_milaiSe* hstiflcei)*adeFfeafd i 悔 ttecQEi) *tlerlirvesuifi*CDrt) *giwaeKty() 气 bmpOTradertwriEtccme)rrsde ewe chat THADEC3DElJEJ*1) 4harpUDEMAJ?ELENM b_5*npcrH些 SIN732巾屯 SlhT32 Jrxlcjyp
7、e :釧TK enjiinw SIF/T32 VirAjn_sf 欣I o al*fetc Zlisrtlrfc feconijkey birgi 口小勺、*Rec-OataJui nfcip.cliertinfQ_recQM Cntnfo p_dai3lw. Catj&ufi. mgelTrafle(r*at_tD(Je. strinq) Tradt*TrjtitOuProsesi(pjrarte Traje. p_dljbJJ 加屬冉:int*Qe (OulpdlChiMiFielfaCtUnfieCsw*TnSen|jj;a p_inde Tode*. p_daubus:阳岭“:irt*
8、11mA(jFcpi,iPnc4ittr(plradt Tinde* pFador;緘亡伽“护貳冊,前ExH boori4.3启动控制图5程序设计说明5.1对原系统的改动改变原有商家 Trade类,不存放渠道对象在商家类中,商家类只执行商家处理,不负责渠道的管理改动原有的系统中所有模式的处理,模式处理必须对渠道的释放负责修改MidHstChannel,添加后台服务需要的2个 FML字段,这两个字段是FML域名描述S_INTERF_NO接口标识号,整数。系统中接收异步响应程 序的唯一编号。用于标识请求的来源,异步 应答根据这个号码分发给具体的接口程序。S_TX_CTRL_ATTR交易控制属性,子
9、付串。接口都填0,表示这是正常的交易请求。5.2 ThreadlnSvcProcessor接入处理器5.2.1类图Thread kiS vc Processor*SvcRjn(): void*a j)rocess_loop(pSvcT rade: Trade*, pSvcChnFactory: SvcChann el Factory. pDataBus: DataBus*): SNT32 *GetChannei0i3cto7: S-ChanneiFactor/. time_val: ACEJime_Vau&*. parameter- string): ChanncBase* *TradeRec
10、vData(p_trade: Traded p_chnbase: CharmelBase pjatabus: DataBus*. pjmeval: ACE_Time_Value); int *TradchPrDce55(p_trade: Trade*. p_databus: DataBus*): int*ExecPattenXpattem: ProcessPatt&mT, p_databu$: DataBuV, p_thannel: ChannelBase*): int *RequestSecure:FailedProcess(p_tradc Trade; p_databus: DataBus
11、: int*ThreadInSvcproc&$5 ACE_Message_Queue )Trade* trade商家:代表的其实是针对该商家处理方法的集合5.2.3流程图错Yes退出?请求/应答应答模丢弃PatternErrorSyncInner执行识别出的模式处理式请求:执行安全岀渠道没11取到r商家通过渠道收取数据:超时?-商家的输入处理1安全出错?二5.2.4 ThreadlnSvcProcessor5.241功能类说明收取用不同渠道接入的外部商家的请求识别,解包执行处理的模式具体的流程在模式中控制,并不做控制模式可能有3种:1.无返回:发送后台,不接收应答对应模式PatternASy
12、nclnn erDir,需要修改原来的相关程序,在本文档中并不涉及2. 有返回,根据返回的应答判断是同步返回还是异步返回如果接收的应答表明是同步返回,按正常模式返回如果接收的应答表明是异步返回,按异步模式处理对应模式Patter nN ewS yncASyncInn erDirThreadI nSvcProcessor后续的 ProcessPattern 应该是 Patter nN ewS yncASyncInn erDir.ThreadI nSvcProcessor只负责接入后调用模式,并处理异常情况3.安全异常情况的模式下,调用模式PatternErrorSy nclnner来处理,必须限
13、制:要的改动是渠道 的释放 由模式来管 理涉及 模式有 PatternASy nclnn erDirPatternNewSy ncASy ncl nn erDir , PatternErrorSy nclnner(可能不全面)5.242 程序描述 ThreadlnSvcProcessorThreadlnSvcProcessor(Trade* ptrade , SvcChannelFactory* pfactory, bool*_bexit)功能:构造函数性能:输人项:Trade* trade接入数据处理的商家类SvcCha nn elFactory* pfactory接入数据渠道工厂bool*
14、 exit退出标志输出项:注释:5.243 程序描述SvcRunvoid SvcRun()功能:主控流程输人项:无输出项:无流程:服务商家在开始已经生成,生存周期里一直存在一个DataBus对象(数据总线),每线程一个DataBus 对象。一直存在DataBus对象初始化循环处理SINT32 ret = a_process_loop仃rade* ptrade , SvcChannelFactory* pfactory,DataBus*pDataBus );if(bool* exit = true )释放渠道跳岀循环为下一次使用清空 DataBus对象收尾处理,释放recv_trade5.244
15、 程序描述 a_process_loopSINT32 a_process_loop (Trade* ptrade , SvcChannelFactory* pfactory,DataBus* pDataBus )功能:一次交易的处理输人项:Trade* pTrade ,接收数据的服务商家服务渠道SvcChann elFactory* pFactory,服务商家接收数据的主机通道SvcCha nn elFactory * pFactory服务商家渠道的生成工厂。DataBus* pDataBus预先创建的数据总线,不需要每次重建输出项:S_OK成功完成其他出错信息流程:依次执行GetChanne
16、l生成接入渠道ChannelBase* (根据商家生成一个 ChannelBase 的子类)除非出错,整个流程不释放该ChannelBase ,委托给Patten负责释放TradeRecvData服务商家接收数据TradeInProcess 服务商家进入处理(最主要一项功能就是接口识别)If( TradeInProcess 成功& 安全函数出错)/安全函数一般是mac校验失败根据p_databus- pack_type 对请求和应答作2种不同的处理if( pack_type 是请求)执行 RequestSecureFailedProcess 函数调用else /应答报文结果是应答 直接丢弃,返
17、回成功不管结果如何都跳到异常处理,但是返回值可能因SecureFailedProcess的执行结果而不同else否则生成 Patern对象生成对方商家hst_trade生成模式对象Pattern,将服务商家和对方商家传入执行ExecPattern执行具体的模式处理,将渠道委托给Patten负责释放异常处理:记录出错信息和时间当异常发生在ExecPattern之外释放渠道结束处理:(无论异常与否都执行):释放对方商家 h st_trade释放模式对象Pattern注释:为了便于单元测试,从 SvcRun中分离出该方法也可以在SvcRun中实现上述的全部逻辑5.245 程序描述 GetChanne
18、lSINT32 GetChannel(SvcChannelFactory* factory, ChannelBase* ACE_Time_Value* time_val )功能:调用svc_factory生成服务渠道 性能:输人项:SvcChannelFactory*svc_factory渠道工厂ACE_Time_Value*time_val超时时间这个超时目前是一个固定值,和接收数据和发送数据的超时无直接联系Cha nn elBase* !=NULL 未取得=NULL 取得输出项:返回值注释:出错信息在该方法中输出流程中只判断是否取得,没有取得则应该跳到开头进入下一次循环测试:对所有的可能生
19、成的Cha nn elBase都进行一次测试5.246 程序描述 TradeRecvDataSINT32 TradeRecvData(Trade*p_recv_trade , ChannelBase* p_chnbase , DataBus* p_databusACE_Time_Value* time_out )功能:商家通过渠道接收数据放入p_databus中输人项:Cha nn elBase* p_chn base收取的渠道Trade* p_recv_trade接收的商家DataBus* p_databus存放数据的 DataBusACE_Time_Value* time_out超时时间输
20、出项:0成功-1读取失败或者超时注释:主流程不记录详细出错信息5.247 程序描述 TradelnProcessSINT32 TradelnProcess (T rade* p_trade , DataBus* p_databus )功能:执行商家的入口处理(识别,解包。)p_databus的_data_buff 和_len子段分别表示数据指针和长度输入处理后将数据填入p_databus 的_var_pool 和_var_reco_pool(识别数据)中输人项:Trade* p_ trade接收服务商豕DataBus* p_databus存放数据的 DataBus输出项:0成功-1读取失败或者
21、超时注释:没有超时限制,要控制短时间内完成5.248 程序描述 RequestSecureFailedProcessSINT32 RequestSecureFailedProcess(DataBus*p_databus,Trade* p_trade,ChannelBase*in_svc_channel)功能:对输入是请求报文的安全类函数失败后的处理(输入是应答报文的就直接丢弃 )输人项:DataBus* p_databus 数据Trade* p_trade输入服务商家输入服务的渠道Chann elBase* i n_svc_cha nnel输出项:S_OK 应答保报文,不加理会INTIDENE
22、RROR( SECUFAILED )请求报文,执行安全异常处理模式成功其他。请求报文,执行安全异常处理模式中出错注释:无论SecureFailedProcess的执行结果如何都不继续执行后面的操作5.249 程序描述 ExecPatternSINT32 ExecPattern(ProcessPattern * pattern , DataBus* p_databus , ChannelBase* p_channel)功能:执行处理模式,全部处理交给pattern输人项:ProcessPattern* pattern 处理模式DataBus* p_databus 存放数据的数据总线Channel
23、Base* channel输入服务渠道,交给Pattern管理释放输出项:S_OK成功其他失败注释:Cha nn elBase*输入渠道,如果Pattern 没有生成等错误,还是主控来释放p_cha nnelPattern ,执行执行pattern-Process后就不管了可能设置一个标志位来表示是否执行了过最后就不用释放cha nnel 了(是否可以这样?ChannelBase* p channel)SINT32 ExecPattern(ProcessPattern * pattern , DataBus* p databus ,主程序都删除 p_channel,但是ExecPattern
24、有可能返回的 p_channel是NULL。此时的向内处理模式531类图PattemNewSyncAsync Inne rDirProcess(p_databu5 : DataBus 7 p_channel ChannelBase* time_val : ACE_Time_Value *): SINT32 * IradeOLtProcess(pradm : Trade*, p databus : DataBus: mtCiearDataBustp databus - DataBus) void *CallHost(p_trade : Trade*d p_databus DaiaBus*: SI
25、NT32 *TradelnProcess(p_trade : Trade* p_databus : DataBus*); int nc_returnp_datatMJs : DalaBus*): boal s_5arne_rw_svcchannel (trade Trade*): toolcreateClientlnfo(p_databus : DataBus p_channel i ChanneBase*): Clientinfo* *addToClientlnfcTablekey stnng, info Clientlnib*) wid532描述预先了解:交换平台接入的是服务商家,发送的是
26、主机商家(主机)PatternNewSyncAsynclnnerDir 继承 ProcessPattern 类533流程图见下页CallHosttpcall接口平台主机商家是否同步返回Yes是否服务商家读写渠道相同YesNo是否服务商家读写渠道Clie ntl nfo-cha nneClie ntl nfo.cha nnYesNo输入渠道放chann el=NULLcha nnelchann el=NULLchannel释放!=NULL的渠道执行主机商家的 输出处理write channelwrite channel释放 channel释放服务商家的读入渠道channelel=NULL 释放
27、channel岀错,记录错误记录到 ClientlnfoTable放使用的通道chann el=NULL后续不释服务商家的输出 处 理(OutProcess),生成 输出数据出错释channel = NULL创建新的通过 write_channel 返回 数据释放 write channel服务商家接口平台主机商家创建Clientlnfo,记录当前的信息。通过后台返回的fml变量S TX STATUS来判断534类说明5.341 构造函数 PatternNewSyncAsynclnnerDirPatternNewSyncAsynclnnerDir(Trade * svc_trade ,Trad
28、e *host_trade );svc_trade 和host_trade 分别代表服务商家和主机商家 方法 ProcessSINT32 Process(DataBus * p_databus , ChannelBase* p_channel , ACE_Time_Value * time_val);DataBus * p_databus 数据总线,包含了解包解开的数据(FML格式)Cha nn elBase* p_in cha nn el服务商家接入的渠道ACE_Time_Value * time_val超时时间这样我们就拥有了处理需要的全部信息。而其他缺少的是在执行中生成的信
29、息了5.343 程序描述 TradeOutProcessSINT32 TradeOutProcess( Trade* p_trade , DataBus* p_databus )功能:执行商家输出处理将数据处理(打包,加密。)处理到发送前的状态输人项:Trade* p_trade商家DataBus*p_databus数据总线输出项:S_OK成功其他失败注释:5.344 程序描述 CallHostSINT32 CallHost( Trade* p_hst_trade , DataBus* p_databus )输人项:Trade* p_ hst_trade主机商家DataBus* p_datab
30、us数据总线注释:实际上是封装了一次发送接收的处理在这个模式里并不考虑单发无返回的情况,全部是发送后等待返回的情况功能:执行和主机商家的一次交互。执行的流程如下:创建主机商家发送的主机通道 ,发送数据if(读写不是同一条通道)释放发送主机通道设置发送主机通道为 NULL创建主机商家接收的主机通道接收数据释放接收的主机商家通道,在此过程中所有生成的通讯渠道都要负责清除失败情况分析:Cha nn elBase*sen d_cha nn el=NULL;Chann elBase*recv_cha nnel =NULL创建主机商家发送的主机通道失败问题:当tuxedo出错的时候的处理如何进行回答:在目
31、前的情况下,主机服务渠道实际上是tpcall后台,渠道实现中控制了该渠道的发送接收必然返回同步成功,如果通讯失败,由该主机生成返回码,复制请求数据到返回数据中返回码的生成是设置交易状态为同步返回 S_TX_STATUS = 1 ,设置响应码S_RSP_CD为“ 2023 ”设置响应码描述信息 S_RSP_DESC为“调用后台服务错误”交易或者通讯(tpcall )的失败由返回标志位和返回码来确定可能发生情况:1.同步失败可细分为通讯失败和后台处理返回失败(问题中的情况)2.同步成功同步执行完毕3.异步已发送异步处理,已经成功发送S_TX_STATUS = 05.345 程序描述 Tradeln
32、ProcessSINT32 TradeInProcess (T rade* p_trade , DataBus* p_databus )功能:执行主机商家的输入处理执行主机商家的对应操作,将p databus 中的原始数据识別出接口信息,转换成ML 数据存放在p_databus的_var_pool和 _var_reco_pool中输人项:Trade*p_ hst_trade主机商家DataBus*p_databus数据总线输出项:S_OK成功其他失败注释:5.346 程序描述 is_sync_returnbool is sync return(DataBus* p databus )功能:查看
33、p_databus,判断这次返回是否是冋步返回输出项:true 同步返回false异步返回注释:5.347 程序描述 is_same_rw_svcchannelbool is_same_rw_svcchannel ( Trade* p_trade )功能:查看该商家是否在同一链路上返回请求根据商家查看该商家的服务渠道定义查询如果没有定义了商家写的渠道,则表明读写渠道是一样的如果定义了商家写的渠道,则表明读写渠道是不同的输人项:Trade* p_trade 服务商家输出项:true是false不是注释:通过查看商家的读写渠道是否相同,可以在处理前明白是否可以提前释放读的渠道 返回给商家的时候明白
34、是否要生成新的写的渠道5.348 程序描述 createClientlnfoClientlnfo* createClientlnfo( DataBus* p_databus , ChannelBase* p_channel )功能:创建一项异步返回的客户端连接记录无论p_channel是否=NULL,都填入新建的 Clientlnfo 中 输人项:DataBus* p_databusCha nn elBase* p_cha nnel返回的渠道只有读写原路返回的才!=NULL如果写要重新创建的填NULL可以的话用 ACE_ASSERT判断一下输出项:Clientlnfo*客户连接记录!=NULL
35、 成功=NULL 不大可能注释:5.349 程序描述 addToClientlnfoTablevoid addToClientlnfoTable( string key , Clientlnfo* info )功能:创建一项异步返回的客户端连接记录输人项:string key键值 目 前 是 由ClientlnfoT able 的gen erateKey(p_databus : DataBus*)生成Clie ntln fo* i nfo记录输出项:Clientlnfo*客户连接记录注释:异步应答返回处5.4 ThreadReplySvcProcessor理器5.4.1类图Hread Rep
36、lySwP rocessor p necv trade: Trade* p_swin_tacto(v: SvcChannelFaGtary* b exit bool*a_process_kwp(ptrade: Trade*, pfacto SwChanneFactory, pDataBu: DalaBus*): SI1TO2*Ge(RecvChanneI(precv_(rade. Trade*). ChannelBase*T radeRecvOa ta(p_c h nba se: ChanreiBase, p_trade: Trade, p_databus: DataBus1, p_timeo
37、ur ACE_T1me_Value*): int*U np ack Rec vData (p_d ata b us . DataBus** fete hC h e nt*i fo Retimeout_time trade code : string 亳in柜rface_id : string pkggrpjd : int pkg_idx : int542.2 程序描述SvcRunvoid SvcRun()主流程功能:接收主机商家异步交易返回的数据并向服务商家发送的输人项:无输出项:无流程:生成接收主机商家一DataBus初始化循环处理SINT32 ret = a_process_l
38、oop (ptrade , SvcChannelFactory* pfactory,DataBus* pDataBus );清空DataBus,以便下次重复使用if(退出标志被设置并且渠道返回获得渠道收数为超时)跳岀循环收尾处理,释放recv trade注释:单次处理的方法在a_loop_process 中实现542.3 程序描述 a_process_loopSINT32 a_process_loop (Trade* ptrade , SvcChannelFactory* pfactory,DataBus* pDataBus )功能:一次交易的处理输人项:Trade* pTrade将应答数据返
39、回对应的商家(对于ATM接口就是ATMC对应的那个)SvcCha nn elFactory* pFactory主机商家接收数据的主机通道异步应答渠道的生成工厂DataBus* pDataBus预先创建的数据总线,不需要每次重建输出项:S_OK成功完成其他出错信息流程ChannelBase* returnchannel = NULL;Trade* svcChannel = NULL;先执行 GetRecvChannel取得接收数据的渠道(ChannelBase* ),取不到则直接跳到最后的岀错处理然后执行 TradeRecvDataRecvReplyData 收数据放入 DataBus 的_da
40、ta buff , 长度放入 _len收完数据可以释放 recvChannel, recvChannel=NULL然后执行UnpackRecvData解开数据执行UnpackRecvData将数据解开为FML Buffer然后调用 ClientInfoTable 的generateKey 方法生成键值然后调用 fetchClientlnfoRecord 取得记录 ClientlnfoRecord*然后RecoverDataBusInfo 调用恢复返回前的 DataBus信息然后根据 ClientlnfoRecord*record的 trade code中 调用 GetTrade 取得要返回信息
41、的服务商家Trade*-然后调用TradeOutProcess生成对服务商家发送的数据然后判断是否要生成返回渠道ChannelBase* return_channel = clientinfo.channel;clientinfo.channel = NULL;/ 释放和 clientInfo 的联系if( return_channel = NULL ) 仓U建 return_channel= CreateOutputChannel创建失败,转入岀错处理调用TradeSendData向服务商家发送数据,失败转入出错处理 释放 return_channel return_channel=NULL
42、释放 svc trade svc trade=NULL岀错处理:记录错误如果收发渠道!=NULL释放收发渠道结束处理:如果 svc lade!=NULL释放 svc trade注释:为了便于单元测试,从 SvcRun中分离出该方法也可以在SvcRun中实现上述的全部逻辑可以单元测试 正常处理 以及 取渠道超时,输入处理失败,生成服务商家写渠道失败等情:ThreadReplySvcProcessorinFactory :svc_trade :SvcChannelFactoryTradeClientlnfoTabk1ResManager1: GetRecvCha nn el (Trade*)2)2
43、: GetCha nn el(ACE_Time_Value *, Cha nn elBase *, SINT33: TradeRecvData(ChannelBase*, Trade*, DataBus*, ACE_Time_Value*)4: RecvData(DataBus *, ACE_Time_Value *)5: UnpackRecvData(DataBus*)6: getlnstance()7: generateKey(DataBus*)8: fetchClientInfoRecord(string)9: fetchRecord(string)10: RecoverDataBusl
44、nfo(Clientlnfo*, DataBus*)11: getTrade(string)12: GetTrade(const sting&, const string&, SNT32, Trade*)14: TradeOutProcess (T rade*, DataBus*)15: OutProcess(Da:aBus *)18: SendData(DataBus *, ChannelBase*, ACE_Time_Value16: CreateOutputChannel (T rade*)17: TradeSendData (T rade*, DataBus*)write_channe
45、l = clientinfo-channel; if ( write_channel=NULL )13: create hst trade :Trade问题:是否真的有助于单兀测试?542.4 程序描述 GetRecvChannelChannelBase* GetRecvChannel(Trade* p recv trade )功能.根据商家取得接收的渠道输人项:Trade*p_recv_trade接收的商家输出项:ChanneIBase*!=NULL 取到=NULL没有取到注释 程 序描述 TradeRecvData (建 议改为渠道(定义了数据收取方式)RecvReplyDa
46、ta )SINT32 TradeRecvDataRecvReplyData(ChannelBase* p_chnbase,Trade*p trade-DataBus*p_databus , ACE_Time_Value* p_timeout)功能:从商家收取数据输人项:ChannelBase* p_chnbase同的情况)DataBus* p_datrabus数据总线,收取数据存放地ACE_Time_Value* p_timeout超时时间输出项:S_OK成功其它失败注释:542.6 程序描述 UnpackRecvDataSINT32 UnpackRecvData (DataBus* p_databus )功能:解开 p_databus 中的数据(_data_buff,en),放入 _var_pool输人项:DataBus* p_databus输出项:S_OK成功其它失败注释:542.7 程序描述 fetchClientlnfoRecordClientInfo* fetchClientlnfoRecord(stri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业转让合同(15篇)
- 出纳员年终工作总结(15篇)
- 医务科上半年工作总结
- 2025广东佛山南海农商银行金融科技总监社会招聘模拟试卷及参考答案详解
- 2025黑龙江黑河市爱辉区招聘公益性岗位就业人员32人模拟试卷及答案详解(历年真题)
- 2025国航股份西南分公司乘务员岗位高校毕业生校园招聘(四川)模拟试卷附答案详解
- 不再犯错协议书7篇
- 2025广东南粤银行资金运营中心招聘考前自测高频考点模拟试题及答案详解(有一套)
- 2025年黑龙江广播电视台(黑龙江省全媒体心)第二次公开招聘事业单位编制人员60人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年多导生理记录仪(8导以上)项目合作计划书
- 人民币国际化进程中跨境贸易人民币结算:现状、挑战与路径探索
- 2025-2026学年九年级英语上学期第一次月考 (江苏省连云港专用)原卷
- 2025年食品行业市场风险防范策略方案
- 2025年国有企业中层管理岗位竞聘面试技巧与预测题集
- 电动消防排烟窗施工方案
- 2025年1月浙江省高考政治真题卷含答案解析
- 宗法制度教学课件
- 2025年卫生高级职称面审答辩(消化内科)在线题库及答案(副高面审)
- 智能拐杖产品讲解
- 2025年贵州省中考英语试卷
- 血源性传播疾病暴露后处理
评论
0/150
提交评论