本节介绍怎样创建python脚本,详细内容请参照iHyperDB安装目录下/config/ExportScripts文件夹中的示例脚本。
setEnviron(functionContainer)
传递主程序的回调函数供使用,之后通过functionContainer.function()来调用相应的函数,我们已经提供默认实现,将funcntionContainer赋值给全局变量functions,之后的函数调用可以通过functions来使用。
Init()
初始化函数,可在其中进行注册规则、添加tag点、创建关系数据库表等初始化工作。
fini()
清理函数,我们已经提供了默认实现。
getExportedMaxTime()
返回已转储数据的最大时间戳至转储服务,需要返回指定模式的时间戳,形如:convertedTime = [2012,8,8,20,8,8,0],列表中数据依次为年,月,日,时,分,秒,毫秒。若无法给出正确的上一次转储最后一条数据的时间戳,本函数返回的时间戳需要早于该时间。
可以格式化要存入关系数据库的时间字段,用逆序查询即可,也可以再表的创建语句中加入自增ID字段,根据该ID查询。 |
●脚本需要提供的可选函数
三选一,根据脚本类型("interpolate","specify_interfolate","alarm_raw"),选择不同的实现.
▪脚本类型为:"interpolate","specify_interfolate":
onInterpolateTimer(timestamp,DataArray)
转储插值定时器处理函数,参数DataArray是一个结构体数组(list of dictionary),每个结构体包含内容依次为:tag名、数据质量和数据值。函数体内组织sql语句,将这些数据写入关系数据库中。
▪脚本类型为:"alarm_raw":
onAlarmRawTimer(DataArray)
转储报警记录,参数DataArray是一个结构体数组(list of dictionary),每个结构体中包含报警记录相关的16个属性。函数体内组织sql语句,将这些数据写入关系数据库中。
●脚本可调用的回调函数
脚本可调用的回调函数,通过setEnviron传递过来的functionContainer来调用。
▪注册规则
retValue=functions.regRule(iHDSrvInfo,rdbInfo,ruleInfo)
函数参数:
iHDSrvInfo:实时数据库服务器信息;
rdbInfo:关系数据库服务器信息;
ruleInfo:规则时间类型信息。
函数返回值:
dictionary,元素为"errorcode",得到错误码。
使用方式:
init中调用
▪添加Tag点信息到规则中
retValue=functions.addTag2rule(tag)
函数参数:
tag:tag点信息
函数返回值:
dictionary,元素为"errorcode",得到错误码。
使用方式:
init中调用
▪执行SQL语句
retValue=functions.execSql(rdbInfo,sql)
函数参数:
rdbInfo:规则时间类型信息;
sql:要执行的sql语句
函数返回值:
dictionary,元素为"errorcode",得到错误码;
number,得到查询结果行数,如果查询结果行数大于0,则获取元素“result”,得到sql查询的结果列表,保持查询返回的记录顺序,结果列表中的每个元素为记录字典,key为查询的字段名。
使用方式:
创建关系数据库表;插入记录;查询记录;
▪注销规则
functions.unRegRule()
函数参数:无
返回值:无
使用方式:
fini()中调用
▪保持和关系数据库的连接
retValue=functions.keepRDBConnection(rdbInfo)
函数参数:
rdbInfo:关系数据库服务器信息;
函数返回值:
dictionary,元素为"errorcode",得到关系数据库连接错误码,0表示已成功连接;
使用方式:
调用execsql前调用,若无法连接至关系数据库,返回该错误至转储服务。