1.一种实现解决具有复杂计算关系的指标计算模型的方法,其特征在于,包括:采用通过树形结构计算关系的方式,建立指标计算模型,获得用户自定义的指标计算模型;
采用通过gigabase面向对象数据库保存指标间的树形结构的方式,对用户自定义的指标计算模型进行保存,获得用户自定义的指标计算模型;
通过TinyC编译器,将用户用C语言编写的自定义的指标的计算关系,编译成DLL文件并对所述DLL文件进行保存,获得保存有计算函数的函数关系的数据信息文件;
解析获得的用户自定义的指标计算模型并计算各项指标,获得各项指标的数值。
2.根据权利要求1所述的方法,其特征在于,所述采用通过树形结构计算关系的方式,建立指标计算模型,获得用户自定义的指标计算模型的步骤,包括:采用通过树形结果计算关系的方式,建立指标计算模型中的指标的数据字典,并对各项指标进行编辑,获得指标计算模型中的各项指标数据;其中,所述各项指标数据为每个指标的类型及每个指标的名称;
接收读取数据指令,开始执行读入指标计算模型中的各项指标数据的操作;
用户执行建立指标根节点的操作,获得用户自定义的指标计算模型。
3.根据权利要求2所述的方法,其特征在于,所述用户执行建立指标根节点的操作,获得用户自定义的指标计算模型的步骤,包括:建立指标根节点,获得指标根节点;
若指标根节点需要计算,则建立指标根节点相应的指标子节点,获得指标根节点相应的指标子节点;
编写根节点需要的计算函数的函数实现体,获得计算函数的函数关系;
执行完上述操作,获得指标根节点、指标根节点相应的指标子节点及计算函数的函数关系,则获得用户自定义的指标计算模型。
4.根据权利要求1所述的方法,其特征在于,所述采用通过gigabase面向对象数据库保存指标间的树形结构的方式,对用户自定义的指标计算模型进行保存,获得用户自定义的指标计算模型的步骤,包括:将获得的指标根节点进行保存,获得保存有指标根节点的数据信息的文件;
采用递归方式,针对指标根节点,依次保存指标根节点相应的每个指标子节点,获得保存有指标子节点的数据信息的文件;
对获得的计算函数的函数关系进行保存,获得保存有计算函数的函数关系的数据信息的文件;
其中,所述指标节点的数据信息为指标根/子节点的名称、指标根/子节点的类别、C函数名称、用户输入的计算实现C代码构成的C函数及所有指标子节点对象的ID。
5.根据权利要求1所述的方法,其特征在于,所述通过TinyC编译器,将用户用C语言编写的自定义的指标的计算关系,编译成DLL文件并对所述DLL文件进行保存,获得保存有计算函数的函数关系的数据信息文件的步骤,包括:将所有的用户输入的计算实现C代码构造成相应的C函数,获得针对计算实现C代码相应的一个个C函数;
输入相应的一个个C函数,生成一个C函数源程序文件;
采用TinyC编译器,将C函数源程序文件进行编译,获得C函数源程序文件的动态库文件;
将所述动态库文件作为一个二进制字段保存到指标计算模型文件中的表中,获得保存有计算函数的函数关系的数据信息文件。
6.根据权利要求1所述的方法,其特征在于,所述解析获得的用户自定义的指标计算模型并计算各项指标,获得各项指标的数值的步骤,包括:读取指标计算模型文件,获得各项指标的数值;
采用递归调用的方法,计算出各项指标的数值;
通过调用指标容器的GetNode函数的方式,针对用户的输入指标传入指标名称,获得指标对象;
通过调用指标对象的SetValue函数的方式,对获得的指标对象进行设置,获得指标对象的结果数值;
通过调用Eval函数的方式,针对根节点进行解析,获得各项指标的数值。
7.根据权利要求6所述的方法,其特征在于,所述读取指标计算模型文件,获得各项指标的数值的步骤,包括:读取保存有指标根/子节点的数据信息的文件,获得指标根/子节点的数据信息;
读取保存有计算函数的函数关系的数据信息的文件,获得计算函数的函数关系的数据信息。
8.根据权利要求7所述的方法,其特征在于,所述读取保存有指标根/子节点的数据信息的文件,获得指标根/子节点的数据信息的步骤,包括:为每个指标建立相应的对象实例,获得每个指标的对象实例;
为每个指标的子对象建立相应的子对象实例,获得每个指标的子对象实例;
每个指标的对象实例及其每个对象的若干子对象的子对象实例构成树状结构的对象体系;
建立对象容器对象,获得对象容器;
将每个指标对象加入到对象容器中;
采用hash_map的存储方式,建立指标对象的名称与指标对象地址的映射关系,获得指标对象的名称与指标对象的地址的映射关系;若在对象容器中传入指标对象的名称,则对象容器快速返回指标对象的地址;
完成上述步骤,完成读取保存有指标根/子节点的数据信息的文件,获得指标根/子节点的数据信息的全过程。
9.根据权利要求7所述的方法,其特征在于,所述读取保存有计算函数的函数关系的数据信息的文件,获得计算函数的函数关系的数据信息的步骤,包括:从计算函数的函数关系的数据信息的文件中的二进制字段中读入计算方法;
将计算方法写入到动态库文件中;
采用hash_map的存储方式,建立指标对象的名称与指标对象地址的映射关系,获得指标对象的名称与指标对象的地址的映射关系;若在对象容器传入指标对象的名称,则对象容器快速返回指标对象的地址;
通过调用Eval函数的方式,针对指标对象的最后一行代码,调用计算函数的函数关系,获得计算函数的函数关系的数据信息。
10.根据权利要求6所述的方法,其特征在于,所述通过调用Eval函数的方式,针对根节点进行解析,获得各项指标的数值的步骤,包括:通过调用Eval函数的方式,针对一个根节点进行递归调用解析,获得每个根节点指标的数值;
通过调用Eval函数的方式,针对每个根节点相对应的其余根节点进行递归调用解析,获得每个根节点相对应的其余根节点指标的数值;
对上述每个根节点指标的数值及上述每个根节点相对应的其余根节点指标的数值进行汇总,获得各项指标的数值。