【技术实现步骤摘要】
一种业务规则的处理方法及装置
本申请涉及计算机
,特别涉及一种业务规则的处理方法及装置。
技术介绍
现在的互联网应用系统,特别是电信运营领域的客户关系管理(customerrelationshipmanagement,CRM)系统,面临着用户量大、硬件成本高、业务功能复杂、人们对服务响应时间的要求越来越高等问题。通常,CRM系统是基于服务进行开发与部署的,例如采用微服务开发方式,这样,业务功能聚合到不同的服务中,并且由不同的开发团队负责开发或维护。每个服务根据自己承载的功能选择相应的编程语言。由于很多业务规则(比如:校验规则)在后台执行的同时也需要在用户设备执行,而后台和用户设备使用不同的编程语言,这样就使得对于同一个业务规则,需要编写一份可以在用户设备上执行的规则,同时再编写一份或多份可以在后台执行的规则,导致开发或维护的工作量成倍增加,进而无法实现业务规则的跨编程语言执行。
技术实现思路
本申请提供了一种业务规则的处理方法及装置,以实现业务规则的跨编程语言执行。第一方面,本申请提 ...
【技术保护点】
1.一种业务规则的处理方法,其特征在于,包括:/n获得输入的用于表征业务规则的因子表达式;/n解析所述因子表达式,生成对应的第一表达式节点链;/n获得所述第一表达式节点链中各个节点对应的因子描述文件和操作符函数,其中,所述因子描述文件为当前程序语言执行环境所对应的可执行脚本,所述操作符函数为当前程序语言执行环境所对应的可执行函数;/n遍历所述第一表达式节点链中各个节点,根据所述各个节点对应的因子描述文件和操作符函数,计算并输出所述因子表达式的值,所述因子表达式的值用于表示所述业务规则的执行结果。/n
【技术特征摘要】
1.一种业务规则的处理方法,其特征在于,包括:
获得输入的用于表征业务规则的因子表达式;
解析所述因子表达式,生成对应的第一表达式节点链;
获得所述第一表达式节点链中各个节点对应的因子描述文件和操作符函数,其中,所述因子描述文件为当前程序语言执行环境所对应的可执行脚本,所述操作符函数为当前程序语言执行环境所对应的可执行函数;
遍历所述第一表达式节点链中各个节点,根据所述各个节点对应的因子描述文件和操作符函数,计算并输出所述因子表达式的值,所述因子表达式的值用于表示所述业务规则的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述解析所述因子表达式,生成对应的第一表达式节点链,包括:
对所述因子表达式进行词法分析,获得N个单词,N为正整数;
遍历所述N个单词,判断所述N个单词中的各个单词是否为预设元素,并根据判断结果,生成所述第一表达式节点链。
3.根据权利要求2所述的方法,其特征在于,所述判断所述N个单词中的各个单词是否为预设元素,并根据判断结果,生成所述第一表达式节点链,包括:
针对所述N个单词中的第i个单词,i=1,2,3……N,依次执行以下步骤:
判断所述第i个单词是否为所述预设元素,其中,所述预设元素为因子、左方括号、左圆括号、右圆括号、操作符、常量、右方括号中的一种或者多种;
当所述第i个单词为因子时,将所述第i个单词添加至所述因子表达式中;
当所述第i个单词为左方括号时,解析所述左方括号内的参数的表达式对应的第二表达式节点链;
当所述第i个单词为左圆括号时,为所述左圆括号前的表达式创建第三表达式节点链,增加所述第三表达式节点链的优先级;
当所述第i个单词为右圆括号时,为所述右圆括号前的表达式创建第四表达式节点链,降低所述第四表达式节点链的优先级;
当所述第i个单词为操作符时,记录所述第i个单词与因子之间的关联关系,并为所述操作符的关联表达式创建第五表达式节点链;
当所述第i个单词为常量时,为所述常量创建第六表达式节点链;
当所述第i个单词为右方括号时,则设置i=i+1,并判断所述第i个单词是否为因子;
将所述第二表达式节点链至所述第六表达式节点链中的一个或者多个表达式节点链确定为所述第一表达式节点链。
4.根据权利要求1至3任一项所述的方法,其特征在于,在所述获得所述第一表达式节点链中各个节点对应的因子描述文件和操作符函数之前,所述方法还包括:
判断所述当前程序语言执行环境对应的因子描述文件和/或操作符函数是否存在;
若不存在所述当前程序语言执行环境对应的因子描述文件和/或操作符函数,则获取所述当前程序语言执行环境对应的因子元数据和/或操作元数据;
将所述因子元数据转换成所述当前程序语言执行环境对应的因子描述文件;和/或,
将所述操作元数据转换成所述当前程序语言执行环境对应的操作符函数。
5.根据权利要求4所述的方法,其特征在于,所述获得所述第一表达式节点链中各个节点对应的因子描述文件和操作符函数,包括:
若存在所述当前程序语言执行环境对应的因子描述文件和/或操作符函数,则从所述当前程序语言执行环境对应的因子描述文件和/或操作符函数中获得所述各个节点对应的因子描述文件和操作符函数。
6.根据权利要求4或5所述的方法,其特征在于,所述将所述因子元数据转换成所述当前程序语言执行环境对应的因子描述文件,包括:
从所述因子元数据获得所述当前程序语言执行环境对应的至少一个因子;
根据所述至少一个因子的因子类型,对所述至少一个因子进行排序;
遍历排序后的至少一个因子的属性类型,依次对所述排序后的至少一个因子创建因子属性实例,并确定所述排序后的至少一个因子对应的计算逻辑;
根据所述因子类型、对应的所述因子属性实例和所述计算逻辑,生成所述因子描述文件。
7.根据权利要求6所述的方法,其特征在于,所述依次对所述排序后的至少一个因子创建因子属性实例,包括:
依次判断所述排序后的至少一个因子的属性类型是否为因子类型;
若是,则创建通用类型实例作为所述因子属性实例;
若否,则创建因子类型实例作为所述因子属性实例。
8.根据权利要求6或7所述的方法,其特征在于,所述确定所述排序后的至少一个因子对应的计算逻辑,包括:
依次判断所述排序后的至少一个因子的属性是否具有计算逻辑;
若是,则将所述因子的属性对应的计算逻辑确定为所述因子对应的计算逻辑;
若否,则将所述因子的因子类型对应的计算逻辑确定为所述因子对应的计算逻辑。
9.根据权利要求4至8任一项所述的方法,其特征在于,所述将所述操作元数据转换成所述当前程序语言执行环境对应的操作符函数,包括:
将所述操作元数据中的各个操作符按函数名称进行组装,生成对应的操作符函数。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述根据所述各个节点对应的因子描述文件和操作符函数,计算所述因子表达式的值,包括:
获取所述因子表达式中的至少一个操作符,并根据所述操作符的优先级,对所述至少一个操作符进行排序;
依次对排序后的至少一个操作符中的当前操作符,获取所述第一表达式节点链中与所述当前操作符的关联表达式对应第七表达式节点链;
根据所述各个节点对应的因子描述文件和操作符函数,计算所述第七表达式节点链的值;
根据所述至少一个操操作符中的每个操作符的计算逻辑和所述每个操作符对应的所述第七表达式节点链的值,计算所述因子表达式的值。
11.根据权利要求10所述的方法,其特征在于,所述根据所述各个节点对应的因子描述文件和操作符函数,计算所述第七表达式节点链的值,包括:
依次判断所述第七表达式节点链中的当前节点是否为因子;
若当前节点为因子,则判断所述当前节点是否具有参数;
若所述当前节点不具有参数,则从所述各个节点对应的因子描述文中获取所述当前节点对应的计算逻辑,并按照所述当前节点对应的计算逻辑以及操作符函数,计算所述当前节点对应的因子值;
判断所述当前节点是否为所述第七表达式节点链的最后一个节点;
若是,则将所述当前节点对应因子值作为所述关联表达式的值,并返回所述计算所述因子表达式的值的步骤;
若否,则跳转至下一个节点,并返回所述判断所述各个节点中的当前节点是否为因子的步骤。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
若所述当前节点具有参数,则计算所述参数的表达式的值,并跳转至下一个节点,返回所述判断所述各个节点中的当前节点是否为因子的步骤。
13.根据权利要求11或12所述的方法,其特征在于,所述方法还包括:
若当前节点不为因子,则判断所述当前节点是否为右括号;
若所述当前节点为右括号,则从所述各个节点对应的因子描述文中获取所述当前节点对应的计算逻辑,并按照所述当前节点对应的计算逻辑以及操作符函数,计算所述当前节点对应因子值;
判断所述当前节点是否为所述第一表达式节点链的最后一个节点;
若是,则将所述当前节点对应因子值作为所述因子表达式的值;
若否,则跳转至下一个节点,并返回所述判断所述各个节点中的当前节点是否为因子的步骤。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
若所述当前节点不为右括号,则判断所述当前节点是否为常量;
若所述当前节点为常量,则将所述当前节点对应因子值作为所述因子表达式的值。
15.根据权利要求11至14中任一项所述的方法,其特征在于,所述从所述各个节点对应的因子描述文中获取所述当前节点对应的计算逻辑,包括...
【专利技术属性】
技术研发人员:阮华斌,刘展宏,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。