本發(fā)明涉及一種基于工程造價(jià)計(jì)算機(jī)描述語言BCL的數(shù)據(jù)分析裝置及生成方法,具體實(shí)現(xiàn)工程造價(jià)數(shù)據(jù)計(jì)算過程可視化并可追蹤數(shù)據(jù)關(guān)系進(jìn)行數(shù)據(jù)分析,屬于工程造價(jià)計(jì)算領(lǐng)域。
背景技術(shù):
隨著信息技術(shù)不斷發(fā)展及企業(yè)管理的提升,工程造價(jià)計(jì)算日益復(fù)雜化,且計(jì)算深度越發(fā)精細(xì)化;各類產(chǎn)品軟件幫助解決復(fù)雜的業(yè)務(wù)內(nèi)容,封裝繁瑣的計(jì)算規(guī)則,造價(jià)人員僅需填寫簡單內(nèi)容即可完成工程編制。軟件產(chǎn)品的出現(xiàn),極大的簡化了工作,但其封裝性和過程不可視性,限制了造價(jià)人員能力水平的成長,造價(jià)人員對(duì)編制工程數(shù)據(jù)正確與否的可控性越來越低,容易產(chǎn)生數(shù)據(jù)錯(cuò)誤并被忽略,不利于數(shù)據(jù)核算工作的進(jìn)行。
可視化的計(jì)算過程能夠幫助造價(jià)人員了解數(shù)據(jù)來源,分析數(shù)據(jù)準(zhǔn)確性及合理性,幫助進(jìn)行數(shù)據(jù)查錯(cuò)。
以電力工程造價(jià)舉例,各地市造價(jià)類數(shù)據(jù)具有邏輯相似性,數(shù)據(jù)之間存在復(fù)用可能,目前所有數(shù)據(jù)零散存在,將這類數(shù)據(jù)整合,通過數(shù)據(jù)采樣及大數(shù)據(jù)分析,可以幫助提升數(shù)據(jù)正確性及編制效率,實(shí)現(xiàn)數(shù)據(jù)編制的一致性。
數(shù)據(jù)分析模型通過對(duì)費(fèi)用計(jì)算過程的持久化,可供所述數(shù)據(jù)采樣及大數(shù)據(jù)分析。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)不足提供一種基于工程造價(jià)計(jì)算機(jī)描述語言BCL的數(shù)據(jù)分析裝置及生成方法,以實(shí)現(xiàn)工程造價(jià)數(shù)據(jù)計(jì)算過程可視化并可追蹤數(shù)據(jù)關(guān)系進(jìn)行數(shù)據(jù)分析。
本發(fā)明的技術(shù)方案如下:
所述數(shù)據(jù)分析裝置及數(shù)據(jù)生成方法是基于工程造價(jià)計(jì)算描述語言BCL開發(fā),獨(dú)立于不同的產(chǎn)品、項(xiàng)目及數(shù)據(jù)源,具有與開發(fā)語言無關(guān)性和平臺(tái)無關(guān)性。
1.所述工程造價(jià)計(jì)算描述語言BCL,其實(shí)現(xiàn)包括:
(1)設(shè)計(jì)描述具體計(jì)算算法規(guī)則的代數(shù)式及擴(kuò)展運(yùn)算表達(dá)式結(jié)構(gòu),即EL表達(dá)式;所述EL表達(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é)果,如:
#{
->條件1:EL表達(dá)式1;
->條件2:EL表達(dá)式2;
->:EL表達(dá)式3;
}
所述函數(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(數(shù)據(jù)源標(biāo)記,數(shù)據(jù)源別名,EL表達(dá)式);
(2)分析工程造價(jià)計(jì)算需求,確定除EL表達(dá)式以外的其他計(jì)算邏輯單元;
通過對(duì)造價(jià)工程數(shù)據(jù)及計(jì)算算法、過程的總結(jié)歸納,得出任何工程的工程造價(jià)復(fù)雜計(jì)算算法都可分解為最小的原子計(jì)算邏輯單元,即:EL表達(dá)式、宏表、變量、參數(shù)、數(shù)據(jù)源和包。其中,所述宏表能完整的表示一個(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),相較于僅包含具體數(shù)值的參數(shù)而言,變量的計(jì)算有一定的先后次序,更為復(fù)雜,但功能強(qiáng)大。所述包為其他原子計(jì)算邏輯單元的容器,能劃定計(jì)算邏輯單元的作用范圍,屏蔽命名沖突。
(3)分析工程造價(jià)計(jì)算過程,基于工程造價(jià)計(jì)算描述語言BCL擴(kuò)展并確定分析描述語言,具體包括擴(kuò)展EL表達(dá)式、EL表達(dá)式數(shù)據(jù)分析函數(shù)及除EL表達(dá)式以外的數(shù)據(jù)分析邏輯單元;
通過對(duì)BCL表達(dá)式數(shù)據(jù)計(jì)算算法和過程的總結(jié)歸納,在數(shù)據(jù)計(jì)算過程中,可將任意復(fù)雜計(jì)算過程拆分為包含左操作數(shù)、右操作數(shù)以及操作符的單步運(yùn)算集合表述。
所述EL表達(dá)式邏輯結(jié)構(gòu)表述如下:
EL表達(dá)式
->左操作數(shù):EL表達(dá)式
->右操作數(shù):EL表達(dá)式
->運(yùn)算符:EL表達(dá)式
所述EL表達(dá)式邏輯結(jié)構(gòu)中,左操作數(shù)、右操作數(shù)、操作符均使用EL表達(dá)式標(biāo)識(shí),其作用在于支持傳統(tǒng)的四則運(yùn)算類型之外,支持其他形式的數(shù)據(jù)和運(yùn)算符擴(kuò)展。
所述EL表達(dá)式邏輯結(jié)構(gòu)分析可知,任意形式計(jì)算過程可識(shí)別為一系列EL表達(dá)式的語法樹形式;語法樹表示方式能具體表述數(shù)據(jù)計(jì)算的過程和數(shù)據(jù)之間關(guān)系,通過對(duì)數(shù)據(jù)計(jì)算過程和關(guān)系信息記錄,配合BCL數(shù)據(jù)源標(biāo)記,記錄整個(gè)數(shù)據(jù)計(jì)算生命周期的數(shù)據(jù)、關(guān)系以及過程。記錄語法格式如下:
Record(數(shù)據(jù)源標(biāo)記,EL表達(dá)式,結(jié)果值)。
所述語法格式中,“EL表達(dá)式”可替換為Record語法、EL函數(shù)、自定義函數(shù)、宏變量以及常量的表述;支持Record語法的嵌套調(diào)用,其中,所述EL表達(dá)式、變量、參數(shù)與工程造價(jià)計(jì)算語言描述一致。所述數(shù)據(jù)源標(biāo)記用于描述一個(gè)工程的數(shù)據(jù)及其數(shù)據(jù)范圍,它是BCL語言與工程數(shù)據(jù)的粘合劑,實(shí)現(xiàn)真實(shí)數(shù)據(jù)的傳遞。
2.一種基于工程造價(jià)計(jì)算描述語言BCL的數(shù)據(jù)分析裝置,該裝置是基于工程造價(jià)計(jì)算描述語言BCL而實(shí)現(xiàn)的,包括:計(jì)算過程記錄裝置、數(shù)據(jù)關(guān)系建立裝置、記錄信息翻譯裝置以及文件持久化裝置;
所述計(jì)算過程記錄裝置將數(shù)據(jù)計(jì)算的每一次運(yùn)算操作及運(yùn)算結(jié)果進(jìn)行記錄,同時(shí)對(duì)輸出內(nèi)容進(jìn)行簡化和調(diào)優(yōu),初步形成可追溯的數(shù)據(jù)信息。
所述數(shù)據(jù)關(guān)系建立裝置是對(duì)上述過程記錄信息進(jìn)行整理,建立過程與過程、過程與數(shù)據(jù)源,數(shù)據(jù)源與數(shù)據(jù)源之間的數(shù)據(jù)關(guān)系,完善可追溯數(shù)據(jù)信息鏈路,完成數(shù)據(jù)與信息之間的關(guān)系梳理。
所述記錄信息翻譯裝置是將建立關(guān)系后的信息進(jìn)行可視化翻譯,將機(jī)器識(shí)別或代碼識(shí)別信息翻譯為造價(jià)人員可識(shí)別信息,形成可視化數(shù)據(jù)信息。
所述文件持久化裝置是將信息轉(zhuǎn)化為物理文件并記錄到磁盤,完成數(shù)據(jù)持久化操作。文件持久化裝置可在數(shù)據(jù)關(guān)系建立裝置之后或可在記錄信息翻譯裝置之后執(zhí)行,可根據(jù)需要,進(jìn)行使用時(shí)翻譯或記錄時(shí)翻譯的選擇。
3.一種基于工程造價(jià)計(jì)算描述語言BCL的數(shù)據(jù)分析生成方法,是基于工程造價(jià)計(jì)算描述語言BCL而實(shí)現(xiàn)的,其步驟如下:
第一步:編制BCL腳本文件;
依據(jù)工程造價(jià)計(jì)算描述語言BCL編制符合其語法規(guī)則的數(shù)據(jù)計(jì)算過程;
第二步:加載BCL腳本,對(duì)BCL腳本進(jìn)行詞法分析,生成EL表達(dá)式;
(1)依據(jù)工程造價(jià)計(jì)算描述語言BCL腳本解析裝置,對(duì)BCL腳本進(jìn)行詞法、語法的解析;
(2)創(chuàng)建相應(yīng)BCL對(duì)象,并關(guān)聯(lián)經(jīng)語法分析后得到的BCL語法樹;
(3)通過對(duì)生成的BCL對(duì)象進(jìn)行分析,獲取待計(jì)算BCL語法樹對(duì)象;
第三步:解釋執(zhí)行當(dāng)前BCL語法樹,按照后序遍歷的方式處理語法樹中的結(jié)點(diǎn),并且對(duì)第二步中生成的EL表達(dá)式對(duì)象進(jìn)行信息記錄,直至全部BCL語法樹執(zhí)行完畢;
該過程涉及到的處理包括:
(1)若當(dāng)前結(jié)點(diǎn)為傳統(tǒng)代數(shù)運(yùn)算符結(jié)點(diǎn),則分別計(jì)算并獲取左右結(jié)點(diǎn)值,作為左右操作數(shù),進(jìn)行代數(shù)運(yùn)算,并將運(yùn)算結(jié)果值作為當(dāng)前結(jié)點(diǎn)的值;
(2)若當(dāng)前結(jié)點(diǎn)為引用變量結(jié)點(diǎn),則將該結(jié)點(diǎn)對(duì)應(yīng)的外部引用對(duì)象的值作為當(dāng)前結(jié)點(diǎn)的結(jié)果值;
(3)若當(dāng)前結(jié)點(diǎn)為函數(shù)參數(shù)EL表達(dá)式結(jié)點(diǎn),則忽略計(jì)算該結(jié)點(diǎn)及其左右子樹,待執(zhí)行相應(yīng)函數(shù)時(shí),再進(jìn)行計(jì)算;
(4)若當(dāng)前結(jié)點(diǎn)為函數(shù)結(jié)點(diǎn),則利用函數(shù)注冊(cè)器,匹配并執(zhí)行相應(yīng)函數(shù);
(5)若當(dāng)前結(jié)點(diǎn)為未知變量結(jié)點(diǎn),則匹配并設(shè)置為當(dāng)前運(yùn)行上下文中數(shù)據(jù)源的屬性值;
(6)對(duì)產(chǎn)生結(jié)果值的運(yùn)算節(jié)點(diǎn)進(jìn)行數(shù)據(jù)信息記錄,最終形成可視化數(shù)據(jù)分析模型。
第四步:對(duì)記錄信息進(jìn)行簡化和調(diào)優(yōu);
該過程涉及的處理包括:
(1)對(duì)信息進(jìn)行篩選和整理,合并冗余信息,排除干擾信息;
以函數(shù)和運(yùn)算符節(jié)點(diǎn)為例,說明如何進(jìn)行冗余信息合并和干擾信息排除;
對(duì)工程造價(jià)計(jì)算描述語言BCL分析可知,EL函數(shù)節(jié)點(diǎn)僅存在一個(gè)子級(jí)節(jié)點(diǎn),所述子級(jí)節(jié)點(diǎn)是對(duì)EL函數(shù)節(jié)點(diǎn)的詳細(xì)描述,若當(dāng)前節(jié)點(diǎn)為函數(shù)節(jié)點(diǎn),將本條信息與其第一個(gè)子級(jí)信息進(jìn)行合并,優(yōu)化效果如下:
優(yōu)化前:
優(yōu)化后:
<Fun Name="_普通人工費(fèi)_%_"Formula="sum(_過濾普通人工_%_計(jì)價(jià)_(),人工,_普 通人工費(fèi)_非%_計(jì)價(jià)_()*人工.數(shù)量/100)">
</Fum>
對(duì)運(yùn)算符節(jié)點(diǎn)分析可知,當(dāng)出現(xiàn)連續(xù)運(yùn)算符操作時(shí),輸出信息存在重復(fù),示例如下:
所述示例可見,聯(lián)系運(yùn)算符操作中,僅對(duì)最上級(jí)操作符進(jìn)行記錄即可表述完整操作信息,對(duì)出現(xiàn)子父級(jí)均為運(yùn)算符的節(jié)點(diǎn)時(shí),排除所有子級(jí)節(jié)點(diǎn)信息,優(yōu)化后效果如下:
<加Name="+"Formula="_人工費(fèi)_()+_材料費(fèi)_()+_機(jī)械費(fèi)_()">
</加>
其他優(yōu)化操作包括:
A.函數(shù)優(yōu)化:Filter函數(shù)、Var函數(shù)、Result函數(shù)以及其他自定義函數(shù);
B.常量、變量及宏變量優(yōu)化;
(2)對(duì)漢字進(jìn)行信息替換,并形成文字信息對(duì)照表;
中文漢字采用雙字節(jié)處理,出現(xiàn)中文漢字的文件必須以Unicode格式進(jìn)行存儲(chǔ),文件大小會(huì)比英文和字符文件增加一倍,對(duì)信息中漢字進(jìn)行簡詞描述可以有效的降低物理磁盤占用量;同時(shí)為了保證信息的可讀性,對(duì)應(yīng)輸出一套信息對(duì)照表,用以支持信息還原。
以Fun函數(shù)舉例,調(diào)整效果如下:
<Fun Name="_PTRGF_%_"Formula="sum(_GLPTRG_%_JJ_(),RG,_PTRGF_OR%_JJ_()*RG.SL/100)">
信息對(duì)照表如下:
所述信息對(duì)照表需注意詞語順序,當(dāng)詞語存在包含關(guān)系時(shí),被包含詞語需置于包含詞語下方,否則會(huì)出現(xiàn)翻譯錯(cuò)誤,如:人工費(fèi)(RGF),人工(RG)。
第五步:建立數(shù)據(jù)源標(biāo)識(shí)與過程信息的數(shù)據(jù)關(guān)系;
該過程涉及的處理包括:
(1)若當(dāng)前節(jié)點(diǎn)函數(shù)節(jié)點(diǎn),則讀取數(shù)據(jù)源對(duì)象的唯一標(biāo)識(shí),記錄標(biāo)識(shí)屬性,建立數(shù)據(jù)源標(biāo)識(shí)與過程信息之間關(guān)聯(lián)關(guān)系;
(2)若當(dāng)前節(jié)點(diǎn)為非函數(shù)節(jié)點(diǎn),利用節(jié)點(diǎn)上下文,建立過程信息之間關(guān)聯(lián)關(guān)系。
第六步:對(duì)過程信息進(jìn)行翻譯處理;
信息翻譯是建立信息可視化的第一步,翻譯過程包括語義翻譯以及義原詞語翻譯,具體描述如下:
所述語義翻譯是將零散和不直觀的信息進(jìn)行整合,形成具有一定語法含義的語句;
所述義原詞語翻譯是將機(jī)器識(shí)別名稱進(jìn)行中文詞語翻譯,如:求和(Sum),截位(Round)。
第七步:對(duì)過程信息進(jìn)行持久化操作,流程結(jié)束。
本發(fā)明的有益效果是:本發(fā)明所述數(shù)據(jù)分析模型是在工程造價(jià)計(jì)算描述語言BCL基礎(chǔ)上進(jìn)行設(shè)計(jì)和研發(fā),通過對(duì)過程信息的整理和記錄,造價(jià)人員能夠直接追溯數(shù)據(jù)來源及計(jì)算方式。造價(jià)類軟件無需對(duì)現(xiàn)有腳本內(nèi)容進(jìn)行調(diào)整,本發(fā)明實(shí)現(xiàn)零集成要求,一步完成數(shù)據(jù)分析模型功能集成。除此之外,由于記錄信息持久化,分析信息文件本身具有獨(dú)立性,在脫離產(chǎn)品軟件本身同樣具有數(shù)據(jù)價(jià)值,可單獨(dú)利用分析文件進(jìn)行數(shù)據(jù)采樣和行業(yè)數(shù)據(jù)分析。
附圖說明
圖1是本發(fā)明實(shí)施例中基于BCL數(shù)據(jù)分析裝置的編譯執(zhí)行機(jī)制圖;
圖2是本發(fā)明實(shí)施例中基于BCL數(shù)據(jù)分析裝置的編譯執(zhí)行流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例以電力工程造價(jià)費(fèi)用計(jì)算為例,提供一種BCL語言的費(fèi)用計(jì)算及數(shù)據(jù)分析機(jī)制,如圖1所示。該實(shí)現(xiàn)機(jī)制的具體實(shí)施過程包括了以下四個(gè)步驟,參照?qǐng)D2可知:
步驟A1:解析和編譯BCL腳本,形成BCL語法樹;
通過解析和編譯BCL腳本,獲得到可執(zhí)行的BCL語法樹,生成具有層次結(jié)構(gòu)的BCL對(duì)象用于進(jìn)行數(shù)據(jù)計(jì)算。
步驟A2:解析工程造價(jià)文件,形成待計(jì)算BCL元素并配置工程反應(yīng)器模塊數(shù)據(jù);
針對(duì)工程造價(jià)文件中包含的計(jì)算需求,生成相應(yīng)種類和數(shù)量的待計(jì)算BCL元素。以電力工程造價(jià)中單個(gè)項(xiàng)目劃分為例,內(nèi)部包含的取費(fèi)宏表生成對(duì)應(yīng)BCL宏表元素,其對(duì)應(yīng)的工程量作為BCL數(shù)據(jù)源元素配置存儲(chǔ)在工程反應(yīng)器模塊中,參與后續(xù)BCL元素的計(jì)算;
步驟A3:對(duì)BCL元素進(jìn)行編譯執(zhí)行,對(duì)執(zhí)行過程信息進(jìn)行記錄;
依據(jù)BCL語法樹結(jié)構(gòu),順序執(zhí)行全部BCL元素,并在執(zhí)行過程中對(duì)計(jì)算信息進(jìn)行記錄。
步驟A4:對(duì)記錄信息進(jìn)行分析整理和翻譯,并持久化到磁盤文件。
將步驟A3中的到的過程信息進(jìn)行整理和內(nèi)容優(yōu)化,同時(shí)進(jìn)行語義、義原翻譯,形成可視化數(shù)據(jù)結(jié)構(gòu),持久化到物理文件中;文件可以獨(dú)立做數(shù)據(jù)采樣和行業(yè)數(shù)據(jù)分析。