CN104423953B - 一种scada 系统定时数据处理脚本执行系统及方法 - Google Patents
一种scada 系统定时数据处理脚本执行系统及方法 Download PDFInfo
- Publication number
- CN104423953B CN104423953B CN201310397872.1A CN201310397872A CN104423953B CN 104423953 B CN104423953 B CN 104423953B CN 201310397872 A CN201310397872 A CN 201310397872A CN 104423953 B CN104423953 B CN 104423953B
- Authority
- CN
- China
- Prior art keywords
- script
- function
- execution
- date
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013515 script Methods 0.000 title claims abstract description 190
- 238000012545 processing Methods 0.000 title claims abstract description 48
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000006870 function Effects 0.000 claims abstract description 104
- 238000012795 verification Methods 0.000 claims abstract description 15
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 238000003860 storage Methods 0.000 claims abstract description 7
- 238000013433 optimization analysis Methods 0.000 claims abstract 2
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000005457 optimization Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 11
- 238000012937 correction Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 238000009825 accumulation Methods 0.000 claims description 2
- 238000012917 library technology Methods 0.000 claims description 2
- 238000013507 mapping Methods 0.000 claims description 2
- 230000000737 periodic effect Effects 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 7
- 238000012423 maintenance Methods 0.000 abstract description 4
- 230000003068 static effect Effects 0.000 description 4
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
一种SCADA系统定时数据处理脚本执行系统及方法,属于技术领域。功能库模块用于提供所有数据处理所需的底层功能,包括数据读取、数据写入和计算功能,支持计算功能的动态扩展;解析校验模块用于提供脚本的校验和解析功能;管理模块用于提供定时、脚本存储和优化分析功能。引擎模块用于根据解析出来的执行流程逻辑实际运行处理程序,并提供多脚本按时序执行、多计算串行/并行执行功能;开发客户端用于向开发人员提供集成了校验功能的脚本配置界面。本发明通过简单的脚本配置即可完成复杂定时数据处理应用的定制开发,大大提升了定时数据处理应用的稳定性、可控性和性能,缩小了工作量,降低了开发和部署难度,节约了维护成本。
Description
技术领域
本发明涉及一种SCADA系统定时数据处理脚本执行系统及方法,属于技术领域。
背景技术
在SCADA系统中,有一类特殊的应用,需要在指定时间或者周期性地获取数据库数据,并进行计算处理,再将相关结果写入数据库,我们称之为定时数据处理。这类应用的执行流程可以概括为“数据读取->计算处理->数据写入”,如图1所示。
目前常见的技术方案是分别独立开发这些应用,再使用操作系统提供的定时器(如linux下的crontab)来定时执行实现。但是这种方案有四个主要缺点:一是开发量大、重复代码多,不同的应用之间,可能仅仅是数据源不同,或者处理的逻辑不同;二是耦合性强、维护成本高,如果需要改变数据源或者增减计算功能,必须重新修改程序;三是可控性差、性能低,不同的应用都是以进程形式启动,一旦执行很难控制,只能强行停止,且应用之间无法实现数据共享和逻辑优化,有些相同的数据可能被重复读取,造成执行效率低下;四是不易部署,应用的数量很多,且定时功能依赖操作系统,而不同的操作系统提供的定时器的使用方法不同,造成工程实施难度大。
以往开发的SCADA定时数据处理应用基本上都是基于以上方案,并针对其缺点采取了改进措施,将数据读取、数据写入和计算处理划分为相对独立的程序模块并进行封装,通过配置文件即可完成简单的数据源设置。 在此基础上进行的二次开发,重点是实现计算逻辑,削弱了程序内部的耦合性,从而初步实现了代码复用,一定程度上降低了开发量和维护成本。
但是随着业务的不断发展,定时数据处理应用越来越多,可控性差、性能低等缺点越发凸显,一味追加硬件已经无法满足系统的稳定性和性能要求;应用部署的工作量大,依旧十分困难。
发明内容
为了克服现有技术的不足,本发明提供一种,一种脚本用以描述定时触发条件、优先级、处理逻辑、执行时序等信息,并基于该脚本语言构建一个脚本执行系统,将数据读取、数据写入和计算处理等程序模块集成到公用功能库中,把应用逻辑转化为脚本存储并对不同应用的执行逻辑进行优化,在统一的运行环境中定时触发运行。
一种SCADA系统定时数据处理脚本执行系统,分为六个主要模块,即功能库模块、解析校验模块、管理模块、引擎模块、开发客户端和工程客户端;
功能库模块,用于提供所有数据处理所需的底层功能,包括数据读取、数据写入和计算功能,支持计算功能的动态扩展;
解析校验模块,用于提供脚本的校验和解析功能,可以对脚本的合法性进行校验,并可以将脚本解析成为程序的执行流程逻辑;
管理模块,用于提供定时、脚本存储和优化分析功能。定时功能用于根据脚本的执行条件信息来计算、维护脚本下次执行的时序队列,并按时驱动脚本执行。脚本存储功能用于在内存和本地文件中对脚本进行同步存储,并自动清除失效脚本。优化分析模块用于对处理逻辑可以合并优化的脚本进行识别;
引擎模块,用于根据解析出来的执行流程逻辑实际运行处理程序,并 提供多脚本按时序执行、多计算串行/并行执行功能;
开发客户端,用于向开发人员提供集成了校验功能的脚本配置界面,可将编辑完的脚本推送给工程人员进行部署,还可向功能库上传新的计算功能或更新、删除已有计算功能;
工程客户端,用于向工程人员提供集成了校验功能的定时配置界面,可向服务端管理模块上传新的脚本或查询、修改、删除、驱动已有脚本,还可对正在执行的脚本进行查询、挂起、接续、停止等操作。
一种SCADA系统定时数据处理脚本执行方法,含有以下步骤;
执行条件信息步骤、依赖资源信息步骤以及处理逻辑信息步骤;
执行条件信息步骤;用以设置定时触发条件和优先级;定时触发条件即执行时间,至少包括时刻(如“00:15”,表示0点15分)。仅设置时刻信息的脚本执行一次即失效,为了实现多次或周期执行,支持设置执行日期,可以指定为几个或连续一段日期(如“2013/1/15;2013/1/20-2013/1/29”,表示2013年1月15日以及2013年1月20日至29日),或者指定起始日期、执行周期和终止日期。起始日期(如“2013/1/1”)是脚本开始生效的日期,是唯一的,不设置则默认为脚本提交系统当日;执行周期为计算下次周期执行时间的必须信息,可以是一个时间间隔量(如“2天”、“1分钟”,时间单位支持分钟、小时、天、周、月、年),也可以是一个或几个星期日期(如“周一;周三;周五”);终止日期(如“2013/12/31”)是脚本失效的日期,如果不设置脚本将永远有效。优先级(“高/中/低”)为同一时刻触发脚本的执行优先等级;
依赖资源信息步骤;声明脚本执行所需的数据源类型和计算功能;
处理逻辑信息步骤;用以描述数据处理的详细流程,包括数据源信息和计算逻辑两部分内容;数据源信息描述读取数据的源数据库类型、地址、 端口、库表名、字段列表以及检索条件,以及写入数据的目标数据库类型、地址、端口、库表名,写入字段列表以及写入模式(更新/插入);计算逻辑描述所使用的计算功能、计算的输入字段以及计算的输出字段,可以使用多种计算。
脚本应遵循严格的语法,否则不合法。脚本还应满足一些限制条件,比如:至少应包括依赖资源信息和处理逻辑信息;处理逻辑中使用的所有数据源类型和计算功能应通过依赖资源进行声明;不可缺少数据源信息;处理逻辑中计算功能的输入应完整,输出字段须为计算功能说支持;作为输入的字段必须是前置流程中读入或者输出的字段,等等。否则,脚本不合法。
多个合法脚本可以进行组合,用以描述彼此间的关联关系,先后顺序表示其执行时序。
一种SCADA系统定时数据处理脚本执行方法,还含有以下步骤;
第一步,开发人员按照引擎接入规范完成新的计算功能的开发,并通过开发客户端将其成功上传至服务端功能库模块;
第二步,开发人员通过开发客户端,依照数据处理逻辑编制脚本,并推送给工程人员;
第三步,工程人员通过工程客户端对新到脚本进行审核,并和服务端管理模块进行交互,对经静态优化分析后可以合并的脚本进行整合,并根据需要加入执行条件信息,上传至服务端管理模块;
第四步,管理模块对新增脚本进行存储,并对执行条件进行解析,计算出下次执行时间,插入到时序队列中;
第五步,当服务端时间到达脚本执行时间时,管理模块向引擎模块发送驱动命令,并再次计算出下次执行时间,重新插入到时序队列中;
第六步,引擎模块收到驱动命令后,对脚本进行实时解析,按照解析出来的执行流程逻辑,选择合适的串行/并行模式,调用功能库,运行程序;
第七步,重复第五步和第六步,直至脚本失效。
本发明的优点是:
1)开发人员只需根据数据处理业务逻辑配置简单的脚本,即可对已有的计算功能进行复用,完成新的应用开发;
2)开发人员只需按一定的规范开发新的计算功能,在通过接口校验后可即时上传并接入系统的功能库供脚本调用,完成动态功能扩展;
3)工程人员对脚本进行审核后加入定时触发条件等执行条件信息,上传至系统,通过语法和限制条件校验即可由系统自动完成应用部署,并随时可以查看、修改、删除、驱动;
4)系统可以自动对脚本进行分析,并提供静态优化方案,经工程人员确定后,可以合并脚本,减少冗余的执行过程;
5)系统支持多个关联脚本按时序执行,提供多计算的串行/并行执行模式进行动态优化,并可将执行中的脚本挂起、接续、停止。
从而,大大提升定时数据处理应用的稳定性、可控性和性能,缩小工作量,降低开发和部署难度,节约维护成本。
本发明技术方案带来的有益效果:
本发明带来的直接效果是制定了严格的脚本语法和解析校验方法,构建了可控的引擎运行环境,支持功能库动态扩展,封装了统一的定时功能,并采用了静态和动态的优化技术,从而通过简单的脚本配置即可完成复杂定时数据处理应用的定制开发,大大提升了定时数据处理应用的稳定性、可控性和性能,缩小了工作量,降低了开发和部署难度,节约了维护成本。
附图说明
当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,如图其中:
图1定时数据处理流程示意图;
图2脚本执行系统结构示意图;
图3脚本定时驱动流程图;
图4多脚本按时序执行流程图;
图5多计算串行/并行执行流程图;
图6计算线程执行流程图;
下面结合附图和实施例对本发明进一步说明。
具体实施方式
显然,本领域技术人员基于本发明的宗旨所做的许多修改和变化属于本发明的保护范围。
实施例1:如图1、图2、图3、图4、图5、图6所示,
本系统设计的脚本主要用以描述三部分内容:执行条件信息、依赖资源信息以及处理逻辑信息。
执行条件信息用以设置定时触发条件和优先级。定时触发条件即执行时间,至少包括时刻(如“00:15”,表示0点15分)。仅设置时刻信息的脚本执行一次即失效,为了实现多次或周期执行,支持设置执行日期,可以指定为几个或连续一段日期(如“2013/1/15;2013/1/20-2013/1/29”,表示2013年1月15日以及2013年1月20日至29日),或者指定起始日期、执行周期和终止日期。起始日期(如“2013/1/1”)是脚本开始生效 的日期,是唯一的,不设置则默认为脚本提交系统当日;执行周期为计算下次周期执行时间的必须信息,可以是一个时间间隔量(如“2天”、“1分钟”,时间单位支持分钟、小时、天、周、月、年),也可以是一个或几个星期日期(如“周一;周三;周五”);终止日期(如“2013/12/31”)是脚本失效的日期,如果不设置脚本将永远有效。优先级(“高/中/低”)为同一时刻触发脚本的执行优先等级。
依赖资源信息声明脚本执行所需的数据源类型和计算功能。
处理逻辑信息用以描述数据处理的详细流程,包括数据源信息和计算逻辑两部分内容。数据源信息描述读取数据的源数据库类型、地址、端口、库表名、字段列表以及检索条件,以及写入数据的目标数据库类型、地址、端口、库表名,写入字段列表以及写入模式(更新/插入)。计算逻辑描述所使用的计算功能、计算的输入字段以及计算的输出字段,可以使用多种计算。
脚本应遵循严格的语法,否则不合法。脚本还应满足一些限制条件,比如:至少应包括依赖资源信息和处理逻辑信息;处理逻辑中使用的所有数据源类型和计算功能应通过依赖资源进行声明;不可缺少数据源信息;处理逻辑中计算功能的输入应完整,输出字段须为计算功能说支持;作为输入的字段必须是前置流程中读入或者输出的字段,等等。否则,脚本不合法。
多个合法脚本可以进行组合,用以描述彼此间的关联关系,先后顺序表示其执行时序。
脚本执行系统
脚本执行系统可分为六个主要模块,即功能库模块、解析校验模块、管理模块、引擎模块、开发客户端和工程客户端,如图2所示。
功能库模块,用于提供所有数据处理所需的底层功能,包括数据读取、数据写入和计算功能,支持计算功能的动态扩展。
解析校验模块,用于提供脚本的校验和解析功能,可以对脚本的合法性进行校验,并可以将脚本解析成为程序的执行流程逻辑。
管理模块,用于提供定时、脚本存储和优化分析功能。定时功能用于根据脚本的执行条件信息来计算、维护脚本下次执行的时序队列,并按时驱动脚本执行。脚本存储功能用于在内存和本地文件中对脚本进行同步存储,并自动清除失效脚本。优化分析模块用于对处理逻辑可以合并优化的脚本进行识别。
引擎模块,用于根据解析出来的执行流程逻辑实际运行处理程序,并提供多脚本按时序执行、多计算串行/并行执行功能。
开发客户端,用于向开发人员提供集成了校验功能的脚本配置界面,可将编辑完的脚本推送给工程人员进行部署,还可向功能库上传新的计算功能或更新、删除已有计算功能。
工程客户端,用于向工程人员提供集成了校验功能的定时配置界面,可向服务端管理模块上传新的脚本或查询、修改、删除、驱动已有脚本,还可对正在执行的脚本进行查询、挂起、接续、停止等操作。
一个脚本从开发到执行的通常流程是:
第一步,开发人员按照引擎接入规范完成新的计算功能的开发,并通过开发客户端将其成功上传至服务端功能库模块。
第二步,开发人员通过开发客户端,依照数据处理逻辑编制脚本,并推送给工程人员。
第三步,工程人员通过工程客户端对新到脚本进行审核,并和服务端管理模块进行交互,对经静态优化分析后可以合并的脚本进行整合,并根 据需要加入执行条件信息,上传至服务端管理模块。
第四步,管理模块对新增脚本进行存储,并对执行条件进行解析,计算出下次执行时间,插入到时序队列中。
第五步,当服务端时间到达脚本执行时间时,管理模块向引擎模块发送驱动命令,并再次计算出下次执行时间,重新插入到时序队列中。
第六步,引擎模块收到驱动命令后,对脚本进行实时解析,按照解析出来的执行流程逻辑,选择合适的串行/并行模式,调用功能库,运行程序。
第七步,重复第五步和第六步,直至脚本失效。
在实施过程中,有以下主要步骤:首先对脚本语法进行形式化定义,将产生式用标准巴科斯范式(BNF)进行描述。然后针对定义好的脚本语法,设计一种基于递归下降法的语法分析器,将脚本解析成抽象语法树(AST)。再而接入功能库,结合限制条件实现对抽象语法树进行合法性校验,并对数据源部分结构相同的语法树进行优化分析。最后构造定时器和引擎运行环境,定时驱动脚本,遍历抽象语法树,生成执行流程逻辑,调用功能库,运行程序。
实施过程中,针对功能库动态扩展、脚本定时驱动、多脚本按时序执行、多计算串行/并行动态优化等关键功能,实施方案如下:
功能库动态扩展
为实现脚本动态解释执行,引擎采用了动态链接库技术,并定义了特定的接入规范。所有要接入引擎的计算功能,需实现特定的接口,包括处理逻辑接口、校验接口以及功能说明接口等等,并封装成为动态链接库。在确保计算功能程序正确的前提下,如果引擎能够成功加载动态链接库并完成接口映射,则计算功能可动态加入功能库。
脚本定时驱动
脚本定时驱动依赖定时触发条件的解析,以及定时器。
脚本的下次执行时间格式为“yy/mm/dd hh:mm”,即某年某月某日某时某分,其计算方法为:
1)确定计算基准时间,优先取脚本最近一次的执行时间。如果没有该时间,则先根据脚本时刻确定基准的时刻,然后根据脚本的执行日期中最近的未来日期或起始日期确定基准日期,其中,如果执行日期均已过期,则脚本已失效,返回;如果没有以上日期,则取脚本提交系统当日;
2)如果脚本仅设置执行日期,则下次执行时间即为基准时间,返回结果;
3)如果脚本设置了执行周期,则根据具体的周期条件进行计算。如果设置的是时间间隔量,则用基准时间累加周期(以1900/1/1为零点,换算成分),直至得到最近的未来时间;如果设置的是星期日期,则根据基姆拉尔森公式计算最近的未来日期;
4)如果有终止日期,将3)得到的结果日期与终止日期进行比对,如果未到期,返回结果,否则失效返回;没有终止日期,直接返回结果。
定时器基于时钟实现,每一秒钟对时序队列最靠前的系列脚本进行扫描,如果到时,则驱动脚本执行。
脚本定时驱动的流程如图3所示。
首先,新的定时脚本上传之后,将计算其下次执行时间。如果无效,则删除该脚本;如果有效,则更新当前的时序队列。
然后,定时器定期对时序队列进行扫描判断。如果未到时,则循环等待下次扫描判断;如果到时,则驱动脚本执行。
最后,驱动脚本执行后将重新计算其下次执行时间,重复前述过程。
多脚本按时序执行
多个关联脚本组合在一起,其顺序表示各脚本执行的先后时序。收到驱动后将先后启动不同线程串行执行各子脚本,其流程如图4所示。
第一步,解析脚本,并从功能库中调用处理过程所需要的所有资源。
第二步,开始执行脚本,按照读取数据、计算处理、写入数据的流程执行,并在结束时清除本地的一些缓存文件。
第三步,判断是否还有后继脚本。如果有,重复第二步;如果没有,则执行完毕。
多计算串行/并行执行
引擎在执行脚本时采用了多线程技术,用不同的线程来执行不同的计算。如果不同计算之间不存在逻辑的依赖关系,则可以使用并行模式,来对执行速度进行优化。引擎支持串行/并行共同存在的执行模式。特别地,需要对所有数据加上唯一标识,以在各计算线程结束后对结果进行整合。
串行/并行计算的执行流程如图5和图6所示。
第一步,程序在启动时会判断脚本的解析结果,是否存在逻辑无关的计算。如果存在逻辑无关的计算,将启动多个线程进行并行计算;如果存在逻辑相关的计算,将由一个线程来进行串行计算。
第二步,单个计算线程启动后,将调用计算功能对数据进行计算处理,如果有后继计算则将进入下一个计算处理过程,直至计算结束。
第三步,待各计算线程结束后,如果启动过并行模式,还将对多线程的计算结果进行整合,最后结束。
如上所述,对本发明的实施例进行了详细地说明,但是只要实质上没有脱离本发明的发明点及效果可以有很多的变形,这对本领域的技术人员 来说是显而易见的。因此,这样的变形例也全部包含在本发明的保护范围之内。
Claims (3)
1.一种SCADA系统定时数据处理脚本执行系统,其特征在于,分为六个主要模块,即功能库模块、解析校验模块、管理模块、引擎模块、开发客户端和工程客户端;
功能库模块,用于提供所有数据处理所需的底层功能,包括数据读取、数据写入和计算功能,支持计算功能的动态扩展;
解析校验模块,用于提供脚本的校验和解析功能,可以对脚本的合法性进行校验,并可以将脚本解析成为程序的执行流程逻辑;
管理模块,用于提供定时、脚本存储和优化分析功能;定时功能用于根据脚本的执行条件信息来计算、维护脚本下次执行的时序队列,并按时驱动脚本执行;
脚本存储功能用于在内存和本地文件中对脚本进行同步存储,并自动清除失效脚本;优化分析模块用于对处理逻辑可以合并优化的脚本进行识别;
引擎模块,用于根据解析出来的执行流程逻辑实际运行处理程序,并提供多脚本按时序执行、多计算串行/并行执行功能;
开发客户端,用于向开发人员提供集成了校验功能的脚本配置界面,可将编辑完的脚本推送给工程人员进行部署,还可向功能库上传新的计算功能或更新、删除已有计算功能;
工程客户端,用于向工程人员提供集成了校验功能的定时配置界面,可向服务端管理模块上传新的脚本或查询、修改、删除、驱动已有脚本,还可对正在执行的脚本进行查询、挂起、接续、停止等操作;
其中,所述系统还用于首先对脚本语法进行形式化定义,将产生式用标准巴科斯范式进行描述;然后针对定义好的脚本语法,将脚本解析成抽象语法树;再而接入功能库,结合限制条件实现对抽象语法树进行合法性校验,并对数据源部分结构相同的语法树进行优化分析;最后构造定时器和引擎运行环境,定时驱动脚本,遍历抽象语法树,生成执行流程逻辑,调用功能库,运行程序。
2.一种SCADA系统定时数据处理脚本执行方法,其特征在于,包括:执行条件信息步骤、依赖资源信息步骤以及处理逻辑信息步骤;
执行条件信息步骤;用以设置定时触发条件和优先级;定时触发条件即执行时间,至少包括时刻;仅设置时刻信息的脚本执行一次即失效,为了实现多次或周期执行,支持设置执行日期,可以指定为几个或连续一段日期,或者指定起始日期、执行周期和终止日期;起始日期是脚本开始生效的日期,是唯一的,不设置则默认为脚本提交系统当日;执行周期为计算下次周期执行时间的必须信息,
可以是一个时间间隔量,也可以是一个或几个星期日期;终止日期是脚本失效的日期,如果不设置脚本将永远有效;优先级为同一时刻触发脚本的执行优先等级;
依赖资源信息步骤;声明脚本执行所需的数据源类型和计算功能;
处理逻辑信息步骤;用以描述数据处理的详细流程,包括数据源信息和计算逻辑两部分内容;数据源信息描述读取数据的源数据库类型、地址、端口、库表名、字段列表以及检索条件,以及写入数据的目标数据库类型、地址、端口、库表名,写入字段列表以及写入模式;计算逻辑描述所使用的计算功能、计算的输入字段以及计算的输出字段,可以使用多种计算;
其中,上述方法还包括以下步骤:首先对脚本语法进行形式化定义,将产生式用标准巴科斯范式进行描述;然后针对定义好的脚本语法,将脚本解析成抽象语法树;再而接入功能库,结合限制条件实现对抽象语法树进行合法性校验,并对数据源部分结构相同的语法树进行优化分析;最后构造定时器和引擎运行环境,定时驱动脚本,遍历抽象语法树,生成执行流程逻辑,调用功能库,运行程序。
3.根据权利要求2所述的一种SCADA系统定时数据处理脚本执行方法,其特征在于,含有以下步骤:
针对功能库动态扩展、脚本定时驱动、多脚本按时序执行、多计算串行/并行动态优化等关键功能,实施步骤如下:
功能库动态扩展步骤;
为实现脚本动态解释执行,引擎采用了动态链接库技术,并定义了特定的接入规范;所有要接入引擎的计算功能,需实现特定的接口,包括处理逻辑接口、校验接口以及功能说明接口,并封装成为动态链接库;在确保计算功能程序正确的前提下,如果引擎能够成功加载动态链接库并完成接口映射,则计算功能可动态加入功能库;
脚本定时驱动步骤;
脚本定时驱动依赖定时触发条件的解析,以及定时器;
脚本的下次执行时间格式为某年某月某日某时某分,其计算步骤为:
确定计算基准时间,优先取脚本最近一次的执行时间;如果没有该时间,则先根据脚本时刻确定基准的时刻,然后根据脚本的执行日期中最近的未来日期或起始日期确定基准日期,其中,如果执行日期均已过期,则脚本已失效,返回;如果没有以上日期,则取脚本提交系统当日;
如果脚本仅设置执行日期,则下次执行时间即为基准时间,返回结果;
如果脚本设置了执行周期,则根据具体的周期条件进行计算;如果设置的是时间间隔量,则用基准时间累加周期,直至得到最近的未来时间;如果设置的是星期日期,则根据基姆拉尔森公式计算最近的未来日期;
如果有终止日期,将上述计算得到的结果日期与终止日期进行比对,如果未到期,返回结果,否则失效返回;没有终止日期,直接返回结果;定时器基于时钟实现,每一秒钟对时序队列最靠前的系列脚本进行扫描,如果到时,则驱动脚本执行;脚本定时驱动的步骤;
首先,新的定时脚本上传之后,将计算其下次执行时间;如果无效,则删除该脚本;如果有效,则更新当前的时序队列;
然后,定时器定期对时序队列进行扫描判断;如果未到时,则循环等待下次扫描判断;
如果到时,则驱动脚本执行;
最后,驱动脚本执行后将重新计算其下次执行时间,重复执行前述脚本定时驱动的所有步骤;
多脚本按时序执行步骤;
多个关联脚本组合在一起,其顺序表示各脚本执行的先后时序;收到驱动后将先后启动不同线程串行执行各子脚本,其流程步骤;
第一步,解析脚本,并从功能库中调用处理过程所需要的所有资源;
第二步,开始执行脚本,按照读取数据、计算处理、写入数据的流程执行,并在结束时清除本地的一些缓存文件;
第三步,判断是否还有后继脚本;如果有,重复第二步;如果没有,则执行完毕;
多计算串行/并行执行步骤;
引擎在执行脚本时采用了多线程技术,用不同的线程来执行不同的计算;如果不同计算之间不存在逻辑的依赖关系,则可以使用并行模式,来对执行速度进行优化;引擎支持串行/并行共同存在的执行模式;特别地,需要对所有数据加上唯一标识,以在各计算线程结束后对结果进行整合;
串行/并行计算的执行步骤;
第一步,程序在启动时会判断脚本的解析结果,是否存在逻辑无关的计算;如果存在逻辑无关的计算,将启动多个线程进行并行计算;如果存在逻辑相关的计算,将由一个线程来进行串行计算;
第二步,单个计算线程启动后,将调用计算功能对数据进行计算处理,如果有后继计算则将进入下一个计算处理过程,直至计算结束;
第三步,待各计算线程结束后,如果启动过并行模式,还将对多线程的计算结果进行整合,最后结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310397872.1A CN104423953B (zh) | 2013-09-04 | 2013-09-04 | 一种scada 系统定时数据处理脚本执行系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310397872.1A CN104423953B (zh) | 2013-09-04 | 2013-09-04 | 一种scada 系统定时数据处理脚本执行系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104423953A CN104423953A (zh) | 2015-03-18 |
CN104423953B true CN104423953B (zh) | 2018-07-13 |
Family
ID=52973046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310397872.1A Active CN104423953B (zh) | 2013-09-04 | 2013-09-04 | 一种scada 系统定时数据处理脚本执行系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104423953B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468776A (zh) * | 2015-12-11 | 2016-04-06 | 北京奇虎科技有限公司 | 操作数据库的方法、装置及系统 |
CN105468379B (zh) * | 2015-12-25 | 2019-06-14 | 珠海豹趣科技有限公司 | 一种脚本文件执行方法及装置 |
CN105446200B (zh) * | 2015-12-31 | 2018-08-07 | 浙江中控软件技术有限公司 | 一种自动控制方法及装置 |
CN107193681B (zh) * | 2016-03-15 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 数据校验方法及装置 |
CN108958729B (zh) * | 2017-05-19 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及存储介质 |
CN107730126B (zh) * | 2017-10-23 | 2021-06-01 | 浪潮通用软件有限公司 | 一种实现定时的方法及装置 |
WO2020077563A1 (zh) * | 2018-10-17 | 2020-04-23 | 北京比特大陆科技有限公司 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
CN109598480A (zh) * | 2018-11-26 | 2019-04-09 | 泰康保险集团股份有限公司 | 定时任务执行时间的管理方法及装置 |
CN111686448B (zh) * | 2019-03-13 | 2023-07-21 | 上海波克城市网络科技股份有限公司 | 游戏脚本的运行控制方法及装置、存储介质、服务器 |
CN110096259A (zh) * | 2019-03-15 | 2019-08-06 | 佛山青藤信息科技有限公司 | 一种Web页面元素定位方法及系统 |
CN113391798A (zh) * | 2020-03-11 | 2021-09-14 | 北京灵汐科技有限公司 | 一种自动优化配置生成方法和系统 |
CN113391887B (zh) * | 2020-03-11 | 2024-03-12 | 北京国电智深控制技术有限公司 | 一种处理工业数据的方法及系统 |
CN111930474B (zh) * | 2020-07-30 | 2023-11-17 | 杭州当虹科技股份有限公司 | 一种基于java原子操作的单服务接口的并发限制方法 |
CN112183936A (zh) * | 2020-08-31 | 2021-01-05 | 中冶南方都市环保工程技术股份有限公司 | 一种用于工业生产管理的性能指标实时计算方法 |
CN114253814A (zh) * | 2020-09-22 | 2022-03-29 | Igg新加坡有限私人贸易公司 | 游戏服务器压力测试方法及装置 |
CN112306470B (zh) * | 2020-10-19 | 2022-04-08 | 南京航空航天大学 | 一种复杂同步语言程序的化简转化和自动验证方法 |
CN113791881B (zh) * | 2021-08-10 | 2023-10-03 | 浪潮金融信息技术有限公司 | 一种周期性任务处理方法、系统及介质 |
CN115904487B (zh) * | 2022-11-29 | 2023-08-18 | 广发银行股份有限公司 | 一种分析型数据口径管理方法、系统、设备及存储介质 |
CN117041363A (zh) * | 2023-10-09 | 2023-11-10 | 井芯微电子技术(天津)有限公司 | 自定义数据包实现多器件级联配置的方法、装置和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694626A (zh) * | 2009-09-30 | 2010-04-14 | 曙光信息产业(北京)有限公司 | 脚本执行系统及方法 |
CN102323945A (zh) * | 2011-09-02 | 2012-01-18 | 南京中兴力维软件有限公司 | 一种基于sql的数据库管理方法和装置 |
CN102495799A (zh) * | 2011-12-02 | 2012-06-13 | 刘伟 | 移动终端的自动化测试系统和方法 |
-
2013
- 2013-09-04 CN CN201310397872.1A patent/CN104423953B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694626A (zh) * | 2009-09-30 | 2010-04-14 | 曙光信息产业(北京)有限公司 | 脚本执行系统及方法 |
CN102323945A (zh) * | 2011-09-02 | 2012-01-18 | 南京中兴力维软件有限公司 | 一种基于sql的数据库管理方法和装置 |
CN102495799A (zh) * | 2011-12-02 | 2012-06-13 | 刘伟 | 移动终端的自动化测试系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104423953A (zh) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104423953B (zh) | 一种scada 系统定时数据处理脚本执行系统及方法 | |
CN101567013B (zh) | 一种etl调度的实现方法及装置 | |
Dean et al. | MapReduce: Simplified data processing on large clusters | |
Besta et al. | Practice of streaming processing of dynamic graphs: Concepts, models, and systems | |
CN105719126B (zh) | 一种基于生命周期模型的互联网大数据任务调度的系统及方法 | |
CN103631870A (zh) | 一种用于大规模分布式数据处理的系统及其方法 | |
CN103338135A (zh) | 一种集群存储容量的实时监控方法 | |
Snodgrass | Monitoring distributed systems: A relational approach | |
Wu et al. | Legacy systems migration-a method and its tool-kit framework | |
Yang et al. | Towards a formal semantics for the AADL behavior annex | |
CN109213671B (zh) | 软件测试方法及其平台 | |
Carbone | Scalable and Reliable Data Stream Processing | |
CN113157318A (zh) | 基于倒计时缓冲的gpdsp汇编移植优化方法及系统 | |
CN103080925A (zh) | 利用制作成数据库的共享内存的工程分析程序间的同步连接方法及系统 | |
CN114756357A (zh) | 一种基于jvm的非阻塞分布式计划任务调度方法 | |
Sun et al. | AdaPipe: Optimizing Pipeline Parallelism with Adaptive Recomputation and Partitioning | |
CN105573763A (zh) | 一种支持rtos的嵌入式系统建模方法 | |
CN103699627A (zh) | 一种基于Hadoop集群的超大文件并行数据块定位方法 | |
Niaouris | An algebra of Petri nets with arc-based time restrictions | |
Gracia-Tinedo et al. | Lamda-flow: Automatic pushdown of dataflow operators close to the data | |
Qi et al. | Smart contract parallel execution with fine-grained state accesses | |
CN114116900A (zh) | 一种基于mdd模型的高效交易系统及开发方法 | |
Bartels et al. | Verification of distributed embedded real-time systems and their low-level implementations using timed CSP | |
Brown et al. | Reversible communicating processes | |
Mogk | A Programming Paradigm for Reliable Applications in a Decentralized Setting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211110 Address after: Room 08-10, 6 / F, block a, No. 5, Dongtucheng Road, Chaoyang District, Beijing 100013 Patentee after: National Petroleum and natural gas pipeline network Group Co.,Ltd. Address before: 100007 China Petroleum Building, No. 9, Dongzhimen North Street, Dongcheng District, Beijing Patentee before: PetroChina Company Limited |