TDS应用开发参考手册-平台基础组件使用分册_第1页
TDS应用开发参考手册-平台基础组件使用分册_第2页
TDS应用开发参考手册-平台基础组件使用分册_第3页
TDS应用开发参考手册-平台基础组件使用分册_第4页
TDS应用开发参考手册-平台基础组件使用分册_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

TDSBaseService’sGuidePAGE17[内部资料,请勿外泄]DATE\@"M/d/yyyy"7/1/2015TDS平台参考手册(平台基础组件分册)2011年2月产品研发部上海棠棣信息科技有限公司文档信息及修订记录项目名称TDS平台项目编号文档密级内部项目经理项目总监文档主送文档抄送修订人修订日期修订说明版本号吴芳祥2011-2-15结合cronexpr开始编写初稿初稿吴芳祥2011-3-17重写定时服务1.0.0吴芳祥2012-3-21编写冲正重发服务代码及文档相关文档初稿1.1.0吴芳祥2012-4-20添加fmt格式文件配置方法1.2.0吴芳祥2012-5-30修订,完善文档1.2.1吴芳祥2012-06-06修改定时后修改文档1.2.2

目录TOC\o"1-7"\h\z1 What’sNew 41.1 2012-06-06更新简述 42 定时触发服务 52.1 配置文件说明 52.1.1 app.xml文件配置 52.1.2 定时交易配置文件 52.1.3 定时服务说明 52.2 CronExpression表达式说明 63 冲正重发服务beta 103.1 配置文件说明 103.1.1 app.xml 103.1.2 主控代码 103.1.3 配套原子函数 113.1.3.1 TranBeginWork启动交易完整性控制 113.1.3.2 TranCommitWork提交交易完整性事务 113.1.3.3 TranRollbackWork回滚交易完整性事务 124 导入导出格式化文件beta 134.1 格式化文件配置指南 144.1.1 process节点属性说明 144.1.2 unpack节点属性说明 144.1.3 item节点属性说明 154.1.4 其它节点配置 154.2 ImportToDB原子函数说明 16What’sNew2012-06-06更新简述更新定时服务日志文件名及日志文件存储位置.删除定时服务配置文件中的app属性.定时触发服务定时触发服务主要用来定时发起一个指定的主控交易.定时服务可能配置当前交易的ETF数据等信息.但是配置的ETF数据为固定的数据,交易发起时会当用户配置的数据带到当前交易的ETF树中去.配置文件说明平台定时配置文件一般以*_TIM.XML方式命名,一般简称TIM文件.app.xml文件配置<?xmlversion="1.0"encoding="UTF-8"?><applicationname="app"log_level="1"natures="……,timer,……"> …… <timers> <file>etc/TEST_TIM.xml</file> </timers> ……</application>定时交易配置文件<timetrigger> <schitemtxncod="111111"cronExpression="0/6****?"> <data> <root> <telno>lt;/telno> </root> </data> </schitem> <schitemtxncod="222222"cronExpression="0*14-20**?"> <data/> </schitem> <schitemtxncod="33333"cronExpression="0/7****?"/></timetrigger>定时服务说明txncod为主控交易码。cronExpression触发时间点配置,具体配置请看HYPERLINK这里。日志目录结构交易日志:定时触发交易生成的交易日志文件名形式为:Scheduler交易序号_交易码.trc.错误日志放在应用下的log目录当日文件夹Scheduler.log中。定时服务日志放在平台下trc/Scheduler.trc中。CronExpression表达式说明TDS平台定时触发服务使用作业调度框架Quartz,其时间配置采用的是CronExpression方式配置.以下是对CronExpression格式的一些说明:CronExpression表达式的格式十分类似于UNIXcron格式,但还是有少许明显的区别。区别之一就是CronExpression的格式向下支持到秒级别的计划,而UNIXcron计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。在UNIXcron里,要执行的作业(或者说命令)是存放在cron表达式中的,在第六个域位置上。CronExpression表达式存放执行计划。另一个与UNIXcron表达式的不同点是在表达式中支持域的数目。CronExpression提供七个域。下表列出了CronExpression表达式支持的七个域。名称是否必须允许值特殊字符秒是0-59,-*/分是0-59,-*/时是0-23,-*/日是1-31,-*?/LWC月是1-12或JAN-DEC,-*/周是1-7或SUN-SAT,-*?/LC#年否空或1970-2099,-*/月份和星期的名称是不区分大小写的。FRI和fri是一样的。域之间有空格分隔,这和UNIXcron一样。无可争辩的,我们能写的最简单的表达式看起来就是这个了:***?**这个表达会每秒钟(每分种的、每小时的、每天的)激发一个部署的job。·理解特殊字符同UNIXcron一样,CronExpression表达式支持用特殊字符来创建更为复杂的执行计划。然而,CronExpression在特殊字符的支持上比标准UNIXcron表达式更丰富了。*星号使用星号(*)指示着你想在这个域上包含所有合法的值。例如,在月份域上使用星号意味着每个月都会触发这个trigger。表达式样例:0*17**?意义:每天从下午5点到下午5:59中的每分钟激发一次trigger。它停在下午5:59是因为值17在小时域上,在下午6点时,小时变为18了,也就不再理会这个trigger,直到下一天的下午5点。

在你希望trigger在该域的所有有效值上被激发时使用*字符?问号?号只能用在日和周域上,但是不能在这两个域上同时使用。你可以认为?字符是"我并不关心在该域上是什么值。"这不同于星号,星号是指示着该域上的每一个值。?是说不为该域指定值。不能同时这两个域上指定值的理由是难以解释甚至是难以理解的。基本上,假定同时指定值的话,意义就会变得含混不清了:考虑一下,如果一个表达式在日域上有值11,同时在周域上指定了WED。那么是要trigger仅在每个月的11号,且正好又是星期三那天被激发?还是在每个星期三的11号被激发呢?要去除这种不明确性的办法就是不能同时在这两个域上指定值.只要记住,假如你为这两域的其中一个指定了值,那就必须在另一个字值上放一个?。表达式样例010,4414?3WEB意义:在三月中的每个星期三的下午2:10和下午2:44被触发。,逗号逗号(,)是用来在给某个域上指定一个值列表的。例如,使用值0,15,30,45在秒域上意味着每15秒触发一个trigger。表达式样例:00,15,30,45***?意义:每刻钟触发一次trigger。/斜杠斜杠(/)是用于时间表的递增的。我们刚刚用了逗号来表示每15分钟的递增,但是我们也能写成这样0/15。表达式样例:0/150/30***?意义:在整点和半点时每15秒触发trigger-中划线中划线(-)用于指定一个范围。例如,在小时域上的3-8意味着"3,4,5,6,7和8点。"

域的值不允许回卷,所以像50-10这样的值是不允许的。表达式样例:0453-8?**意义:在上午的3点至上午的8点的45分时触发trigger。L字母L说明了某域上允许的最后一个值。它仅被日和周域支持。当用在日域上,表示的是在月域上指定的月份的最后一天。例如,当月域上指定了JAN时,在日域上的L会促使trigger在1月31号被触发。假如月域上是SEP,那么L会预示着在9月30号触发。换句话说,就是不管指定了哪个月,都是在相应月份的时最后一天触发trigger。表达式008L*?意义是在每个月最后一天的上午8:00触发trigger。在月域上的*说明是"每个月"。当L字母用于周域上,指示着周的最后一天,就是星期六(或者数字7)。所以如果你需要在每个月的最后一个星期六下午的11:59触发trigger,你可以用这样的表达式05923?*L。当使用于周域上,你可以用一个数字与L连起来表示月份的最后一个星期X。例如,表达式0012?*2L说的是在每个月的最后一个星期一触发trigger。不要让范围和列表值与L连用虽然你能用星期数(1-7)与L连用,但是不允许你用一个范围值和列表值与L连用。这会产生不可预知的结果。W字母W字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。大部分的商业处理都是基于工作周的,所以W字符可能是非常重要的。例如,日域中的15W意味着"离该月15号的最近一个平日。"假如15号是星期六,那么trigger会在14号(星期五)触发,因为星期四比星期一(这个例子中是17号)离15号更近。(注:不会在17号触发的,如果是15W,可能会是在14号(15号是星期六)或者15号(15号是星期天)触发,也就是只能出现在邻近的一天,如果15号当天为平日直接就会当日执行)。W只能用在指定的日域为单天,不能是范围或列表值.#井号#字符仅能用于周域中。它用于指定月份中的第几周的哪一天。例如,如果你指定周域的值为6#3,它意思是某月的第三个周五(6=星期五,#3意味着月份中的第三周)。另一个例子2#1意思是某月的第一个星期一(2=星期一,#1意味着月份中的第一周)。注意,假如你指定#5,然而月份中没有第5周,那么该月不会触发。、冲正重发服务beta冲正服务是用在帐务中,如果出现一些异常情况,可能需要进行的抹帐交易等.重发服务主要是用在一个交易重发多次的情况.配置文件说明 app.xml<applicationname="demo"desc="demo"natures="……,attr,redo,……"> ……</application>应用配置说明: 上面的attr是可选配置。如果配置了attr这个nature,冲正重发服务将会使用定义在app.xml中应用属性区中的minRdoThreadNum和maxRdoThreadNum两个属性为当前应用冲正重发服务线程池初始/最大容量。此值默认为5和20,既配置冲正重发服务功能的应用将会创建一个这个参数的线程池用于冲正重发功能。主控代码需要开启交易完整性控制的代码如下:<transactioncode="redotest"log_level="1"><process><dofunc="TranBeginWork"><paraname="Code"value="redocode"/><paraname="MaxTms"value="3"/></do><!—业务处理流程--><ifcondition=”交易执行正常(不需要冲正重发)”><dofunc="TranRollbackWork"error="IGNORE"/></if></process></transaction>冲正交易代码如下:<transactioncode="redocode"log_level="1"><sqlname="querys">select*frompublckrec</sql><process><dofunc="ReadRecord"error="IGNORE"><paraname="SQLCMD"sql="querys"/></do><ifcondition="#RetCod==0"><!—如果冲正(或重发)成功--><dofunc="Sleep"error="IGNORE"><paraname="SleepTime"value="10"/></do><dofunc="TranCommitWork"error="IGNORE"/></if><else><setname="xxxx"value="dddd"/></else></process></transaction>应用配置说明: 开启交易完整性控制的交易,如果应用开发人员不显式的调用TranRollbackWork这个原子函数,无论当前程序是否需要冲正(或重发),冲正重发服务都将发起配置好的交易。如果当前交易在业务上执行没有任何问题(不需要冲正或重发),则应当调用TranRollbackWork这个原子函数。同理,在冲正交易(或者重发交易)中,如果冲正(或者重发)成功,也需要显式的调用TranCommitWork,否将服务将会继续发起重正/重发交易直至达到冲正(或重发)上限。 冲正/重发交易发起后,将会在应用日志目录下产生以Redo开头的日志文件。配套原子函数TranBeginWork启动交易完整性控制参数说明: Code冲正交易或者重发交易交易码必须 MaxTms重发/冲正最大次数默认5 LogLevel冲正交易日志级别默认为INFO取值范围[ERROR,WARN,INFO,FATAL]功能说明: 为当前交易开启交易完整性控制。TranCommitWork提交交易完整性事务参数说明: 无参数。功能说明:交易需要冲正/重发时,提交交易完整性事务,事务生效。TranRollbackWork回滚交易完整性事务参数说明: 无参数。功能说明:交易不需要冲正/重发时,回滚当前交易完整性事务。导入导出格式化文件beta格式化文件主要用来定义一下格式化的解析配置文件,TDS平台上通常都是以_FMT.XML文件名标识的,一般称之为FMT文件。结构如下:<?xmlversion="1.0"encoding="UTF-8"?><batconfig> <processname="testfmt"[begin_ignore_line="Integer" end_ignore_line="Integer"sqn_flag="true/flase"stat_flag="true/false" sqn_node_name="sqnNodeName"log_level="INFO/EEROR/..."desc="格式描述文件"]> <unpacktype="fixed/deli"deli="deliStr"deli_asc="Integer"> <head> <itemname="trdbrno"length="5"/> <itemname="recordnum"length="8"/> <itemname="space"length="16"/> <itemname="sdate"length="8"/> <itemname="otxnamt"length="12"/> <setname="RECORDNUM"expr="RECORDNUM"/> </head> <data> <itemname="agenid"length="8"/> <itemname="agactno"length="32"/> <itemname="agactnm"length="64"/> <itemname="tcusid"length="15"/> <itemname="grpno"length="5"/> <itemname="yearmon"length="6"/> <itemname="mon_sn"length="3"/> <itemname="tmptxnamt"length="12"/> <itemname="actno"length="32"/> <itemname="actnam"length="64"/> <itemname="stscd"length="1"/> </data> </unpack> </process></batconfig>格式化文件配置指南process节点属性说明说明process节点上有以下属性属性名可选性意义类型默认值备注1name必须格式化处理结点名称字符串无2begin_ignore_line可选数据文件开始忽略行数整数03end_ignore_line可选数据文件结尾忽略行数整数04sqn_flag可选是否申请序号布尔类型False5stat_flag可选是否自动统计布尔false6sqn_node_name可选序号节点名字符串空Sqn_flag=true此域有效7log_level可选日志级别字符串INFO8desc可选描述字符串空举例说明见上面的配置文件unpack节点属性说明说明unpack节点上有以下属性属性名可选性意义类型默认值备注1type可选格式文件类型字符串fixed2deli可选分隔符字符无当type=”deli”时这两个属性有效3deli_asc可选分隔符ASCII码值整数无举例说明见上面的配置文件item节点属性说明说明item节点上有以下属性属性名可选性意义类型默认值备注1length可选字段长度整数2deli可选分隔符字符无此属性覆盖unpack上的属性3deli_asc可选分隔符ASCII码值整数无举例说明Item配置方法与ITF配置方式相同其它节点配置说明1,head/data/end节点主要是用来标识当前解析的文件是否为文件头/文件体/文件尾。根据实际情况配置.2,解析程序将会根据data中的配置循环解析文件体.3,除了支持上面的所说的head/data/end三个节点外,还支持CTL配置中的所有节点.ImportToDB原子函数说明说明ImportToDB函数有以下参数参数名可选性意义类型默认值备注1formatFile必选字段长度字符串Fmt文件2type可选数据文件类型字符串fixed3maxCommitNumber

可选单次提交数据库的行数整数1004fileName必选格式文件名字符串5formatName必选格式名称字符串6sqlCmd可选Sql名称字符串必选一个7tableName可选表名字符串8charset可选数据文件字符集字符串举例说明 <transactioncode="ImportToDBTest"log_level="1"> <sqlname="inserttodb">INSERTINTOefetmpbat (ACTDAT,GRPNO,TCUSID,ACTNAM,AGENID,AGACTNM,ZONE,AGACTNO,MON_

温馨提示

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

评论

0/150

提交评论