CN103577174A - 一种计算规则脚本的可视化生成方法和系统 - Google Patents
一种计算规则脚本的可视化生成方法和系统 Download PDFInfo
- Publication number
- CN103577174A CN103577174A CN201210269710.5A CN201210269710A CN103577174A CN 103577174 A CN103577174 A CN 103577174A CN 201210269710 A CN201210269710 A CN 201210269710A CN 103577174 A CN103577174 A CN 103577174A
- Authority
- CN
- China
- Prior art keywords
- script
- computational item
- name
- computation rule
- condition entry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明名称为“一种计算规则脚本的可视化生成方法和系统”,涉及软件系统的计算规则的可视化领域。本发明公开了一种计算规则的可视化管理方法和系统结构,使业务人员无需技术人员帮助就可用规范后的自然语言配置、修改、查看计算规则并生成计算规则程序脚本。包括:计算规则拆分成逻辑规则和数学规则、逻辑规则和数学规则的可视化配置方法和界面、逻辑规则和数学规则的自然语言可视化表达方法和界面、逻辑规则和数学规则的程序脚本生成、版本控制和追踪、计算规则配置系统的使用步骤。
Description
技术领域
本发明涉及软件系统的计算规则的可视化。
背景技术
“与业务相关的操作规范、管理章程、规章制度、行业标准等,都可以称为业务规则(Business Rules,简称BR)。业务规则实质上也可以理解为一组条件和在此条件下的操作,是一组准确凝练的语句,用于描述、约束及控制企业的结构、运作和战略,是应用程序中的一段业务逻辑。该业务逻辑通常由业务人员、企业的管理人员和程序开发人员共同开发和修改。它的理论基础是:设置一个条件集合,当满足这个条件集合时候,触发一个或者多个动作。”[百度百科对业务规则的解释]
软件应用领域的计算规则属业务规则的一种,通常由一组逻辑条件和在此条件下的一个或者多个数学计算组成,当满足了某个逻辑条件时就触发某个数学计算。这组逻辑条件通常形式化地表述为一组形如“如果…,则…,否则…”的逻辑语句,为了描述方便,我们将这组逻辑条件定义为“逻辑规则”。这里说到的数学计算通常是一组或简单或复杂的数学表达式,同样为了描述方便,我们将这组数学计算命名为“数学规则”。当满足“逻辑规则”中的某个逻辑条件时触发“数学规则”中某个数学计算。所以在某种意义上可以将计算规则简化为:“计算规则”=“逻辑规则”+“数学规则”。
在软件系统中,计算规则通常由一系列抽象的程序语句实现,这带来如下难题:
1)计算规则是硬编码进软件系统的,计算规则的每次修改,哪怕是很小的一点儿修改,都是对该软件系统的修改,都要经历软件开发周期的主要流程,参与的角色多,耗费的周期长。
2)定义计算规则的业务人员无法自己实现计算规则,必须向IT技术人员讲解清楚计算规则后,依赖技术人员编程实现。业务人员对计算规则提出的每次修改,哪怕是很小的一点儿修改,都必须讲解清楚后依赖技术人员修改,技术人员负担重且可能对讲解理解偏差。
3)由业务人员所做的计算规则的具体的形式化描述,与由技术人员所写的抽象的程序语句差异巨大,计算规则实现正确与否全看技术人员对计算规则理解的准确程度。业务人员无法看懂技术人员所写程序语句,不易早期发现技术人员对计算规则的理解偏差,必须到测试甚至发布阶段才能发现。
4)计算规则的形式化描述不标准,不同的业务人员有不同的描述习惯,甚至有的业务人员不能完整准确描述复杂计算规则,必须在有经验的技术人员启发下一点点补充修正,容易造成技术人员的理解偏差。
5)计算规则的具体的形式化描述与抽象的程序语句实现有一一对应关系,但对应关系不标准,随不同业务人员的不同描述习惯改变,也随不同技术人员的不同实现习惯改变。对应关系难以标准化,使快速准确实现业务规则成为不可能完成的任务。
6)业务需求上经常需要追溯某个计算结果当时所依据的计算规则。计算规则硬编码进软件系统后,如果计算规则变化比较频繁,则无论业务人员还是技术人员都很难准确追溯某个历史计算结果所依据的当时的计算规则。
以上这些难题归根结底是由计算规则硬编码进软件系统中引起的,如图1所示。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下具体实施例中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
针对传统计算规则开发维护过程中存在的上述诸多问题,本发明在对计算规则进行了深度抽象、分析、归纳后,提出了用规范的自然语言描述计算规则并自动转换为程序代码脚本的思路,在自然语言描述的计算规则向程序代码转换的过程中,为了标准化这一过程以提高转换质量和速度,提出了由业务人员用可视化界面配置计算规则,并自动转换为计算规则程序语句的方法和系统结构,克服了上述计算规则实现难题。
首先,为了标准化描述计算规则,在进行分析和高度抽象的基础上对计算规则进行结构拆分。软件应用领域的计算规则属业务规则的一种,通常由一组逻辑条件和在此条件下的一个或者多个数学计算组成,当满足了某个逻辑条件时就触发某个数学计算。这组逻辑条件通常形式化地表述为一组形如“如果…,则…,否则…”的逻辑语句,它决定了计算规则的逻辑框架。为了描述方便,我们将这组逻辑条件定义为“逻辑规则”。这里说到的数学计算通常是一组或简单或复杂的数学表达式,同样为了描述方便,我们将这组数学计算命名为“数学规则”。当满足“逻辑规则”中的某个逻辑条件时触发“数学规则”中某个数学计算。所以在形式上可以将计算规则简化为:“计算规则”=“逻辑规则”+“数学规则”。
逻辑规则又由“如果”、“则”、“否则”三部分组成。“如果”条件成立后,执行“则”逻辑分支,这个逻辑分支可以是一个数学规则,也可以是另一个逻辑规则。否则执行“否则”逻辑分支,同样这个逻辑分支可以是一个数学规则或另一个逻辑规则。
“如果”逻辑中的逻辑条件由多个“条件项”和“逻辑关系运算符”组成,“条件项”与具体应用系统相关,要从具体应用系统提供的条件项数据接口中得到。
“数学规则”由多个“计算项”和“数学运算符”组成,“计算项”与具体应用系统相关,要从具体应用系统提供的计算项数据接口中得到。
图2是计算规则类结构示意图。
其中,
a)“计算规则”类201,由“逻辑规则”202和“数学规则”203组成,基本属性包括规则名称、规则版本号以及该规则下属的“逻辑规则”实例组和“数学规则”实例组。
b)“逻辑规则”类202,由一系列“如果”和“则”组成,基本属性包括规则名称、该规则下属的“如果”实例组。
c)“如果”类204,用来表达逻辑条件,是逻辑分支的入口,基本属性包括脚本名、显示名、“条件项三元组”实例组和1个“则”实例。
i.脚本名是生成脚本时该“如果”实例在脚本中的脚本语言表示,显示名是在计算规则可视化配置界面中该“如果”实例的自然语言表示。“如果”类有3个实例,以(脚本名,显示名)的形式表示分别是:
1)(“if”,“如果”)
2)(“else if”,“否则如果”)
3)(“”,“则”)
4)(“else”,“否则”)。
ii.“条件项三元组”实例组用来表达逻辑条件中形如“((左条件项1等于右条件项1)或者(左条件项2大于右条件项2))并且(左条件项3小于右条件项3)”这样的逻辑条件三元组组合。
d)“条件项三元组”类206,用来表达逻辑条件表达式,基本属性包括左“条件项”实例、“逻辑关系”实例、右“条件项”实例和自嵌套的“条件项三元组”实例组。其中前3者合作表达形如“(左条件项1等于右条件项1)”这样的逻辑条件表达式,而自嵌套的“条件项三元组”实例组用来表达条件表达式的各种复杂组合。
注:
条件表达式分为基本条件表达式和复合条件表达式,句法分别如下:
i.基本条件表达式
(左条件项逻辑关系符右条件项)
ii.复合条件表达式
(左基本/复合条件表达式逻辑关系符右基本/复合条件表达式)
其中,以(脚本名,显示名)表示的逻辑关系符208实例包括:
a)(“==”,“等于”)
b)(“!=”,“不等于”)
c)(“>”,“大于”)
d)(“>=”,“大于等于”)
e)(“<”,“小于”)
f)(“<=”,“小于等于”)
g)(“||”,“或者”)
h)(“&&”,“并且”)
例如:
((会员积分>60)||((优惠活动==是)&&(买家好评数>15)))就是一个复合条件表达式
e)“条件项”类207,基本属性包括脚本名和显示名,实例取值与具体应用系统相关,要与具体应用系统提供的条件项数据接口一致。其中,脚本名是生成脚本时该“条件项”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“条件项”实例的自然语言表示。
f)“逻辑关系”类208,用来表达“条件项三元组”206中左右条件项之间的逻辑关系,基本属性包括脚本名和显示名,各实例的对应取值分别为:(“==”,“等于”)、(“!=”,“不等于”)、(“>”,“大于”)、(“>=”,“大于等于”)、(“<”,“小于”)、(“<=”,“小于等于”)、(“&&”,“并且”)、(“||”,“或者”)。其中,脚本名是生成脚本时该“逻辑关系”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“逻辑关系”实例的自然语言表示。
g)“则”类205,用来表示一个“如果”逻辑分支条件204成立时应执行的动作,基本属性包括“逻辑规则”实例、“数学规则”实例、“异常”实例,这3个属性互斥,意即一个“则”实例中只能有这3个实例中的一个实例存在,其它实例为空,或者3个实例都为空。如果只有“逻辑规则”实例存在,“则”表示“执行该逻辑规则实例”;如果只有“数学规则”实例存在,“则”表示“执行该数学规则实例”;如果只有“异常”实例存在,“则”表示“抛出异常”;如果3个实例都为空,“则”表示“什么也不做”;
h)“异常”类209,用来表示某个逻辑分支要抛出的异常信息,基本属性就是要抛出的异常信息内容。
i)“数学规则”类203,基本属性包括数学规则名称、“计算项三元组”实例组。其中,“计算项三元组”实例用来表达形如“计算项A=计算项B*计算项C+function(计算项D)”这样的数学表达式。
注:
数学规则由赋值语句组成,其句法如下:
计算项A=数学表达式
其中,数学表达式分为基本数学表达式和复合数学表达式,句法分别如下:
i.基本数学表达式
a)(一元数学运算符左计算项)
b)(左计算项二元数学运算符右计算项)
ii.复合数学表达式
(左基本/复合数学表达式二元数学运算符右基本/复合数学表达式)
例如:
优惠券金额=优惠券数量×优惠券面额;
成交价格=标准价格×0.7-优惠券金额;
会员积分=会员积分+Round(成交价格);
就是一组计算规则。
j)“计算项三元组”类210,基本属性包括左“计算项”实例、右“计算项”实例、“数学运算符”实例、自嵌套的“计算项三元组”实例组。其中前3个属性用来表达形如“左计算项÷右计算项”这样的数学表达式,而自嵌套的“计算项三元组”实例组用来表达数学表达式的各种复杂组合,如:(计算项1+计算项2)÷计算项3。
k)“计算项”类211,基本属性包括“读”脚本名、“写”脚本名、显示名,实例的取值与具体应用系统有关,要与具体应用系统提供的计算项数据接口一致。其中,“读”脚本名是生成脚本时该“计算项”实例位于“赋值”符号右边时在脚本中的程序语言表示,“写”脚本名是生成脚本时该“计算项”实例位于“赋值”符号左边时在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“计算项”实例的自然语言表示。
l)“数学运算符”类212,基本属性包括脚本名、显示名,其中,脚本名是生成脚本时该“数学运算符”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“数学运算符”实例的自然语言表示。分为“一元运算符”和“二元运算符”2类。如果是“一元运算符”实例,则“计算项三元组”只有左“计算项”实例,并且在生成脚本时“一元运算符”在前,“计算项”在后,即生成的脚本形如“function(计算项)”。如果是“二元运算符”实例,则在生成脚本时,左“计算项”在前,“二元运算符”在中,右“计算项”在后,即生成的脚本形如“(计算项A÷计算项B)”。
经过上述分析可知,计算规则的主体是一系列“如果...,则...,否则...”语句构成的有规律的语句组,这就为用自然语言可视化配置计算规则提供了途径。
本发明设计了一种可视化的计算规则生成器,根据上述对计算规则的分析,通过可视化界面用规范后的自然语言可视化配置计算规则,并能生成计算规则的计算机程序脚本,在计算规则发生变化后,由数据库记录这个变化,对计算规则进行版本管理和追溯。
具体如下:
计算规则配置系统1201具有可视化配置功能、版本管理功能和生成计算规则脚本功能。计算规则配置由2部分组成:逻辑规则配置1205、1207和数学规则配置1206、1208。
逻辑规则配置界面1205如图3所示。
逻辑规则配置界面至少由一个配置表格300、一个“保存”按钮309和一个“生成脚本”按钮310组成。表格300的列至少包括“插入/删除行”列307和308、“逻辑符”列302、“左条件项”列303、“关系符”列304、“右条件项”列305。表格的行数根据界面高度定,可调整。
在“插入/删除行”列307和308,每行有一个“插入行”307和一个“删除行”308按钮,用来点击后新插入一个空白行,或删除当前行,以方便修改逻辑规则。
在“逻辑符”列302,每个单元格都是下拉框,点击后下拉显示可选的逻辑符号。可选的逻辑符号来自“如果”类204和“逻辑关系”类208的实例,包括“如果”、“则”、“否则”、“否则如果”、“并且”、“或者”、“(”、“)”。点击选中后该符号出现在该单元格。
在“左条件项”列303,每个单元格都是下拉框,点击后下拉显示可选的左条件项,点击选中后该条件项名称出现在该单元格。如果前一个“逻辑符”单元格选中的是“如果”、“否则如果”、“并且”、“或者”、“(”、“)”,则本“左条件项”下拉框提供各条件项实例选项供选择,此时可选的左条件项选项与具体应用系统1219相关,名称与具体应用系统1219提供的条件项数据接口1222一致。如果前一个“逻辑符”单元格选中的是“否则”或“则”,则本“左条件项”下拉框选项来自“则”类205的实例,包括“执行逻辑规则”、“执行数学规则”、“抛出异常”、“什么也不做”。
在“关系符”列304,每个单元格都是下拉框,点击后下拉显示可选的关系符号。可选的关系符号来自“逻辑关系”类208的实例,包括“大于”、“大于等于”、“小于”、“小于等于”、“等于”、“不等于”。点击选中后该符号出现在该单元格。
在“右条件项”列305,每个单元格都是下拉框,点击后下拉显示可选的右条件项,点击选中后该条件项名称出现在该单元格。可选的右条件项与具体应用系统1219相关,名称与具体应用系统1219提供的条件项数据接口1222一致。
表格300的最后一行放置刚配置的逻辑规则的自然语言表达310和对应的程序脚本311。
点击“保存”按钮309可保存配置的逻辑规则。
点击“生成脚本”按钮310可生成刚配置的逻辑规则的自然语言表达310和对应的程序脚本311。
数学规则配置界面1206如图5所示。
数学规则配置界面至少由一个配置表格500、一个“保存”按钮503和一个“生成脚本”按钮504组成,表格的列数和行数根据界面大小定,可调整。
每个单元格都是下拉框。
第一个单元格502下拉有一元运算符213实例、“(”、“)”和计算项211实例供选择。可选的计算项与具体应用系统1219相关,名称与具体应用系统1219提供的计算项数据接口1221一致。
从第二个单元格起,下拉框提供的选项内容根据前一个单元格的选择决定,即:
1)如果前一个单元格内容是计算项,则当前单元格下拉有二元运算符214实例和“(”、“)”供选择;
2)如果前一个单元格内容是一元运算符213实例,则当前单元格下拉有计算项211实例和“(”、“)”供选择;
3)如果前一个单元格内容是二元运算符214实例,则当前单元格下拉有一元运算符213实例、计算项211实例和“(”、“)”供选择;
4)如果前一个单元格内容是“(”,则当前单元格下拉有一元运算符213实例、计算项211实例和“(”供选择;
5)如果前一个单元格内容是“)”,则当前单元格下拉有二元运算符214实例和“)”供选择;
在任何一个单元格上点击鼠标右键可弹出菜单提供“插入单元格”选项供选择,点选后可在已配置好的数学规则中间制定位置插入新计算项或数学运算符。
表格500的最后一行放置刚配置的数学规则的自然语言表达505和对应的程序脚本506。
点击“保存”按钮503可保存配置的数学规则。
点击“生成脚本”按钮504可生成刚配置的数学规则的自然语言表达505和对应的程序脚本506。
在计算规则可视化配置时,能灵活选择、修改以自然语言呈现的逻辑规则,能灵活定义、修改以自然语言呈现的数学规则。每次修改了规则时,能自动更新规则版本号。
配置好的计算规则采用树形控件在界面呈现,一个“如果”语句702占一个节点,一个“则”语句703占一个节点,一个“否则”语句704占一个节点。如果“则”、“否则”语句是执行一个逻辑规则或数学规则,则这个“则”、“否则”节点用“+”703、704或“-”707收缩或展开所指规则。
图7是一个用树形控件呈现的计算规则的自然语言表达示意图。
点击“生成计算规则脚本”功能时可从当前配置的自然语言式的计算规则生成程序脚本形式的计算规则程序脚本1217、1218,这个计算规则程序脚本1217、1218可供具体应用系统1219通过接口1223调用来解释或编译执行该计算规则。
在计算规则可视化配置界面中出现的可配置元素除计算项211外都有脚本名和显示名2个属性,显示名就是元素在配置界面中以自然语言呈现的名字,脚本名则是在生成计算规则脚本时呈现的脚本符号。而计算项211则有“读”脚本名、“写”脚本名、显示名3个属性,“读”脚本名是在生成数学规则脚本时呈现的脚本符号,“写”脚本名是将计算结果写回具体应用系统数据存储1220的接口脚本。
点击“生成计算规则脚本”功能时生成的总脚本,以计算规则名命名,并带有版本标志,用来对版本进行追踪。
计算规则脚本生成逻辑的伪码表达参见图9。
图10是一个计算规则脚本示意图,可见与计算机程序语句无异。
上述计算规则类结构(图2)、可视化配置方法(图3、图5)和脚本生成机制(图7)可整合进一个计算规则的可视化配置系统中供业务人员在无需技术人员帮助的条件下可视化配置和管理计算规则。
图12是计算规则可视化配置系统结构示意图。
计算规则配置系统1201与具体的应用系统1219各自独立,仅在条件项数据接口1222、计算项数据接口1221和调用生成的计算规则脚本1217、1218的调用接口1223处发生关联。
计算规则配置系统1201内部分为3层:计算规则配置界面层1202、计算规则配置逻辑层1203和计算规则数据存储层1204。
计算规则配置界面层1202负责向使用者提供可视化配置界面,用来用规范后的自然语言配置和浏览计算规则、生成和浏览计算规则脚本。计算规则配置界面1202包括逻辑规则配置界面1205和数学规则配置界面1206两部分。
计算规则配置逻辑层1203负责控制计算规则配置界面层1202的配置逻辑,并管理计算规则版本(版本管理模块1224)和负责实际生成计算规则脚本(脚本生成模块1225)。计算规则配置逻辑层1203包括逻辑规则配置1207和数学规则配置1208两部分。
逻辑规则配置1207的详细结构参见图2,这里要强调的是其中的条件项1212通过条件项数据接口1222与具体应用系统1219发生关系,条件项1212的脚本名属性值应与条件项数据接口1222一致,要能被具体应用系统1219识别。
数学规则配置1208的详细结构参见图2,这里要强调的是其中的计算项1215通过计算项数据接口1221与具体应用系统1219发生关系,计算项1215的“读”和“写”脚本名属性值应与计算项数据接口1221一致,要能被具体应用系统1219识别。
计算规则数据存储层1204负责持久存储各版本的计算规则,只要计算规则发生过修改,就要存储成新版本的计算规则,并可追溯各版本计算规则的细节以追溯某个历史数据当时的计算依据。
计算规则脚本1217和1218由计算规则脚本生成模块1225实际生成,供具体应用系统1219通过接口1223调用以解释或编译的形式执行计算规则。脚本的形式表达参见图10。
具体应用系统1219是实际消费业务规则脚本1217、1218的应用系统,它通过计算规则脚本调用接口1223调用计算规则脚本1217、1218,有2种方式调用业务规则:
1)如果具体应用系统1219是编译型系统,则具体应用系统1219先通过计算规则脚本调用接口1223将业务规则脚本1217、1218编译为动态链接库,再动态链接到具体应用系统1219中。
2)如果具体应用系统1219是解释型系统,则具体应用系统1219通过计算规则脚本调用接口1223直接调用业务规则脚本1217、1218解释执行。
计算项数据接口1221负责识别计算规则脚本1217、1218中的各计算项实例,因此计算项1215的“读”“写”脚本名属性值必须与计算项数据接口1221一致。
条件项数据接口1222负责识别计算规则脚本1217、1218中的各条件项实例,因此条件项1212的脚本名属性值必须与条件项数据接口1222一致。
计算规则脚本调用接口1223负责解释执行或编译执行计算规则脚本1217、1218。
这样实现的计算规则可视化配置系统有如下优点:
1)业务人员直接管理计算规则;
2)自然语言表达;
3)计算规则管理与具体应用系统松耦合,容易维护;
附图说明
图1是计算规则硬编码在计算模块中示意图
图2是计算规则类结构示意图
图3是逻辑规则配置界面示意图
图4是逻辑规则配置界面示例
图5是数学规则配置界面示意图
图6是数学规则配置界面示例
图7是计算规则的自然语言表达示意图
图8是计算规则的自然语言表达示例
图9是计算规则脚本生成逻辑的伪码表达
图10是计算规则脚本示意图
图11是计算规则脚本示例
图12是计算规则可视化配置系统结构示意图
图13是计算规则可视化配置系统的使用步骤示意图
具体实施方式
计算规则存储模块1204负责计算规则的持久化保存,可用任何能持久保存数据的机制实现,包括但不限于关系型数据库、面向对象数据库、XML数据库、文件型数据库、甚至文件。
计算规则脚本1217、1218可生成为任何使用该脚本的其它具体应用系统1219能识别的语言,包括但不限于Java、C#、Ruby、PHP等常见语言。生成的脚本保存为普通的文本文件,供其它应用系统1219调用来解释或编译执行。
计算规则可视化配置系统1201以一系列可视化过程最终生成计算规则脚本为目的,应实现为独立系统,不要与使用计算规则脚本的其它具体应用系统1219发生超出条件项数据接口1222、计算项数据接口1221和脚本调用接口1223范围以外的耦合。
计算规则可视化配置系统1201基于通用体系结构的计算机系统实现,其可执行代码保存于计算机系统的硬盘,加电启动后表现为寄存器中的一系列计算机指令,控制计算机系统经过一系列可视化配置过程最终生成计算规则脚本。
计算规则可视化配置系统1201可用多种计算机语言实现,包括但不限于Java、C#、Ruby、PHP等常见语言。可实现为B/S结构、C/S结构或单纯客户端,情况如下:
1)如果实现为B/S结构,则B端实现逻辑规则可视化配置界面1205和数学规则可视化配置界面1206,S端实现计算规则业务逻辑1203和计算规则存储1204,计算规则脚本1217和1218也在S端生成。这样业务人员就可以在远离服务器的任何地方通过互联网配置和修改计算规则。
2)如果实现为C/S结构,则C端实现逻辑规则可视化配置界面1205和数学规则可视化配置界面1206,计算规则配置逻辑1203全部放在C端或S端、或混合放在C端和S端实现,S端实现计算规则存储1204,计算规则脚本1217、1218在C端或S端生成。与用B/S结构实现相比,用C/S结构实现给计算规则管理人员带来更顺畅的交互体验,但也带来了需要提前安装C端的麻烦,而且业务人员也必须在专门的计算机上通过专门的服务器连接配置计算规则,不再像B/S实现那样方便。
3)如果实现为单纯客户端,则计算规则配置界面1202、计算规则配置逻辑1203和计算规则存储1204全部放在客户端,计算规则配置人员的配置体验最好,但又增添了必须提前在指定计算机上安装系统的麻烦,并且计算规则脚本1217、1218只能在客户端生成,还增加了向使用该计算规则脚本的具体应用系统1219的服务器上传计算规则脚本1217、1218的麻烦。
逻辑规则配置界面(图3)在实现时,应注意随着“插入”“删除”等修改操作的多次进行,可能会从语法上出现错误,因此在每形成一行逻辑规则时,下方的“自然语言”311区域应自动把对应的自然语言显现出来以方便规则配置者直观地差错,同时“生成脚本”按钮中应包含语法错误检查能力,在生成脚本同时检查并提示语法错误。
图4是一个电子商务中计算会员积分的逻辑规则配置界面示例,它表现的逻辑规则用自然语言表述为:
如果((会员积分>60)或者((优惠活动==是)并且(买家好评数>15)))
则执行积分数学规则
否则什么也不做
对应的脚本片段为:
图6是图4那个电子商务中会员积分的数学规则配置界面示例,它表现的数学规则用自然语言表述为:
优惠券金额=优惠券数量×优惠券面额;
成交价格=标准价格×0.7-优惠券金额;
会员积分=会员积分+Round(成交价格);
对应的脚本片段为:
CouponMoney=ReadCouponNumber()*ReadCouponParValue();
WriteCouponMoney(CouponMoney);
BargainPrice=ReadStandardPrice()*0.7-CouponMoney;
WriteBargainPrice(BargainPrice);
MemberCumulativePoint=ReadMemberCumulativePoint()+Round(BargainPrice);
WriteMemberCumulativePoint(MemberCumulativePoint);
图8是用树形控件呈现的图4那个电子商务中会员积分的计算规则的完整自然语言表达。
图11是与图8对应的、按图9的逻辑生成的计算规则脚本。
参考图13,计算规则可视化配置系统1201的使用步骤如下:
1)步骤1301:分析具体应用系统1219中的计算规则,抽象出条件项数据接口1222、计算项数据接口1221和计算规则脚本调用接口1223,并实现这些接口。
2)步骤1302:按条件项和数据项数据接口1222、1221,在计算规则可视化配置系统1201的数据存储1204中增加条件项207、1212和计算项211、1215实例。条件项207、1212实例有显示名和脚本名2个属性,脚本名与条件项数据接口1222一致。计算项211、1215有显示名、读脚本名和写脚本名3个属性,读和写脚本名与计算项数据接口1221一致。
3)步骤1303:用计算规则可视化配置系统1201配置计算规则。
4)步骤1304:用计算规则可视化配置系统1201生成计算规则脚本1217、1218。
5)步骤1305:具体应用系统1219通过调用接口1223调用计算规则脚本1217、1218,执行计算规则。
Claims (25)
1.一种计算规则可视化管理和表示方法,包括:
a)计算规则业务类结构设计
b)逻辑规则可视化配置方法和界面设计
c)数学规则可视化配置方法和界面设计
d)计算规则的自然语言表达和界面设计
e)计算规则脚本的生成方法
f)计算规则系统与使用计算规则的具体应用系统松耦合的方法
g)版本控制和追踪方法。
2.如权利要求1a)所述的方法,其特征在于:
a)“计算规则”类201,由“逻辑规则”202和“数学规则”203组成,基本属性包括规则名称、规则版本号以及该规则下属的“逻辑规则”实例组和“数学规则”实例组。
b)“逻辑规则”类202,由一系列“如果”和“则”组成,基本属性包括规则名称、该规则下属的“如果”实例组。
c)“如果”类204,用来表达逻辑条件,是逻辑分支的入口,基本属性包括脚本名、显示名、“条件项三元组”实例组和1个“则”实例。
d)“条件项三元组”类206,用来表达逻辑条件表达式,基本属性包括左“条件项”实例、“逻辑关系”实例、右“条件项”实例和自嵌套的“条件项三元组”实例组。
e)“条件项”类207,基本属性包括脚本名和显示名,实例取值与具体应用系统相关,要与具体应用系统提供的条件项数据接口一致。其中,脚本名是生成脚本时该“条件项”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“条件项”实例的自然语言表示。
f)“逻辑关系”类208,用来表达“条件项三元组”206中左右条件项之间的逻辑关系,基本属性包括脚本名和显示名,各实例的对应取值分别为:(“==”,“等于”)、(“!=”,“不等于”)、(“>”,“大于”)、(“>=”,“大于等于”)、(“<”,“小于”)、(“<=”,“小于等于”)、(“&&”,“并且”)、(“||”,“或者”)。其中,脚本名是生成脚本时该“逻辑关系”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“逻辑关系”实例的自然语言表示。
g)“则”类205,用来表示一个“如果”逻辑分支条件204成立时应执行的动作,基本属性包括“逻辑规则”实例、“数学规则”实例、“异常”实例,这3个属性互斥,意即一个“则”实例中只能有这3个实例中的一个实例存在,其它实例为空,或者3个实例都为空。如果只有“逻辑规则”实例存在,“则”表示“执行该逻辑规则实例”;如果只有“数学规则”实例存在,“则”表示“执行该数学规则实例”;如果只有“异常”实例存在,“则”表示“抛出异常”;如果3个实例都为空,“则”表示“什么也不做”;
h)“异常”类209,用来表示某个逻辑分支要抛出的异常信息,基本属性就是要抛出的异常信息内容。
i)“数学规则”类203,基本属性包括数学规则名称、“计算项三元组”实例组。其中,“计算项三元组”实例用来表达形如“计算项A=计算项B×计算项C+function(计算 项D)”这样的数学表达式。
j)“计算项三元组”类210,基本属性包括左“计算项”实例、右“计算项”实例、“数学运算符”实例、自嵌套的“计算项三元组”实例组。其中前3个属性用来表达形如“左计算项÷右计算项”这样的数学表达式,而自嵌套的“计算项三元组”实例组用来表达数学表达式的各种复杂组合,如:(计算项1+计算项2)÷计算项3。
k)“计算项”类211,基本属性包括“读”脚本名、“写”脚本名、显示名,实例的取值与具体应用系统有关,要与具体应用系统提供的计算项数据接口一致。其中,“读”脚本名是生成脚本时该“计算项”实例位于“赋值”符号右边时在脚本中的程序语言表示,“写”脚本名是生成脚本时该“计算项”实例位于“赋值”符号左边时在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“计算项”实例的自然语言表示。
l)“数学运算符”类212,基本属性包括脚本名、显示名,其中,脚本名是生成脚本时该“数学运算符”实例在脚本中的程序语言表示,显示名是在计算规则可视化配置界面中该“数学运算符”实例的自然语言表示。分为“一元运算符”和“二元运算符”2类。如果是“一元运算符”实例,则“计算项三元组”只有左“计算项”实例,并且在生成脚本时“一元运算符”在前,“计算项”在后,即生成的脚本形如“function(计算项)”。如果是“二元运算符”实例,则在生成脚本时,左“计算项”在前,“二元运算符”在中,右“计算项”在后,即生成的脚本形如“(计算项A÷计算项B)”。
3.如权利要求2c)所述的方法,其特征在于:
“如果”类204的脚本名属性是生成脚本时该“如果”实例在脚本中的脚本语言表示,显示名属性是在计算规则可视化配置界面中该“如果”实例的自然语言表示。
4.如权利要求2c)所述的方法,其特征在于:
“如果”类204有3个实例,以(脚本名,显示名)的形式表示分别是:
1)(“if”,“如果”)
2)(“else if”,“否则如果”)
3)(“”,“则”)
4)(“else”,“否则”)。
5.如权利要求2d)所述的方法,其特征在于:
“条件项三元组”类206的前3个基本属性包括左“条件项”实例、“逻辑关系”实例、右“条件项”实例,合作表达形如“(左条件项1等于右条件项1)”这样的逻辑条件表达式,而最后一个属性自嵌套的“条件项三元组”实例组用来表达形如“((左条件项1等于右条件项1)或者(左条件项2大于右条件项2))并且(左条件项3小于右条件项3)”这样的条件表达式的各种复杂组合。
6.如权利要求1b)所述的方法,其特征在于:
逻辑规则配置界面至少由一个配置表格300、一个“保存”按钮309和一个“生成脚本”按钮310组成。表格300的列至少包括“插入/删除行”列307和308、“逻辑符”列302、“左条件项”列303、“关系符”列304、“右条件项”列305。表格的行数根据界面高度定,可调整。
7.如权利要求6所述的方法,其特征在于:
在“插入/删除行”列307和308,每行有一个“插入行”307和一个“删除行”308按钮,用来点击后新插入一个空白行,或删除当前行,以方便修改逻辑规则。
8.如权利要求6所述的方法,其特征在于:
在“逻辑符”列302,每个单元格都是下拉框,点击后下拉显示可选的逻辑符号。可选的逻辑符号来自“如果”类204和“逻辑关系”类208的实例,包括“如果”、“则”、“否则”、“否则如果”、“并且”、“或者”、“(”、“)”。点击选中后该符号出现在该单元格。
9.如权利要求6所述的方法,其特征在于:
在“左条件项”列303,每个单元格都是下拉框,点击后下拉显示可选的左条件项,点击选中后该条件项名称出现在该单元格。如果前一个“逻辑符”单元格选中的是“如果”、“否则如果”、“并且”、“或者”、“(”、“)”,则本“左条件项”下拉框提供各条件项实例选项供选择,此时可选的左条件项选项与具体应用系统1219相关,名称与具体应用系统1219提供的条件项数据接口1222一致。如果前一个“逻辑符”单元格选中的是“否则”或“则”,则本“左条件项”下拉框选项来自“则”类205的实例,包括“执行逻辑规则”、“执行数学规则”、“抛出异常”、“什么也不做”。
10.如权利要求6所述的方法,其特征在于:
在“关系符”列304,每个单元格都是下拉框,点击后下拉显示可选的关系符号。可选的关系符号来自“逻辑关系”类208的实例,包括“大于”、“大于等于”、“小于”、“小于等于”、“等于”、“不等于”。点击选中后该符号出现在该单元格。
11.如权利要求6所述的方法,其特征在于:
在“右条件项”列305,每个单元格都是下拉框,点击后下拉显示可选的右条件项,点击选中后该条件项名称出现在该单元格。可选的右条件项与具体应用系统1219相关,名称与具体应用系统1219提供的条件项数据接口1222一致。
12.如权利要求6所述的方法,其特征在于:
表格300的最后一行放置刚配置的逻辑规则的自然语言表达310和对应的程序脚本311。
13.如权利要求6所述的方法,其特征在于:
点击“保存”按钮309可保存配置的逻辑规则。点击“生成脚本”按钮310可生成刚配置的逻辑规则的自然语言表达310和对应的程序脚本311。
14.如权利要求1c)所述的方法,其特征在于:
数学规则配置界面至少由一个配置表格500、一个“保存”按钮503和一个“生成脚本”按钮504组成,表格的列数和行数根据界面大小定,可调整,表格中的每个单元格都是下拉框。
15.如权利要求14所述的方法,其特征在于:
第一个单元格502下拉有一元运算符213实例、“(”、“)”和计算项211实例供选择。可选的计算项与具体应用系统1219相关,名称与具体应用系统1219提供的计算项数据接口1221一致。
16.如权利要求14所述的方法,其特征在于:
从第二个单元格起,下拉框提供的选项内容根据前一个单元格的选择决定,即:
1)如果前一个单元格内容是计算项,则当前单元格下拉有二元运算符214实例和“(”、“)”供选择;
2)如果前一个单元格内容是一元运算符213实例,则当前单元格下拉有计算项211实例和“(”、“)”供选择;
3)如果前一个单元格内容是二元运算符214实例,则当前单元格下拉有一元运算符213实例、计算项211实例和“(”、“)”供选择;
4)如果前一个单元格内容是“(”,则当前单元格下拉有一元运算符213实例、计算项211实例和“(”供选择;
5)如果前一个单元格内容是“)”,则当前单元格下拉有二元运算符214实例和“)”供选择。
17.如权利要求14所述的方法,其特征在于:
在任何一个单元格上点击鼠标右键可弹出菜单提供“插入单元格”选项供选择,点选后可在已配置好的数学规则中间制定位置插入新计算项或数学运算符。
18.如权利要求14所述的方法,其特征在于:
表格500的最后一行放置刚配置的数学规则的自然语言表达505和对应的程序脚本506。
19.如权利要求14所述的方法,其特征在于:
点击“保存”按钮503可保存配置的数学规则。点击“生成脚本”按钮504可生成刚配置的数学规则的自然语言表达505和对应的程序脚本506。
20.如权利要求1d)所述的方法,其特征在于:
以树结构用自然语言表达计算规则。有逻辑规则名或数学规则名出现的节点是可伸缩节点,点击“+”可展开看规则详细,点击“-”可收缩规则到只剩一个规则名。树中每个节点都表示计算规则中一个用自然语言表达的逻辑语句或赋值语句。逻辑语句以“如果”、“则”、“否则”、“否则如果”开头,赋值语句以“计算项=”开头。
21.如权利要求1e)所述的方法,其特征在于:
在计算规则可视化配置界面中出现的可配置元素除计算项211外都有脚本名和显示名2个属性,显示名就是元素在配置界面中以自然语言呈现的名字,脚本名则是在生成计算规则脚本时呈现的脚本符号。而计算项211则有“读”脚本名、“写”脚本名、显示名3个属性,“读”脚本名是在生成数学规则脚本时呈现的脚本符号,“写”脚本名是将计算结果写回具体应用系统数据存储1220的接口脚本。
生成的总脚本,以计算规则名命名,并带有版本标志,用来对版本进行追踪。
22.如权利要求1e)所述的方法,其特征在于:
计算规则脚本生成逻辑的伪码表达与图9相同。
23.如权利要求1f)所述的方法,其特征在于:
计算规则配置系统1201与使用计算规则脚本的其它具体应用系统1219不发生超出条件项数据接口1222、计算项数据接口1221和脚本调用接口1223范围以外的耦合。
24.如权利要求1f)所述的方法,其特征在于:
当需要为计算规则配置系统1201动态增加新的计算项211和条件项207时,只需在计算规则数据存储1204的计算项数据表和条件项数据表中增加新记录,关键是其中的脚本名应与具体应用相关。
25.如权利要求1g)所述的方法,其特征在于:
计算规则存于计算规则数据存储1204中,并有对应的版本号标识,同一计算规则不同时期的修改留下不同版本号标识,在生成的计算规则脚本中也有版本标记。在使用该脚本进行实际计算时,写入具体应用系统1219的计算结果要留下版本标记,以便在需要时从计算规则配置系统1201中准确回溯当时所使用的那个版本的计算规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210269710.5A CN103577174A (zh) | 2012-08-01 | 2012-08-01 | 一种计算规则脚本的可视化生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210269710.5A CN103577174A (zh) | 2012-08-01 | 2012-08-01 | 一种计算规则脚本的可视化生成方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103577174A true CN103577174A (zh) | 2014-02-12 |
Family
ID=50049028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210269710.5A Pending CN103577174A (zh) | 2012-08-01 | 2012-08-01 | 一种计算规则脚本的可视化生成方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577174A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866310A (zh) * | 2015-05-20 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 知识数据的处理方法和系统 |
CN105894193A (zh) * | 2016-03-31 | 2016-08-24 | 中国银行股份有限公司 | 一种指标配置方法和装置 |
CN106155668A (zh) * | 2015-04-18 | 2016-11-23 | 成都复晓科技有限公司 | 一种宏语言的图形化表达方法 |
CN107145532A (zh) * | 2017-04-18 | 2017-09-08 | 北京思特奇信息技术股份有限公司 | 一种流数据的实时分析处理方法及系统 |
CN110019177A (zh) * | 2017-07-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 规则存储的方法和装置 |
CN110045953A (zh) * | 2019-04-22 | 2019-07-23 | 第四范式(北京)技术有限公司 | 生成业务规则表达式的方法及计算装置 |
CN110187874A (zh) * | 2019-05-13 | 2019-08-30 | 第四范式(北京)技术有限公司 | 一种在计算机设备中执行的规则配置方法及装置 |
CN110688172A (zh) * | 2019-09-27 | 2020-01-14 | 南京博联智能科技有限公司 | 设备功能互斥逻辑配置方法、装置、电子设备及存储介质 |
CN111966342A (zh) * | 2020-08-10 | 2020-11-20 | 上海中通吉网络技术有限公司 | 基于类自然语言的规则配置与解析方法、系统及设备 |
CN112395268A (zh) * | 2020-11-12 | 2021-02-23 | 中国人寿保险股份有限公司 | 一种复杂条件规则的可视化配置方法和装置 |
CN112529425A (zh) * | 2020-12-15 | 2021-03-19 | 中国人寿保险股份有限公司 | 可视化业务指标配置方法、系统和电子设备 |
CN113435958A (zh) * | 2021-05-31 | 2021-09-24 | 一汽资本控股有限公司 | 一种高效的产品配置方法及装置 |
CN113986241A (zh) * | 2021-10-25 | 2022-01-28 | 北京元年科技股份有限公司 | 一种基于知识图谱的业务规则的配置方法以及装置 |
US11321525B2 (en) | 2019-08-23 | 2022-05-03 | Micro Focus Llc | Generation of markup-language script representing identity management rule from natural language-based rule script defining identity management rule |
US11494558B2 (en) | 2020-01-06 | 2022-11-08 | Netiq Corporation | Conversion of script with rule elements to a natural language format |
CN115545006A (zh) * | 2022-10-10 | 2022-12-30 | 清华大学 | 规则脚本生成方法、装置、计算机设备及介质 |
-
2012
- 2012-08-01 CN CN201210269710.5A patent/CN103577174A/zh active Pending
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155668A (zh) * | 2015-04-18 | 2016-11-23 | 成都复晓科技有限公司 | 一种宏语言的图形化表达方法 |
CN106155668B (zh) * | 2015-04-18 | 2019-03-01 | 成都复晓科技有限公司 | 一种宏语言的图形化表达方法 |
CN104866310A (zh) * | 2015-05-20 | 2015-08-26 | 百度在线网络技术(北京)有限公司 | 知识数据的处理方法和系统 |
CN104866310B (zh) * | 2015-05-20 | 2018-07-13 | 百度在线网络技术(北京)有限公司 | 知识数据的处理方法和系统 |
CN105894193A (zh) * | 2016-03-31 | 2016-08-24 | 中国银行股份有限公司 | 一种指标配置方法和装置 |
CN107145532A (zh) * | 2017-04-18 | 2017-09-08 | 北京思特奇信息技术股份有限公司 | 一种流数据的实时分析处理方法及系统 |
CN110019177A (zh) * | 2017-07-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 规则存储的方法和装置 |
CN110045953A (zh) * | 2019-04-22 | 2019-07-23 | 第四范式(北京)技术有限公司 | 生成业务规则表达式的方法及计算装置 |
CN110045953B (zh) * | 2019-04-22 | 2023-12-01 | 第四范式(北京)技术有限公司 | 生成业务规则表达式的方法及计算装置 |
CN110187874A (zh) * | 2019-05-13 | 2019-08-30 | 第四范式(北京)技术有限公司 | 一种在计算机设备中执行的规则配置方法及装置 |
CN110187874B (zh) * | 2019-05-13 | 2023-12-15 | 第四范式(北京)技术有限公司 | 一种在计算机设备中执行的规则配置方法及装置 |
US11321525B2 (en) | 2019-08-23 | 2022-05-03 | Micro Focus Llc | Generation of markup-language script representing identity management rule from natural language-based rule script defining identity management rule |
CN110688172B (zh) * | 2019-09-27 | 2023-11-03 | 南京博联智能科技有限公司 | 设备功能互斥逻辑配置方法、装置、电子设备及存储介质 |
CN110688172A (zh) * | 2019-09-27 | 2020-01-14 | 南京博联智能科技有限公司 | 设备功能互斥逻辑配置方法、装置、电子设备及存储介质 |
US11494558B2 (en) | 2020-01-06 | 2022-11-08 | Netiq Corporation | Conversion of script with rule elements to a natural language format |
CN111966342A (zh) * | 2020-08-10 | 2020-11-20 | 上海中通吉网络技术有限公司 | 基于类自然语言的规则配置与解析方法、系统及设备 |
CN112395268A (zh) * | 2020-11-12 | 2021-02-23 | 中国人寿保险股份有限公司 | 一种复杂条件规则的可视化配置方法和装置 |
CN112529425A (zh) * | 2020-12-15 | 2021-03-19 | 中国人寿保险股份有限公司 | 可视化业务指标配置方法、系统和电子设备 |
CN113435958A (zh) * | 2021-05-31 | 2021-09-24 | 一汽资本控股有限公司 | 一种高效的产品配置方法及装置 |
CN113986241A (zh) * | 2021-10-25 | 2022-01-28 | 北京元年科技股份有限公司 | 一种基于知识图谱的业务规则的配置方法以及装置 |
CN113986241B (zh) * | 2021-10-25 | 2022-09-16 | 北京元年科技股份有限公司 | 一种基于知识图谱的业务规则的配置方法以及装置 |
CN115545006A (zh) * | 2022-10-10 | 2022-12-30 | 清华大学 | 规则脚本生成方法、装置、计算机设备及介质 |
CN115545006B (zh) * | 2022-10-10 | 2024-02-13 | 清华大学 | 规则脚本生成方法、装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577174A (zh) | 一种计算规则脚本的可视化生成方法和系统 | |
AU2018281314B2 (en) | Integrated system for rule editing, simulation, version control, and business process management | |
US8930337B2 (en) | Mapping dataset elements | |
US9311221B2 (en) | Recording program execution | |
CA2819008C (en) | Method and system for displaying selectable autocompletion suggestions and annotations in mapping tool | |
CN102576363A (zh) | 扩展商业智能系统的形式和功能的基于内容的方法 | |
US20110161371A1 (en) | Sql generation | |
US20120041990A1 (en) | System and Method for Generating Dashboard Display in Software Applications | |
US20090144186A1 (en) | Financial Product Design and Implementation | |
CN111369227A (zh) | 敏捷开发中用户故事管理方法和装置 | |
US20190392349A1 (en) | Simplified product configuration using table-based rules, rule conflict resolution through voting, and efficient model compilation | |
CN110837362A (zh) | 向导式可视的图形模块化的规则编辑方法、系统及编辑器 | |
CN109978392A (zh) | 敏捷软件开发管理方法、装置、电子设备、存储介质 | |
US8296726B2 (en) | Representation of software application functionality | |
JP2008140095A (ja) | 意思決定支援システム | |
CN117609102B (zh) | 一种建筑产业互联网造数平台系统测试方法 | |
Fuchs et al. | MMQL—A language for multi-model linking and filtering | |
US11733847B2 (en) | Knowledge engine auto-generation of guided flow experience | |
Keijzer | More Work: Building Analytical Queries Using Tiles | |
Bobak | Plant Use Case: Analytical Functions | |
CN116301812A (zh) | 一种基于甘特图的链式图元设计方法 | |
Yu | Automated Visualization of Input/Output for Processes in SOFL Formal Specifications | |
Liew | e-Scientific Calculator/Liew Chee Kit | |
Babenko | Analyses and improvements of business processes with IT: Development pipeline for small business software solutions | |
Olausson et al. | Managing the Release Process |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140212 |