欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種scada系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng)及方法

文檔序號(hào):6510213閱讀:573來(lái)源:國(guó)知局
一種scada系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng)及方法
【專(zhuān)利摘要】一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng)及方法,屬于【技術(shù)領(lǐng)域】。功能庫(kù)模塊用于提供所有數(shù)據(jù)處理所需的底層功能,包括數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算功能,支持計(jì)算功能的動(dòng)態(tài)擴(kuò)展;解析校驗(yàn)?zāi)K用于提供腳本的校驗(yàn)和解析功能;管理模塊用于提供定時(shí)、腳本存儲(chǔ)和優(yōu)化分析功能。引擎模塊用于根據(jù)解析出來(lái)的執(zhí)行流程邏輯實(shí)際運(yùn)行處理程序,并提供多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行執(zhí)行功能;開(kāi)發(fā)客戶端用于向開(kāi)發(fā)人員提供集成了校驗(yàn)功能的腳本配置界面。本發(fā)明通過(guò)簡(jiǎn)單的腳本配置即可完成復(fù)雜定時(shí)數(shù)據(jù)處理應(yīng)用的定制開(kāi)發(fā),大大提升了定時(shí)數(shù)據(jù)處理應(yīng)用的穩(wěn)定性、可控性和性能,縮小了工作量,降低了開(kāi)發(fā)和部署難度,節(jié)約了維護(hù)成本。
【專(zhuān)利說(shuō)明】—種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng)及方法

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng)及方法,屬于【技術(shù)領(lǐng)域】。

【背景技術(shù)】
[0002]在SCADA系統(tǒng)中,有一類(lèi)特殊的應(yīng)用,需要在指定時(shí)間或者周期性地獲取數(shù)據(jù)庫(kù)數(shù)據(jù),并進(jìn)行計(jì)算處理,再將相關(guān)結(jié)果寫(xiě)入數(shù)據(jù)庫(kù),我們稱(chēng)之為定時(shí)數(shù)據(jù)處理。這類(lèi)應(yīng)用的執(zhí)行流程可以概括為“數(shù)據(jù)讀取_>計(jì)算處理_>數(shù)據(jù)寫(xiě)入”,如圖1所示。
[0003]目前常見(jiàn)的技術(shù)方案是分別獨(dú)立開(kāi)發(fā)這些應(yīng)用,再使用操作系統(tǒng)提供的定時(shí)器(如Iinux下的crontab)來(lái)定時(shí)執(zhí)行實(shí)現(xiàn)。但是這種方案有四個(gè)主要缺點(diǎn):一是開(kāi)發(fā)量大、重復(fù)代碼多,不同的應(yīng)用之間,可能僅僅是數(shù)據(jù)源不同,或者處理的邏輯不同;二是耦合性強(qiáng)、維護(hù)成本高,如果需要改變數(shù)據(jù)源或者增減計(jì)算功能,必須重新修改程序;三是可控性差、性能低,不同的應(yīng)用都是以進(jìn)程形式啟動(dòng),一旦執(zhí)行很難控制,只能強(qiáng)行停止,且應(yīng)用之間無(wú)法實(shí)現(xiàn)數(shù)據(jù)共享和邏輯優(yōu)化,有些相同的數(shù)據(jù)可能被重復(fù)讀取,造成執(zhí)行效率低下;四是不易部署,應(yīng)用的數(shù)量很多,且定時(shí)功能依賴操作系統(tǒng),而不同的操作系統(tǒng)提供的定時(shí)器的使用方法不同,造成工程實(shí)施難度大。
[0004]以往開(kāi)發(fā)的SCADA定時(shí)數(shù)據(jù)處理應(yīng)用基本上都是基于以上方案,并針對(duì)其缺點(diǎn)采取了改進(jìn)措施,將數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算處理劃分為相對(duì)獨(dú)立的程序模塊并進(jìn)行封裝,通過(guò)配置文件即可完成簡(jiǎn)單的數(shù)據(jù)源設(shè)置。在此基礎(chǔ)上進(jìn)行的二次開(kāi)發(fā),重點(diǎn)是實(shí)現(xiàn)計(jì)算邏輯,削弱了程序內(nèi)部的耦合性,從而初步實(shí)現(xiàn)了代碼復(fù)用,一定程度上降低了開(kāi)發(fā)量和維護(hù)成本。
[0005]但是隨著業(yè)務(wù)的不斷發(fā)展,定時(shí)數(shù)據(jù)處理應(yīng)用越來(lái)越多,可控性差、性能低等缺點(diǎn)越發(fā)凸顯,一味追加硬件已經(jīng)無(wú)法滿足系統(tǒng)的穩(wěn)定性和性能要求;應(yīng)用部署的工作量大,依舊十分困難。


【發(fā)明內(nèi)容】

[0006]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種,一種腳本用以描述定時(shí)觸發(fā)條件、優(yōu)先級(jí)、處理邏輯、執(zhí)行時(shí)序等信息,并基于該腳本語(yǔ)言構(gòu)建一個(gè)腳本執(zhí)行系統(tǒng),將數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算處理等程序模塊集成到公用功能庫(kù)中,把應(yīng)用邏輯轉(zhuǎn)化為腳本存儲(chǔ)并對(duì)不同應(yīng)用的執(zhí)行邏輯進(jìn)行優(yōu)化,在統(tǒng)一的運(yùn)行環(huán)境中定時(shí)觸發(fā)運(yùn)行。
[0007]一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng),分為六個(gè)主要模塊,即功能庫(kù)模塊、解析校驗(yàn)?zāi)K、管理模塊、弓I擎模塊、開(kāi)發(fā)客戶端和工程客戶端;
[0008]功能庫(kù)模塊,用于提供所有數(shù)據(jù)處理所需的底層功能,包括數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算功能,支持計(jì)算功能的動(dòng)態(tài)擴(kuò)展;
[0009]解析校驗(yàn)?zāi)K,用于提供腳本的校驗(yàn)和解析功能,可以對(duì)腳本的合法性進(jìn)行校驗(yàn),并可以將腳本解析成為程序的執(zhí)行流程邏輯;
[0010]管理模塊,用于提供定時(shí)、腳本存儲(chǔ)和優(yōu)化分析功能。定時(shí)功能用于根據(jù)腳本的執(zhí)行條件信息來(lái)計(jì)算、維護(hù)腳本下次執(zhí)行的時(shí)序隊(duì)列,并按時(shí)驅(qū)動(dòng)腳本執(zhí)行。腳本存儲(chǔ)功能用于在內(nèi)存和本地文件中對(duì)腳本進(jìn)行同步存儲(chǔ),并自動(dòng)清除失效腳本。優(yōu)化分析模塊用于對(duì)處理邏輯可以合并優(yōu)化的腳本進(jìn)行識(shí)別;
[0011]引擎模塊,用于根據(jù)解析出來(lái)的執(zhí)行流程邏輯實(shí)際運(yùn)行處理程序,并提供多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行執(zhí)行功能;
[0012]開(kāi)發(fā)客戶端,用于向開(kāi)發(fā)人員提供集成了校驗(yàn)功能的腳本配置界面,可將編輯完的腳本推送給工程人員進(jìn)行部署,還可向功能庫(kù)上傳新的計(jì)算功能或更新、刪除已有計(jì)算功能;
[0013]工程客戶端,用于向工程人員提供集成了校驗(yàn)功能的定時(shí)配置界面,可向服務(wù)端管理模塊上傳新的腳本或查詢、修改、刪除、驅(qū)動(dòng)已有腳本,還可對(duì)正在執(zhí)行的腳本進(jìn)行查詢、掛起、接續(xù)、停止等操作。
[0014]一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行方法,含有以下步驟;
[0015]執(zhí)行條件信息步驟、依賴資源信息步驟以及處理邏輯信息步驟;
[0016]執(zhí)行條件信息步驟;用以設(shè)置定時(shí)觸發(fā)條件和優(yōu)先級(jí);定時(shí)觸發(fā)條件即執(zhí)行時(shí)間,至少包括時(shí)刻(如“00:15”,表示O點(diǎn)15分)。僅設(shè)置時(shí)刻信息的腳本執(zhí)行一次即失效,為了實(shí)現(xiàn)多次或周期執(zhí)行,支持設(shè)置執(zhí)行日期,可以指定為幾個(gè)或連續(xù)一段日期(如“2013/1/15 ;2013/1/20-2013/1/29”,表示 2013 年 I 月 15 日以及 2013 年 I 月 20 日至29日),或者指定起始日期、執(zhí)行周期和終止日期。起始日期(如“2013/1/1”)是腳本開(kāi)始生效的日期,是唯一的,不設(shè)置則默認(rèn)為腳本提交系統(tǒng)當(dāng)日;執(zhí)行周期為計(jì)算下次周期執(zhí)行時(shí)間的必須信息,可以是一個(gè)時(shí)間間隔量(如“2天”、“I分鐘”,時(shí)間單位支持分鐘、小時(shí)、天、周、月、年),也可以是一個(gè)或幾個(gè)星期日期(如“周一;周三;周五”);終止日期(如“2013/12/31”)是腳本失效的日期,如果不設(shè)置腳本將永遠(yuǎn)有效。優(yōu)先級(jí)(“高/中/低”)為同一時(shí)刻觸發(fā)腳本的執(zhí)行優(yōu)先等級(jí);
[0017]依賴資源信息步驟;聲明腳本執(zhí)行所需的數(shù)據(jù)源類(lèi)型和計(jì)算功能;
[0018]處理邏輯信息步驟;用以描述數(shù)據(jù)處理的詳細(xì)流程,包括數(shù)據(jù)源信息和計(jì)算邏輯兩部分內(nèi)容;數(shù)據(jù)源信息描述讀取數(shù)據(jù)的源數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名、字段列表以及檢索條件,以及寫(xiě)入數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名,寫(xiě)入字段列表以及寫(xiě)入模式(更新/插入);計(jì)算邏輯描述所使用的計(jì)算功能、計(jì)算的輸入字段以及計(jì)算的輸出字段,可以使用多種計(jì)算。
[0019]腳本應(yīng)遵循嚴(yán)格的語(yǔ)法,否則不合法。腳本還應(yīng)滿足一些限制條件,比如:至少應(yīng)包括依賴資源信息和處理邏輯信息;處理邏輯中使用的所有數(shù)據(jù)源類(lèi)型和計(jì)算功能應(yīng)通過(guò)依賴資源進(jìn)行聲明;不可缺少數(shù)據(jù)源信息;處理邏輯中計(jì)算功能的輸入應(yīng)完整,輸出字段須為計(jì)算功能說(shuō)支持;作為輸入的字段必須是前置流程中讀入或者輸出的字段,等等。否貝U,腳本不合法。
[0020]多個(gè)合法腳本可以進(jìn)行組合,用以描述彼此間的關(guān)聯(lián)關(guān)系,先后順序表示其執(zhí)行時(shí)序。
[0021]一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行方法,還含有以下步驟;
[0022]第一步,開(kāi)發(fā)人員按照引擎接入規(guī)范完成新的計(jì)算功能的開(kāi)發(fā),并通過(guò)開(kāi)發(fā)客戶端將其成功上傳至服務(wù)端功能庫(kù)模塊;
[0023]第二步,開(kāi)發(fā)人員通過(guò)開(kāi)發(fā)客戶端,依照數(shù)據(jù)處理邏輯編制腳本,并推送給工程人員;
[0024]第三步,工程人員通過(guò)工程客戶端對(duì)新到腳本進(jìn)行審核,并和服務(wù)端管理模塊進(jìn)行交互,對(duì)經(jīng)靜態(tài)優(yōu)化分析后可以合并的腳本進(jìn)行整合,并根據(jù)需要加入執(zhí)行條件信息,上傳至服務(wù)端管理模塊;
[0025]第四步,管理模塊對(duì)新增腳本進(jìn)行存儲(chǔ),并對(duì)執(zhí)行條件進(jìn)行解析,計(jì)算出下次執(zhí)行時(shí)間,插入到時(shí)序隊(duì)列中;
[0026]第五步,當(dāng)服務(wù)端時(shí)間到達(dá)腳本執(zhí)行時(shí)間時(shí),管理模塊向引擎模塊發(fā)送驅(qū)動(dòng)命令,并再次計(jì)算出下次執(zhí)行時(shí)間,重新插入到時(shí)序隊(duì)列中;
[0027]第六步,引擎模塊收到驅(qū)動(dòng)命令后,對(duì)腳本進(jìn)行實(shí)時(shí)解析,按照解析出來(lái)的執(zhí)行流程邏輯,選擇合適的串行/并行模式,調(diào)用功能庫(kù),運(yùn)行程序;
[0028]第七步,重復(fù)第五步和第六步,直至腳本失效。
[0029]本發(fā)明的優(yōu)點(diǎn)是:
[0030]I)開(kāi)發(fā)人員只需根據(jù)數(shù)據(jù)處理業(yè)務(wù)邏輯配置簡(jiǎn)單的腳本,即可對(duì)已有的計(jì)算功能進(jìn)行復(fù)用,完成新的應(yīng)用開(kāi)發(fā);
[0031]2)開(kāi)發(fā)人員只需按一定的規(guī)范開(kāi)發(fā)新的計(jì)算功能,在通過(guò)接口校驗(yàn)后可即時(shí)上傳并接入系統(tǒng)的功能庫(kù)供腳本調(diào)用,完成動(dòng)態(tài)功能擴(kuò)展;
[0032]3)工程人員對(duì)腳本進(jìn)行審核后加入定時(shí)觸發(fā)條件等執(zhí)行條件信息,上傳至系統(tǒng),通過(guò)語(yǔ)法和限制條件校驗(yàn)即可由系統(tǒng)自動(dòng)完成應(yīng)用部署,并隨時(shí)可以查看、修改、刪除、驅(qū)動(dòng);
[0033]4)系統(tǒng)可以自動(dòng)對(duì)腳本進(jìn)行分析,并提供靜態(tài)優(yōu)化方案,經(jīng)工程人員確定后,可以合并腳本,減少冗余的執(zhí)行過(guò)程;
[0034]5)系統(tǒng)支持多個(gè)關(guān)聯(lián)腳本按時(shí)序執(zhí)行,提供多計(jì)算的串行/并行執(zhí)行模式進(jìn)行動(dòng)態(tài)優(yōu)化,并可將執(zhí)行中的腳本掛起、接續(xù)、停止。
[0035]從而,大大提升定時(shí)數(shù)據(jù)處理應(yīng)用的穩(wěn)定性、可控性和性能,縮小工作量,降低開(kāi)發(fā)和部署難度,節(jié)約維護(hù)成本。
[0036]本發(fā)明技術(shù)方案帶來(lái)的有益效果:
[0037]本發(fā)明帶來(lái)的直接效果是制定了嚴(yán)格的腳本語(yǔ)法和解析校驗(yàn)方法,構(gòu)建了可控的引擎運(yùn)行環(huán)境,支持功能庫(kù)動(dòng)態(tài)擴(kuò)展,封裝了統(tǒng)一的定時(shí)功能,并采用了靜態(tài)和動(dòng)態(tài)的優(yōu)化技術(shù),從而通過(guò)簡(jiǎn)單的腳本配置即可完成復(fù)雜定時(shí)數(shù)據(jù)處理應(yīng)用的定制開(kāi)發(fā),大大提升了定時(shí)數(shù)據(jù)處理應(yīng)用的穩(wěn)定性、可控性和性能,縮小了工作量,降低了開(kāi)發(fā)和部署難度,節(jié)約了維護(hù)成本。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0038]當(dāng)結(jié)合附圖考慮時(shí),通過(guò)參照下面的詳細(xì)描述,能夠更完整更好地理解本發(fā)明以及容易得知其中許多伴隨的優(yōu)點(diǎn),但此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定,如圖其中:
[0039]圖1定時(shí)數(shù)據(jù)處理流程示意圖;
[0040]圖2腳本執(zhí)行系統(tǒng)結(jié)構(gòu)示意圖;
[0041]圖3腳本定時(shí)驅(qū)動(dòng)流程圖;
[0042]圖4多腳本按時(shí)序執(zhí)行流程圖;
[0043]圖5多計(jì)算串行/并行執(zhí)行流程圖;
[0044]圖6計(jì)算線程執(zhí)行流程圖;
[0045]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。

【具體實(shí)施方式】
[0046]顯然,本領(lǐng)域技術(shù)人員基于本發(fā)明的宗旨所做的許多修改和變化屬于本發(fā)明的保護(hù)范圍。
[0047]實(shí)施例1:如圖1、圖2、圖3、圖4、圖5、圖6所示,
[0048]本系統(tǒng)設(shè)計(jì)的腳本主要用以描述三部分內(nèi)容:執(zhí)行條件信息、依賴資源信息以及處理邏輯信息。
[0049]執(zhí)行條件信息用以設(shè)置定時(shí)觸發(fā)條件和優(yōu)先級(jí)。定時(shí)觸發(fā)條件即執(zhí)行時(shí)間,至少包括時(shí)刻(如“00:15”,表示O點(diǎn)15分)。僅設(shè)置時(shí)刻信息的腳本執(zhí)行一次即失效,為了實(shí)現(xiàn)多次或周期執(zhí)行,支持設(shè)置執(zhí)行日期,可以指定為幾個(gè)或連續(xù)一段日期(如“2013/1/15 ;2013/1/20-2013/1/29”,表示2013年I月15日以及2013年I月20日至29日),或者指定起始日期、執(zhí)行周期和終止日期。起始日期(如“2013/1/1”)是腳本開(kāi)始生效的日期,是唯一的,不設(shè)置則默認(rèn)為腳本提交系統(tǒng)當(dāng)日;執(zhí)行周期為計(jì)算下次周期執(zhí)行時(shí)間的必須信息,可以是一個(gè)時(shí)間間隔量(如“2天”、“I分鐘”,時(shí)間單位支持分鐘、小時(shí)、天、周、月、年),也可以是一個(gè)或幾個(gè)星期日期(如“周一;周三;周五”);終止日期(如“2013/12/31”)是腳本失效的日期,如果不設(shè)置腳本將永遠(yuǎn)有效。優(yōu)先級(jí)(“高/中/低”)為同一時(shí)刻觸發(fā)腳本的執(zhí)行優(yōu)先等級(jí)。
[0050]依賴資源信息聲明腳本執(zhí)行所需的數(shù)據(jù)源類(lèi)型和計(jì)算功能。
[0051]處理邏輯信息用以描述數(shù)據(jù)處理的詳細(xì)流程,包括數(shù)據(jù)源信息和計(jì)算邏輯兩部分內(nèi)容。數(shù)據(jù)源信息描述讀取數(shù)據(jù)的源數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名、字段列表以及檢索條件,以及寫(xiě)入數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名,寫(xiě)入字段列表以及寫(xiě)入模式(更新/插入)。計(jì)算邏輯描述所使用的計(jì)算功能、計(jì)算的輸入字段以及計(jì)算的輸出字段,可以使用多種計(jì)算。
[0052]腳本應(yīng)遵循嚴(yán)格的語(yǔ)法,否則不合法。腳本還應(yīng)滿足一些限制條件,比如:至少應(yīng)包括依賴資源信息和處理邏輯信息;處理邏輯中使用的所有數(shù)據(jù)源類(lèi)型和計(jì)算功能應(yīng)通過(guò)依賴資源進(jìn)行聲明;不可缺少數(shù)據(jù)源信息;處理邏輯中計(jì)算功能的輸入應(yīng)完整,輸出字段須為計(jì)算功能說(shuō)支持;作為輸入的字段必須是前置流程中讀入或者輸出的字段,等等。否貝U,腳本不合法。
[0053]多個(gè)合法腳本可以進(jìn)行組合,用以描述彼此間的關(guān)聯(lián)關(guān)系,先后順序表示其執(zhí)行時(shí)序。
[0054]腳本執(zhí)行系統(tǒng)
[0055]腳本執(zhí)行系統(tǒng)可分為六個(gè)主要模塊,即功能庫(kù)模塊、解析校驗(yàn)?zāi)K、管理模塊、弓丨擎模塊、開(kāi)發(fā)客戶端和工程客戶端,如圖2所示。
[0056]功能庫(kù)模塊,用于提供所有數(shù)據(jù)處理所需的底層功能,包括數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算功能,支持計(jì)算功能的動(dòng)態(tài)擴(kuò)展。
[0057]解析校驗(yàn)?zāi)K,用于提供腳本的校驗(yàn)和解析功能,可以對(duì)腳本的合法性進(jìn)行校驗(yàn),并可以將腳本解析成為程序的執(zhí)行流程邏輯。
[0058]管理模塊,用于提供定時(shí)、腳本存儲(chǔ)和優(yōu)化分析功能。定時(shí)功能用于根據(jù)腳本的執(zhí)行條件信息來(lái)計(jì)算、維護(hù)腳本下次執(zhí)行的時(shí)序隊(duì)列,并按時(shí)驅(qū)動(dòng)腳本執(zhí)行。腳本存儲(chǔ)功能用于在內(nèi)存和本地文件中對(duì)腳本進(jìn)行同步存儲(chǔ),并自動(dòng)清除失效腳本。優(yōu)化分析模塊用于對(duì)處理邏輯可以合并優(yōu)化的腳本進(jìn)行識(shí)別。
[0059]引擎模塊,用于根據(jù)解析出來(lái)的執(zhí)行流程邏輯實(shí)際運(yùn)行處理程序,并提供多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行執(zhí)行功能。
[0060]開(kāi)發(fā)客戶端,用于向開(kāi)發(fā)人員提供集成了校驗(yàn)功能的腳本配置界面,可將編輯完的腳本推送給工程人員進(jìn)行部署,還可向功能庫(kù)上傳新的計(jì)算功能或更新、刪除已有計(jì)算功能。
[0061]工程客戶端,用于向工程人員提供集成了校驗(yàn)功能的定時(shí)配置界面,可向服務(wù)端管理模塊上傳新的腳本或查詢、修改、刪除、驅(qū)動(dòng)已有腳本,還可對(duì)正在執(zhí)行的腳本進(jìn)行查詢、掛起、接續(xù)、停止等操作。
[0062]一個(gè)腳本從開(kāi)發(fā)到執(zhí)行的通常流程是:
[0063]第一步,開(kāi)發(fā)人員按照引擎接入規(guī)范完成新的計(jì)算功能的開(kāi)發(fā),并通過(guò)開(kāi)發(fā)客戶端將其成功上傳至服務(wù)端功能庫(kù)模塊。
[0064]第二步,開(kāi)發(fā)人員通過(guò)開(kāi)發(fā)客戶端,依照數(shù)據(jù)處理邏輯編制腳本,并推送給工程人員。
[0065]第三步,工程人員通過(guò)工程客戶端對(duì)新到腳本進(jìn)行審核,并和服務(wù)端管理模塊進(jìn)行交互,對(duì)經(jīng)靜態(tài)優(yōu)化分析后可以合并的腳本進(jìn)行整合,并根據(jù)需要加入執(zhí)行條件信息,上傳至服務(wù)端管理模塊。
[0066]第四步,管理模塊對(duì)新增腳本進(jìn)行存儲(chǔ),并對(duì)執(zhí)行條件進(jìn)行解析,計(jì)算出下次執(zhí)行時(shí)間,插入到時(shí)序隊(duì)列中。
[0067]第五步,當(dāng)服務(wù)端時(shí)間到達(dá)腳本執(zhí)行時(shí)間時(shí),管理模塊向引擎模塊發(fā)送驅(qū)動(dòng)命令,并再次計(jì)算出下次執(zhí)行時(shí)間,重新插入到時(shí)序隊(duì)列中。
[0068]第六步,引擎模塊收到驅(qū)動(dòng)命令后,對(duì)腳本進(jìn)行實(shí)時(shí)解析,按照解析出來(lái)的執(zhí)行流程邏輯,選擇合適的串行/并行模式,調(diào)用功能庫(kù),運(yùn)行程序。
[0069]第七步,重復(fù)第五步和第六步,直至腳本失效。
[0070]在實(shí)施過(guò)程中,有以下主要步驟:首先對(duì)腳本語(yǔ)法進(jìn)行形式化定義,將產(chǎn)生式用標(biāo)準(zhǔn)巴科斯范式(BNF)進(jìn)行描述。然后針對(duì)定義好的腳本語(yǔ)法,設(shè)計(jì)一種基于遞歸下降法的語(yǔ)法分析器,將腳本解析成抽象語(yǔ)法樹(shù)(AST)。再而接入功能庫(kù),結(jié)合限制條件實(shí)現(xiàn)對(duì)抽象語(yǔ)法樹(shù)進(jìn)行合法性校驗(yàn),并對(duì)數(shù)據(jù)源部分結(jié)構(gòu)相同的語(yǔ)法樹(shù)進(jìn)行優(yōu)化分析。最后構(gòu)造定時(shí)器和引擎運(yùn)行環(huán)境,定時(shí)驅(qū)動(dòng)腳本,遍歷抽象語(yǔ)法樹(shù),生成執(zhí)行流程邏輯,調(diào)用功能庫(kù),運(yùn)行程序。
[0071]實(shí)施過(guò)程中,針對(duì)功能庫(kù)動(dòng)態(tài)擴(kuò)展、腳本定時(shí)驅(qū)動(dòng)、多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行動(dòng)態(tài)優(yōu)化等關(guān)鍵功能,實(shí)施方案如下:
[0072]功能庫(kù)動(dòng)態(tài)擴(kuò)展
[0073]為實(shí)現(xiàn)腳本動(dòng)態(tài)解釋執(zhí)行,引擎采用了動(dòng)態(tài)鏈接庫(kù)技術(shù),并定義了特定的接入規(guī)范。所有要接入引擎的計(jì)算功能,需實(shí)現(xiàn)特定的接口,包括處理邏輯接口、校驗(yàn)接口以及功能說(shuō)明接口等等,并封裝成為動(dòng)態(tài)鏈接庫(kù)。在確保計(jì)算功能程序正確的前提下,如果引擎能夠成功加載動(dòng)態(tài)鏈接庫(kù)并完成接口映射,則計(jì)算功能可動(dòng)態(tài)加入功能庫(kù)。
[0074]腳本定時(shí)驅(qū)動(dòng)
[0075]腳本定時(shí)驅(qū)動(dòng)依賴定時(shí)觸發(fā)條件的解析,以及定時(shí)器。
[0076]腳本的下次執(zhí)行時(shí)間格式為“yy/mm/dd hh:mm”,即某年某月某日某時(shí)某分,其計(jì)算方法為:
[0077]I)確定計(jì)算基準(zhǔn)時(shí)間,優(yōu)先取腳本最近一次的執(zhí)行時(shí)間。如果沒(méi)有該時(shí)間,則先根據(jù)腳本時(shí)刻確定基準(zhǔn)的時(shí)刻,然后根據(jù)腳本的執(zhí)行日期中最近的未來(lái)日期或起始日期確定基準(zhǔn)日期,其中,如果執(zhí)行日期均已過(guò)期,則腳本已失效,返回;如果沒(méi)有以上日期,則取腳本提交系統(tǒng)當(dāng)日;
[0078]2)如果腳本僅設(shè)置執(zhí)行日期,則下次執(zhí)行時(shí)間即為基準(zhǔn)時(shí)間,返回結(jié)果;
[0079]3)如果腳本設(shè)置了執(zhí)行周期,則根據(jù)具體的周期條件進(jìn)行計(jì)算。如果設(shè)置的是時(shí)間間隔量,則用基準(zhǔn)時(shí)間累加周期(以1900/1/1為零點(diǎn),換算成分),直至得到最近的未來(lái)時(shí)間;如果設(shè)置的是星期日期,則根據(jù)基姆拉爾森公式計(jì)算最近的未來(lái)日期;
[0080]4)如果有終止日期,將3)得到的結(jié)果日期與終止日期進(jìn)行比對(duì),如果未到期,返回結(jié)果,否則失效返回;沒(méi)有終止日期,直接返回結(jié)果。
[0081]定時(shí)器基于時(shí)鐘實(shí)現(xiàn),每一秒鐘對(duì)時(shí)序隊(duì)列最靠前的系列腳本進(jìn)行掃描,如果到時(shí),則驅(qū)動(dòng)腳本執(zhí)行。
[0082]腳本定時(shí)驅(qū)動(dòng)的流程如圖3所示。
[0083]首先,新的定時(shí)腳本上傳之后,將計(jì)算其下次執(zhí)行時(shí)間。如果無(wú)效,則刪除該腳本;如果有效,則更新當(dāng)前的時(shí)序隊(duì)列。
[0084]然后,定時(shí)器定期對(duì)時(shí)序隊(duì)列進(jìn)行掃描判斷。如果未到時(shí),則循環(huán)等待下次掃描判斷;如果到時(shí),則驅(qū)動(dòng)腳本執(zhí)行。
[0085]最后,驅(qū)動(dòng)腳本執(zhí)行后將重新計(jì)算其下次執(zhí)行時(shí)間,重復(fù)前述過(guò)程。
[0086]多腳本按時(shí)序執(zhí)行
[0087]多個(gè)關(guān)聯(lián)腳本組合在一起,其順序表示各腳本執(zhí)行的先后時(shí)序。收到驅(qū)動(dòng)后將先后啟動(dòng)不同線程串行執(zhí)行各子腳本,其流程如圖4所示。
[0088]第一步,解析腳本,并從功能庫(kù)中調(diào)用處理過(guò)程所需要的所有資源。
[0089]第二步,開(kāi)始執(zhí)行腳本,按照讀取數(shù)據(jù)、計(jì)算處理、寫(xiě)入數(shù)據(jù)的流程執(zhí)行,并在結(jié)束時(shí)清除本地的一些緩存文件。
[0090]第三步,判斷是否還有后繼腳本。如果有,重復(fù)第二步;如果沒(méi)有,則執(zhí)行完畢。
[0091]多計(jì)算串行/并行執(zhí)行
[0092]引擎在執(zhí)行腳本時(shí)采用了多線程技術(shù),用不同的線程來(lái)執(zhí)行不同的計(jì)算。如果不同計(jì)算之間不存在邏輯的依賴關(guān)系,則可以使用并行模式,來(lái)對(duì)執(zhí)行速度進(jìn)行優(yōu)化。引擎支持串行/并行共同存在的執(zhí)行模式。特別地,需要對(duì)所有數(shù)據(jù)加上唯一標(biāo)識(shí),以在各計(jì)算線程結(jié)束后對(duì)結(jié)果進(jìn)行整合。
[0093]串行/并行計(jì)算的執(zhí)行流程如圖5和圖6所示。
[0094]第一步,程序在啟動(dòng)時(shí)會(huì)判斷腳本的解析結(jié)果,是否存在邏輯無(wú)關(guān)的計(jì)算。如果存在邏輯無(wú)關(guān)的計(jì)算,將啟動(dòng)多個(gè)線程進(jìn)行并行計(jì)算;如果存在邏輯相關(guān)的計(jì)算,將由一個(gè)線程來(lái)進(jìn)行串行計(jì)算。
[0095]第二步,單個(gè)計(jì)算線程啟動(dòng)后,將調(diào)用計(jì)算功能對(duì)數(shù)據(jù)進(jìn)行計(jì)算處理,如果有后繼計(jì)算則將進(jìn)入下一個(gè)計(jì)算處理過(guò)程,直至計(jì)算結(jié)束。
[0096]第三步,待各計(jì)算線程結(jié)束后,如果啟動(dòng)過(guò)并行模式,還將對(duì)多線程的計(jì)算結(jié)果進(jìn)行整合,最后結(jié)束。
[0097]如上所述,對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)地說(shuō)明,但是只要實(shí)質(zhì)上沒(méi)有脫離本發(fā)明的發(fā)明點(diǎn)及效果可以有很多的變形,這對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的。因此,這樣的變形例也全部包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行系統(tǒng),其特征在于分為六個(gè)主要模塊,即功能庫(kù)模塊、解析校驗(yàn)?zāi)K、管理模塊、引擎模塊、開(kāi)發(fā)客戶端和工程客戶端; 功能庫(kù)模塊,用于提供所有數(shù)據(jù)處理所需的底層功能,包括數(shù)據(jù)讀取、數(shù)據(jù)寫(xiě)入和計(jì)算功能,支持計(jì)算功能的動(dòng)態(tài)擴(kuò)展; 解析校驗(yàn)?zāi)K,用于提供腳本的校驗(yàn)和解析功能,可以對(duì)腳本的合法性進(jìn)行校驗(yàn),并可以將腳本解析成為程序的執(zhí)行流程邏輯; 管理模塊,用于提供定時(shí)、腳本存儲(chǔ)和優(yōu)化分析功能;定時(shí)功能用于根據(jù)腳本的執(zhí)行條件信息來(lái)計(jì)算、維護(hù)腳本下次執(zhí)行的時(shí)序隊(duì)列,并按時(shí)驅(qū)動(dòng)腳本執(zhí)行;腳本存儲(chǔ)功能用于在內(nèi)存和本地文件中對(duì)腳本進(jìn)行同步存儲(chǔ),并自動(dòng)清除失效腳本;優(yōu)化分析模塊用于對(duì)處理邏輯可以合并優(yōu)化的腳本進(jìn)行識(shí)別; 引擎模塊,用于根據(jù)解析出來(lái)的執(zhí)行流程邏輯實(shí)際運(yùn)行處理程序,并提供多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行執(zhí)行功能; 開(kāi)發(fā)客戶端,用于向開(kāi)發(fā)人員提供集成了校驗(yàn)功能的腳本配置界面,可將編輯完的腳本推送給工程人員進(jìn)行部署,還可向功能庫(kù)上傳新的計(jì)算功能或更新、刪除已有計(jì)算功倉(cāng)泛; 工程客戶端,用于向工程人員提供集成了校驗(yàn)功能的定時(shí)配置界面,可向服務(wù)端管理模塊上傳新的腳本或查詢、修改、刪除、驅(qū)動(dòng)已有腳本,還可對(duì)正在執(zhí)行的腳本進(jìn)行查詢、掛起、接續(xù)、停止等操作。
2.—種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行方法,其特征在于含有以下步驟; 執(zhí)行條件信息步驟、依賴資源信息步驟以及處理邏輯信息步驟; 執(zhí)行條件信息步驟;用以設(shè)置定時(shí)觸發(fā)條件和優(yōu)先級(jí);定時(shí)觸發(fā)條件即執(zhí)行時(shí)間,至少包括時(shí)刻(如“00:15”,表示O點(diǎn)15分);僅設(shè)置時(shí)刻信息的腳本執(zhí)行一次即失效,為了實(shí)現(xiàn)多次或周期執(zhí)行,支持設(shè)置執(zhí)行日期,可以指定為幾個(gè)或連續(xù)一段日期(如“2013/1/15 ;2013/1/20-2013/1/29”,表示2013年I月15日以及2013年I月20日至29日),或者指定起始日期、執(zhí)行周期和終止日期;起始日期(如“2013/1/1”)是腳本開(kāi)始生效的日期,是唯一的,不設(shè)置則默認(rèn)為腳本提交系統(tǒng)當(dāng)日;執(zhí)行周期為計(jì)算下次周期執(zhí)行時(shí)間的必須信息,可以是一個(gè)時(shí)間間隔量(如“2天”、“I分鐘”,時(shí)間單位支持分鐘、小時(shí)、天、周、月、年),也可以是一個(gè)或幾個(gè)星期日期(如“周一;周三;周五”);終止日期(如“2013/12/31”)是腳本失效的日期,如果不設(shè)置腳本將永遠(yuǎn)有效;優(yōu)先級(jí)(“高/中/低”)為同一時(shí)刻觸發(fā)腳本的執(zhí)行優(yōu)先等級(jí); 依賴資源信息步驟;聲明腳本執(zhí)行所需的數(shù)據(jù)源類(lèi)型和計(jì)算功能; 處理邏輯信息步驟;用以描述數(shù)據(jù)處理的詳細(xì)流程,包括數(shù)據(jù)源信息和計(jì)算邏輯兩部分內(nèi)容;數(shù)據(jù)源信息描述讀取數(shù)據(jù)的源數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名、字段列表以及檢索條件,以及寫(xiě)入數(shù)據(jù)的目標(biāo)數(shù)據(jù)庫(kù)類(lèi)型、地址、端口、庫(kù)表名,寫(xiě)入字段列表以及寫(xiě)入模式(更新/插入);計(jì)算邏輯描述所使用的計(jì)算功能、計(jì)算的輸入字段以及計(jì)算的輸出字段,可以使用多種計(jì)算。
3.根據(jù)權(quán)利要求1所述的一種SCADA系統(tǒng)定時(shí)數(shù)據(jù)處理腳本執(zhí)行方法,其特征在于含有以下步驟; 首先對(duì)腳本語(yǔ)法進(jìn)行形式化定義,將產(chǎn)生式用標(biāo)準(zhǔn)巴科斯范式(BNF)進(jìn)行描述;然后針對(duì)定義好的腳本語(yǔ)法,將腳本解析成抽象語(yǔ)法樹(shù)(AST);再而接入功能庫(kù),結(jié)合限制條件實(shí)現(xiàn)對(duì)抽象語(yǔ)法樹(shù)進(jìn)行合法性校驗(yàn),并對(duì)數(shù)據(jù)源部分結(jié)構(gòu)相同的語(yǔ)法樹(shù)進(jìn)行優(yōu)化分析;最后構(gòu)造定時(shí)器和引擎運(yùn)行環(huán)境,定時(shí)驅(qū)動(dòng)腳本,遍歷抽象語(yǔ)法樹(shù),生成執(zhí)行流程邏輯,調(diào)用功能庫(kù),運(yùn)行程序; 針對(duì)功能庫(kù)動(dòng)態(tài)擴(kuò)展、腳本定時(shí)驅(qū)動(dòng)、多腳本按時(shí)序執(zhí)行、多計(jì)算串行/并行動(dòng)態(tài)優(yōu)化等關(guān)鍵功能,實(shí)施步驟如下: 功能庫(kù)動(dòng)態(tài)擴(kuò)展步驟; 為實(shí)現(xiàn)腳本動(dòng)態(tài)解釋執(zhí)行,引擎采用了動(dòng)態(tài)鏈接庫(kù)技術(shù),并定義了特定的接入規(guī)范;所有要接入引擎的計(jì)算功能,需實(shí)現(xiàn)特定的接口,包括處理邏輯接口、校驗(yàn)接口以及功能說(shuō)明接口,并封裝成為動(dòng)態(tài)鏈接庫(kù);在確保計(jì)算功能程序正確的前提下,如果引擎能夠成功加載動(dòng)態(tài)鏈接庫(kù)并完成接口映射,則計(jì)算功能可動(dòng)態(tài)加入功能庫(kù); 腳本定時(shí)驅(qū)動(dòng)步驟; 腳本定時(shí)驅(qū)動(dòng)依賴定時(shí)觸發(fā)條件的解析,以及定時(shí)器; 腳本的下次執(zhí)行時(shí)間格式為“yy/mm/dd hh:mm”,即某年某月某日某時(shí)某分,其計(jì)算步驟為: 1)確定計(jì)算基準(zhǔn)時(shí)間,優(yōu)先取腳本最近一次的執(zhí)行時(shí)間;如果沒(méi)有該時(shí)間,則先根據(jù)腳本時(shí)刻確定基準(zhǔn)的時(shí)刻,然后根據(jù)腳本的執(zhí)行日期中最近的未來(lái)日期或起始日期確定基準(zhǔn)日期,其中,如果執(zhí)行日期均已過(guò)期,則腳本已失效,返回;如果沒(méi)有以上日期,則取腳本提交系統(tǒng)當(dāng)日; 2)如果腳本僅設(shè)置執(zhí)行日期,則下次執(zhí)行時(shí)間即為基準(zhǔn)時(shí)間,返回結(jié)果; 3)如果腳本設(shè)置了執(zhí)行周期,則根據(jù)具體的周期條件進(jìn)行計(jì)算;如果設(shè)置的是時(shí)間間隔量,則用基準(zhǔn)時(shí)間累加周期(以1900/1/1為零點(diǎn),換算成分),直至得到最近的未來(lái)時(shí)間;如果設(shè)置的是星期日期,則根據(jù)基姆拉爾森公式計(jì)算最近的未來(lái)日期; 4)如果有終止日期,將3)得到的結(jié)果日期與終止日期進(jìn)行比對(duì),如果未到期,返回結(jié)果,否則失效返回;沒(méi)有終止日期,直接返回結(jié)果; 定時(shí)器基于時(shí)鐘實(shí)現(xiàn),每一秒鐘對(duì)時(shí)序隊(duì)列最靠前的系列腳本進(jìn)行掃描,如果到時(shí),則驅(qū)動(dòng)腳本執(zhí)行; 腳本定時(shí)驅(qū)動(dòng)的步驟; 首先,新的定時(shí)腳本上傳之后,將計(jì)算其下次執(zhí)行時(shí)間;如果無(wú)效,則刪除該腳本;如果有效,則更新當(dāng)前的時(shí)序隊(duì)列; 然后,定時(shí)器定期對(duì)時(shí)序隊(duì)列進(jìn)行掃描判斷;如果未到時(shí),則循環(huán)等待下次掃描判斷;如果到時(shí),則驅(qū)動(dòng)腳本執(zhí)行; 最后,驅(qū)動(dòng)腳本執(zhí)行后將重新計(jì)算其下次執(zhí)行時(shí)間,重復(fù)前述過(guò)程; 多腳本按時(shí)序執(zhí)行步驟; 多個(gè)關(guān)聯(lián)腳本組合在一起,其順序表示各腳本執(zhí)行的先后時(shí)序;收到驅(qū)動(dòng)后將先后啟動(dòng)不同線程串行執(zhí)行各子腳本,其流程步驟; 第一步,解析腳本,并從功能庫(kù)中調(diào)用處理過(guò)程所需要的所有資源; 第二步,開(kāi)始執(zhí)行腳本,按照讀取數(shù)據(jù)、計(jì)算處理、寫(xiě)入數(shù)據(jù)的流程執(zhí)行,并在結(jié)束時(shí)清除本地的一些緩存文件; 第三步,判斷是否還有后繼腳本;如果有,重復(fù)第二步;如果沒(méi)有,則執(zhí)行完畢; 多計(jì)算串行/并行執(zhí)行步驟; 引擎在執(zhí)行腳本時(shí)采用了多線程技術(shù),用不同的線程來(lái)執(zhí)行不同的計(jì)算;如果不同計(jì)算之間不存在邏輯的依賴關(guān)系,則可以使用并行模式,來(lái)對(duì)執(zhí)行速度進(jìn)行優(yōu)化;引擎支持串行/并行共同存在的執(zhí)行模式;特別地,需要對(duì)所有數(shù)據(jù)加上唯一標(biāo)識(shí),以在各計(jì)算線程結(jié)束后對(duì)結(jié)果進(jìn)行整合; 串行/并行計(jì)算的執(zhí)行步驟; 第一步,程序在啟動(dòng)時(shí)會(huì)判斷腳本的解析結(jié)果,是否存在邏輯無(wú)關(guān)的計(jì)算;如果存在邏輯無(wú)關(guān)的計(jì)算,將啟動(dòng)多個(gè)線程進(jìn)行并行計(jì)算;如果存在邏輯相關(guān)的計(jì)算,將由一個(gè)線程來(lái)進(jìn)行串行計(jì)算; 第二步,單個(gè)計(jì)算線程啟動(dòng)后,將調(diào)用計(jì)算功能對(duì)數(shù)據(jù)進(jìn)行計(jì)算處理,如果有后繼計(jì)算則將進(jìn)入下一個(gè)計(jì)算處理過(guò)程,直至計(jì)算結(jié)束; 第三步,待各計(jì)算線程結(jié)束后,如果啟動(dòng)過(guò)并行模式,還將對(duì)多線程的計(jì)算結(jié)果進(jìn)行整合,最后結(jié)束。
【文檔編號(hào)】G06F9/44GK104423953SQ201310397872
【公開(kāi)日】2015年3月18日 申請(qǐng)日期:2013年9月4日 優(yōu)先權(quán)日:2013年9月4日
【發(fā)明者】張偉, 祁國(guó)成, 黃河, 閆峰, 陳鵬 申請(qǐng)人:中國(guó)石油天然氣股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
盐亭县| 孟连| 延边| 嘉义市| 商河县| 石棉县| 长寿区| 同仁县| 灵寿县| 苏尼特右旗| 尉氏县| 霸州市| 长沙县| 元江| 乐都县| 辽宁省| 崇仁县| 南城县| 和龙市| 若尔盖县| 法库县| 鸡西市| 青河县| 遂溪县| 太湖县| 额尔古纳市| 鄂尔多斯市| 车致| 民权县| 玉田县| 商河县| 武陟县| 凤凰县| 瓮安县| 隆子县| 深圳市| 台南市| 新密市| 吕梁市| 揭西县| 阿巴嘎旗|