摘要:近年來市場上出現(xiàn)了很多專業(yè)的電力工程造價(jià)編制軟件,針對(duì)不同的業(yè)務(wù)需求,如何使得復(fù)雜的計(jì)算邏輯易于被記錄和維護(hù),如何使業(yè)務(wù)人員可以直觀驗(yàn)證數(shù)據(jù)的正確性,如何解決工程造價(jià)計(jì)算效率不高等問題。文章通過描述BCL計(jì)算規(guī)則的原理及技術(shù)實(shí)現(xiàn)方案,論述了BCL在國網(wǎng)華東分部技改檢修工程預(yù)算編制中的應(yīng)用情況。
關(guān)鍵詞:預(yù)算編制;技術(shù)經(jīng)濟(jì);BCL;技改檢修
1BCL簡介
BCL全稱為“BoowayComputingLanguage”,它是根據(jù)工程造價(jià)的特點(diǎn)而設(shè)計(jì)的、獨(dú)立于不同產(chǎn)品、項(xiàng)目,具有開發(fā)語言無關(guān)性、平臺(tái)無關(guān)性的一種解析型腳本程序語言及其編譯執(zhí)行方法。
2BCL實(shí)現(xiàn)原理
BCL能夠在滿足復(fù)雜工程造價(jià)計(jì)算需求的同時(shí),有效記錄并還原工程造價(jià)計(jì)算過程,其實(shí)現(xiàn)過程包括以下內(nèi)容:(1)設(shè)計(jì)描述具體計(jì)算算法規(guī)則的代數(shù)式及擴(kuò)展運(yùn)算表達(dá)式結(jié)構(gòu)(EL表達(dá)式)。所述EL(ExpressionLanguage)表達(dá)式是對(duì)計(jì)算算法規(guī)則的一個(gè)完整描述,以${和}作為起始和結(jié)束標(biāo)記。它在沿襲傳統(tǒng)代數(shù)表達(dá)式運(yùn)算特點(diǎn)的同時(shí),支持用于包含多種表達(dá)式選擇的條件選擇運(yùn)算和完成具體計(jì)算規(guī)則的函數(shù)運(yùn)算在內(nèi)的其它高級(jí)運(yùn)算功能。與傳統(tǒng)代數(shù)運(yùn)算不同,所述EL表達(dá)式包含種類多元化的操作數(shù),支持?jǐn)?shù)值、字符串和變量等類型。其中,變量類型操作數(shù)是所述EL表達(dá)式支持動(dòng)態(tài)數(shù)據(jù)掛接的典型體現(xiàn),其值可以為外部對(duì)象的引用,也可以為執(zhí)行階段設(shè)定的具體數(shù)據(jù)值。所述條件選擇表達(dá)式以#{和}作為起始和結(jié)束標(biāo)記,其內(nèi)部可包含多個(gè)條件分支和至多一個(gè)缺省條件分支,每個(gè)分支對(duì)應(yīng)一個(gè)EL表達(dá)式。整個(gè)條件選擇表達(dá)式的取值為當(dāng)前被激活條件分支對(duì)應(yīng)的EL表達(dá)式計(jì)算結(jié)果。所述函數(shù)運(yùn)算定義了具體的計(jì)算規(guī)則,以滿足工程造價(jià)特定計(jì)算需求。其語法結(jié)構(gòu)與C語言兼容,并支持BCL的擴(kuò)展數(shù)據(jù)類型。除此之外,所述函數(shù)的調(diào)用還支持把EL表達(dá)式作為參數(shù)進(jìn)行輸入,能夠?qū)崿F(xiàn)指定工程數(shù)據(jù)范圍與EL表達(dá)式的動(dòng)態(tài)綁定,進(jìn)而減少表達(dá)式代碼冗余。如:sum(source,“工程量”,?工程量.數(shù)量*工程量.定額費(fèi))(2)分析工程造價(jià)計(jì)算需求,確定除EL表達(dá)式以外的其它計(jì)算邏輯單元;通過對(duì)造價(jià)工程數(shù)據(jù)及計(jì)算算法、過程的總結(jié)歸納,得出任何工程的工程造價(jià)復(fù)雜計(jì)算算法都可分解為幾種最小的原子計(jì)算邏輯單元,主要為:EL表達(dá)式、宏表(macrotable)、變量(variable)、參數(shù)(parameter)和數(shù)據(jù)源(datasource)等。其中,所述宏表能完整的表示一個(gè)具有遞歸、多字段、多記錄、有匯總關(guān)系的計(jì)算規(guī)則。所述數(shù)據(jù)源用于描述一個(gè)工程的數(shù)據(jù)及其數(shù)據(jù)范圍,它是BCL語言與工程數(shù)據(jù)的粘合劑,實(shí)現(xiàn)真實(shí)數(shù)據(jù)的傳遞。所述變量是包含數(shù)據(jù)源、數(shù)據(jù)過濾算法以及費(fèi)用計(jì)算算法規(guī)則在內(nèi)的具體費(fèi)用計(jì)算結(jié)構(gòu)。(3)BCL語言的編譯執(zhí)行裝置,包括:BCL編譯器裝置、BCL腳本解析裝置和BCL執(zhí)行器裝置。所述BCL編譯器裝置用于對(duì)外界輸入的待計(jì)算BCL元素進(jìn)行編譯處理,生成相應(yīng)BCL對(duì)象。其中,所述BCL元素為最小待計(jì)算單元,內(nèi)部包含描述計(jì)算算法規(guī)則的EL表達(dá)式集合。根據(jù)BCL元素類型的不同,采取不同策略,分析并獲取相應(yīng)待計(jì)算EL表達(dá)式。利用BCL語法分析器,對(duì)所述EL表達(dá)式進(jìn)行詞法和語法分析,生成被稱之為BCL語法樹的內(nèi)存對(duì)象,并關(guān)聯(lián)到相應(yīng)BCL對(duì)象中。與BCL語言體系中的原子計(jì)算邏輯單元相對(duì)應(yīng),BCL元素至少應(yīng)包含BCL包元素、BCL變量元素、BCL宏表元素、BCL記錄元素、BCL字段元素、BCL參數(shù)元素和BCL數(shù)據(jù)源元素這7種。其中BCL包元素作為其它元素的容器存在,不具備值表達(dá)式。而BCL變量元素包含BCL數(shù)據(jù)源元素對(duì)象、過濾表達(dá)式和值表達(dá)式,通過執(zhí)行過濾表達(dá)式,可從數(shù)據(jù)來源中篩選形成符合條件的數(shù)據(jù)范圍,應(yīng)用于其值表達(dá)式的計(jì)算過程當(dāng)中。所述BCL腳本解析裝置包含了BCL腳本文件生成器和腳本解析器,用于實(shí)現(xiàn)BCL對(duì)象集合與BCL腳本文件之間的相互轉(zhuǎn)換,能夠有效記錄或還原指定BCL對(duì)象,避免對(duì)同一計(jì)算需求下的重復(fù)編譯處理,有效減少工程造價(jià)計(jì)算時(shí)間。所述BCL執(zhí)行模塊計(jì)算生成的BCL對(duì)象,根據(jù)BCL對(duì)象類型的不同,按照不同方式,解釋執(zhí)行相應(yīng)BCL語法樹結(jié)構(gòu),將計(jì)算過程數(shù)據(jù)和計(jì)算結(jié)果分別保存在語法樹結(jié)點(diǎn)和BCL對(duì)象當(dāng)中,進(jìn)而獲取計(jì)算結(jié)果數(shù)據(jù),完成執(zhí)行任務(wù)。
3BCL在預(yù)算編制實(shí)例中的運(yùn)用
3.1基于BCL的軟件業(yè)務(wù)算法的配置化系統(tǒng)采用BCL實(shí)現(xiàn)軟件計(jì)算規(guī)則、算法與程序分離,從而實(shí)現(xiàn)支持版本管理的電網(wǎng)工程費(fèi)用計(jì)算、便捷維護(hù)產(chǎn)品計(jì)算業(yè)務(wù)等特性,同時(shí)基于配置化能夠良好支持系統(tǒng)實(shí)現(xiàn)不同計(jì)算業(yè)務(wù)的擴(kuò)展。過去的工程費(fèi)用計(jì)算,是將軟件業(yè)務(wù)算法編輯在代碼中,形成一個(gè)業(yè)務(wù)算法模塊,一旦業(yè)務(wù)規(guī)則修改,代碼的維護(hù)成本會(huì)很大。通過開發(fā)專用于造價(jià)計(jì)算的腳本語言BCL和計(jì)算引擎,可將軟件的業(yè)務(wù)算法形成腳本文件,從而將具有業(yè)務(wù)特性的算法和規(guī)則獨(dú)立于軟件功能,使軟件功能與業(yè)務(wù)計(jì)算完全脫離耦合,利于業(yè)務(wù)算法的擴(kuò)展,提高了軟件模塊的可維護(hù)性。3.2基于并行節(jié)點(diǎn)的工程費(fèi)用實(shí)時(shí)計(jì)算以往編制模式是非實(shí)時(shí)的,工程編制完后,需要生成報(bào)表才能預(yù)覽費(fèi)用結(jié)果,對(duì)用戶編制過程中核對(duì)費(fèi)用造成了極大不便,因此,根據(jù)軟件業(yè)務(wù)特性和費(fèi)用的組成結(jié)構(gòu),為了給用戶提供更好的使用體驗(yàn),通過應(yīng)用BCL算法規(guī)則可以實(shí)現(xiàn)工程數(shù)據(jù)修改后就立即計(jì)算出工程費(fèi)用的機(jī)制,達(dá)到所見即所得的的編制效果,同時(shí)軟件采用增量計(jì)算和保存的技術(shù),提高了工程費(fèi)用計(jì)算的效率,也增強(qiáng)了數(shù)據(jù)保存的性能。
4結(jié)束語
綜上所述,BCL在電網(wǎng)技改檢修工程預(yù)算編制中得到了良好的應(yīng)用,使得電網(wǎng)技改檢修工程造價(jià)更加系統(tǒng)化、規(guī)范化、高效化
參考文獻(xiàn)
[1]畢美娜.面向VHDL算法級(jí)行為描述的程序語言編譯方法研究[D].哈爾濱工程大學(xué),2008.
[2]李芳,王建華,劉志峰.機(jī)械加工描述語言的編譯研究[J].現(xiàn)代制造工程,2005.
[3]黃玉霞,韓其瑜.一種面向問題的描述語言及其解釋程序的自動(dòng)生成[J].數(shù)值計(jì)算與計(jì)算機(jī)應(yīng)用,1993,14(01):58-70.