基于工程造价计算机描述语言BCL的数据分析装置及生成方法与流程

文档序号:12718846阅读:211来源:国知局
基于工程造价计算机描述语言BCL的数据分析装置及生成方法与流程

本发明涉及一种基于工程造价计算机描述语言BCL的数据分析装置及生成方法,具体实现工程造价数据计算过程可视化并可追踪数据关系进行数据分析,属于工程造价计算领域。



背景技术:

随着信息技术不断发展及企业管理的提升,工程造价计算日益复杂化,且计算深度越发精细化;各类产品软件帮助解决复杂的业务内容,封装繁琐的计算规则,造价人员仅需填写简单内容即可完成工程编制。软件产品的出现,极大的简化了工作,但其封装性和过程不可视性,限制了造价人员能力水平的成长,造价人员对编制工程数据正确与否的可控性越来越低,容易产生数据错误并被忽略,不利于数据核算工作的进行。

可视化的计算过程能够帮助造价人员了解数据来源,分析数据准确性及合理性,帮助进行数据查错。

以电力工程造价举例,各地市造价类数据具有逻辑相似性,数据之间存在复用可能,目前所有数据零散存在,将这类数据整合,通过数据采样及大数据分析,可以帮助提升数据正确性及编制效率,实现数据编制的一致性。

数据分析模型通过对费用计算过程的持久化,可供所述数据采样及大数据分析。



技术实现要素:

本发明的目的是针对现有技术不足提供一种基于工程造价计算机描述语言BCL的数据分析装置及生成方法,以实现工程造价数据计算过程可视化并可追踪数据关系进行数据分析。

本发明的技术方案如下:

所述数据分析装置及数据生成方法是基于工程造价计算描述语言BCL开发,独立于不同的产品、项目及数据源,具有与开发语言无关性和平台无关性。

1.所述工程造价计算描述语言BCL,其实现包括:

(1)设计描述具体计算算法规则的代数式及扩展运算表达式结构,即EL表达式;所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记,它在沿袭传统代数表达式运算特点的同时,支持用于包含多种表达式选择的条件选择运算和完成具体计算规则的函数运算在内的其他高级运算功能。与传统代数运算不同,所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数 据值。

所述条件表达式以#{和}作为起始和结束标记,其内部包含多个条件分支和至多一个缺省条件分支,每个分支对应一个EL表达式,整个条件选择表达式的取值为当前被激活条件分支对应的EL表达式计算结果,如:

#{

->条件1:EL表达式1;

->条件2:EL表达式2;

->:EL表达式3;

}

所述函数运算定义了具体的计算规则,以满足工程造价特定计算需求,其语法结构与C语言兼容,并支持BCL的扩展数据类型,除此之外,所述函数的调用还支持把EL表达式作为参数进行输入,能够实现指定工程数据范围与EL表达式的动态绑定,进而减少表达式代码冗余,语法格式为:

sum(数据源标记,数据源别名,EL表达式);

(2)分析工程造价计算需求,确定除EL表达式以外的其他计算逻辑单元;

通过对造价工程数据及计算算法、过程的总结归纳,得出任何工程的工程造价复杂计算算法都可分解为最小的原子计算逻辑单元,即:EL表达式、宏表、变量、参数、数据源和包。其中,所述宏表能完整的表示一个具有递归、多字段、多记录、有汇总关系的计算规则。所述数据源用于描述一个工程的数据及其数据范围,它是BCL语言与工程数据的粘合剂,实现真实数据的传递。所述变量是包含数据源、数据过滤算法以及费用计算算法规则在内的具体费用计算结构,相较于仅包含具体数值的参数而言,变量的计算有一定的先后次序,更为复杂,但功能强大。所述包为其他原子计算逻辑单元的容器,能划定计算逻辑单元的作用范围,屏蔽命名冲突。

(3)分析工程造价计算过程,基于工程造价计算描述语言BCL扩展并确定分析描述语言,具体包括扩展EL表达式、EL表达式数据分析函数及除EL表达式以外的数据分析逻辑单元;

通过对BCL表达式数据计算算法和过程的总结归纳,在数据计算过程中,可将任意复杂计算过程拆分为包含左操作数、右操作数以及操作符的单步运算集合表述。

所述EL表达式逻辑结构表述如下:

EL表达式

->左操作数:EL表达式

->右操作数:EL表达式

->运算符:EL表达式

所述EL表达式逻辑结构中,左操作数、右操作数、操作符均使用EL表达式标识,其作用在于支持传统的四则运算类型之外,支持其他形式的数据和运算符扩展。

所述EL表达式逻辑结构分析可知,任意形式计算过程可识别为一系列EL表达式的语法树形式;语法树表示方式能具体表述数据计算的过程和数据之间关系,通过对数据计算过程和关系信息记录,配合BCL数据源标记,记录整个数据计算生命周期的数据、关系以及过程。记录语法格式如下:

Record(数据源标记,EL表达式,结果值)。

所述语法格式中,“EL表达式”可替换为Record语法、EL函数、自定义函数、宏变量以及常量的表述;支持Record语法的嵌套调用,其中,所述EL表达式、变量、参数与工程造价计算语言描述一致。所述数据源标记用于描述一个工程的数据及其数据范围,它是BCL语言与工程数据的粘合剂,实现真实数据的传递。

2.一种基于工程造价计算描述语言BCL的数据分析装置,该装置是基于工程造价计算描述语言BCL而实现的,包括:计算过程记录装置、数据关系建立装置、记录信息翻译装置以及文件持久化装置;

所述计算过程记录装置将数据计算的每一次运算操作及运算结果进行记录,同时对输出内容进行简化和调优,初步形成可追溯的数据信息。

所述数据关系建立装置是对上述过程记录信息进行整理,建立过程与过程、过程与数据源,数据源与数据源之间的数据关系,完善可追溯数据信息链路,完成数据与信息之间的关系梳理。

所述记录信息翻译装置是将建立关系后的信息进行可视化翻译,将机器识别或代码识别信息翻译为造价人员可识别信息,形成可视化数据信息。

所述文件持久化装置是将信息转化为物理文件并记录到磁盘,完成数据持久化操作。文件持久化装置可在数据关系建立装置之后或可在记录信息翻译装置之后执行,可根据需要,进行使用时翻译或记录时翻译的选择。

3.一种基于工程造价计算描述语言BCL的数据分析生成方法,是基于工程造价计算描述语言BCL而实现的,其步骤如下:

第一步:编制BCL脚本文件;

依据工程造价计算描述语言BCL编制符合其语法规则的数据计算过程;

第二步:加载BCL脚本,对BCL脚本进行词法分析,生成EL表达式;

(1)依据工程造价计算描述语言BCL脚本解析装置,对BCL脚本进行词法、语法的解析;

(2)创建相应BCL对象,并关联经语法分析后得到的BCL语法树;

(3)通过对生成的BCL对象进行分析,获取待计算BCL语法树对象;

第三步:解释执行当前BCL语法树,按照后序遍历的方式处理语法树中的结点,并且对第二步中生成的EL表达式对象进行信息记录,直至全部BCL语法树执行完毕;

该过程涉及到的处理包括:

(1)若当前结点为传统代数运算符结点,则分别计算并获取左右结点值,作为左右操作数,进行代数运算,并将运算结果值作为当前结点的值;

(2)若当前结点为引用变量结点,则将该结点对应的外部引用对象的值作为当前结点的结果值;

(3)若当前结点为函数参数EL表达式结点,则忽略计算该结点及其左右子树,待执行相应函数时,再进行计算;

(4)若当前结点为函数结点,则利用函数注册器,匹配并执行相应函数;

(5)若当前结点为未知变量结点,则匹配并设置为当前运行上下文中数据源的属性值;

(6)对产生结果值的运算节点进行数据信息记录,最终形成可视化数据分析模型。

第四步:对记录信息进行简化和调优;

该过程涉及的处理包括:

(1)对信息进行筛选和整理,合并冗余信息,排除干扰信息;

以函数和运算符节点为例,说明如何进行冗余信息合并和干扰信息排除;

对工程造价计算描述语言BCL分析可知,EL函数节点仅存在一个子级节点,所述子级节点是对EL函数节点的详细描述,若当前节点为函数节点,将本条信息与其第一个子级信息进行合并,优化效果如下:

优化前:

优化后:

<Fun Name="_普通人工费_%_"Formula="sum(_过滤普通人工_%_计价_(),人工,_普 通人工费_非%_计价_()*人工.数量/100)">

</Fum>

对运算符节点分析可知,当出现连续运算符操作时,输出信息存在重复,示例如下:

所述示例可见,联系运算符操作中,仅对最上级操作符进行记录即可表述完整操作信息,对出现子父级均为运算符的节点时,排除所有子级节点信息,优化后效果如下:

<加Name="+"Formula="_人工费_()+_材料费_()+_机械费_()">

</加>

其他优化操作包括:

A.函数优化:Filter函数、Var函数、Result函数以及其他自定义函数;

B.常量、变量及宏变量优化;

(2)对汉字进行信息替换,并形成文字信息对照表;

中文汉字采用双字节处理,出现中文汉字的文件必须以Unicode格式进行存储,文件大小会比英文和字符文件增加一倍,对信息中汉字进行简词描述可以有效的降低物理磁盘占用量;同时为了保证信息的可读性,对应输出一套信息对照表,用以支持信息还原。

以Fun函数举例,调整效果如下:

<Fun Name="_PTRGF_%_"Formula="sum(_GLPTRG_%_JJ_(),RG,_PTRGF_OR%_JJ_()*RG.SL/100)">

信息对照表如下:

所述信息对照表需注意词语顺序,当词语存在包含关系时,被包含词语需置于包含词语下方,否则会出现翻译错误,如:人工费(RGF),人工(RG)。

第五步:建立数据源标识与过程信息的数据关系;

该过程涉及的处理包括:

(1)若当前节点函数节点,则读取数据源对象的唯一标识,记录标识属性,建立数据源标识与过程信息之间关联关系;

(2)若当前节点为非函数节点,利用节点上下文,建立过程信息之间关联关系。

第六步:对过程信息进行翻译处理;

信息翻译是建立信息可视化的第一步,翻译过程包括语义翻译以及义原词语翻译,具体描述如下:

所述语义翻译是将零散和不直观的信息进行整合,形成具有一定语法含义的语句;

所述义原词语翻译是将机器识别名称进行中文词语翻译,如:求和(Sum),截位(Round)。

第七步:对过程信息进行持久化操作,流程结束。

本发明的有益效果是:本发明所述数据分析模型是在工程造价计算描述语言BCL基础上进行设计和研发,通过对过程信息的整理和记录,造价人员能够直接追溯数据来源及计算方式。造价类软件无需对现有脚本内容进行调整,本发明实现零集成要求,一步完成数据分析模型功能集成。除此之外,由于记录信息持久化,分析信息文件本身具有独立性,在脱离产品软件本身同样具有数据价值,可单独利用分析文件进行数据采样和行业数据分析。

附图说明

图1是本发明实施例中基于BCL数据分析装置的编译执行机制图;

图2是本发明实施例中基于BCL数据分析装置的编译执行流程示意图。

具体实施方式

下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例以电力工程造价费用计算为例,提供一种BCL语言的费用计算及数据分析机制,如图1所示。该实现机制的具体实施过程包括了以下四个步骤,参照图2可知:

步骤A1:解析和编译BCL脚本,形成BCL语法树;

通过解析和编译BCL脚本,获得到可执行的BCL语法树,生成具有层次结构的BCL对象用于进行数据计算。

步骤A2:解析工程造价文件,形成待计算BCL元素并配置工程反应器模块数据;

针对工程造价文件中包含的计算需求,生成相应种类和数量的待计算BCL元素。以电力工程造价中单个项目划分为例,内部包含的取费宏表生成对应BCL宏表元素,其对应的工程量作为BCL数据源元素配置存储在工程反应器模块中,参与后续BCL元素的计算;

步骤A3:对BCL元素进行编译执行,对执行过程信息进行记录;

依据BCL语法树结构,顺序执行全部BCL元素,并在执行过程中对计算信息进行记录。

步骤A4:对记录信息进行分析整理和翻译,并持久化到磁盘文件。

将步骤A3中的到的过程信息进行整理和内容优化,同时进行语义、义原翻译,形成可视化数据结构,持久化到物理文件中;文件可以独立做数据采样和行业数据分析。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1