CN105653268A - 规则引擎调试方法及*** - Google Patents
规则引擎调试方法及*** Download PDFInfo
- Publication number
- CN105653268A CN105653268A CN201511000386.7A CN201511000386A CN105653268A CN 105653268 A CN105653268 A CN 105653268A CN 201511000386 A CN201511000386 A CN 201511000386A CN 105653268 A CN105653268 A CN 105653268A
- Authority
- CN
- China
- Prior art keywords
- rule
- analog
- engine
- business
- write
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种规则引擎调试方法,所述方法包括:根据业务专家提出业务规则,预先编写模拟规则;将所述模拟规则转换成规则引擎支持的规则;将规则传入规则引擎中执行;取得执行结果。本发明还公开了一种规则引擎调试***,提供了一个编写以及调试并验证JBoss?Drools规则的技术,通过本发明实施例,技术人员可以方便的进行规则编写、调试、对代码进行规范化管理,不仅提高了开发效率,还保证了规则运行的正确性。
Description
技术领域
本发明涉及航空技术领域,尤其涉及一种规则引擎调试方法及***。
背景技术
传统的IT技术旨在提供企业处理信息的能力,随着企业信息化程度的提高,传统的IT架构模式已经不能满足企业的需求,在企业的经营中产生许多业务规则,通过规则引擎来执行这些规则,满足企业灵活快速的商业要求。对于IT***而言,规则的编写和管理成为了企业重点关注的问题。
规则的表现形式和表达能力依托于特定的规则引擎***。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写规则。不同的规则引擎所支持的规则种类和方式也不同,通常来划分,可以分为技术规则、决策表规则、类自然语言商务规则。
技术规则是使用的是底层编程语言的规则脚本,主要用于为决策表规则和类自然语言商务规则提供数据准备和后处理,一般是后台的开发人员所使用。
决策表规则是一种呈表格状的图形工具,用于描述处理判断条件较多,各条件又相互组合、有多种决策方案的情况。在规则引擎内部中通常会将决策表的每行都映射成为一条技术规则。
类自然语言商务规则是通过映射关系,将程序片段映射成为自然语言,程序中变量展示成输入框,通过“如果/那么”的形式展现。类自然语言规则可以动态配置条件内容,认为是比决策表更灵活,可以面向商务人员的一种技术规则变形。
在民航多旅游产品的动态打包平台中,选用的规则引擎是JBossDrools开源规则引擎,在实际使用中应用了大量的技术规则,这些规则以类Java语言的文件形式进行组织。然而在项目程序的管理上,技术规则和Java程序相比存在着一些缺陷,不能很好地支持企业级应用管理,其缺陷如下:1)技术规则命名空间不能严格地按照包名+规则名进行命名,按照目录/文件进行保存;2)技术规则书写随意,在编写时不能进行编译前语法检查,只能通过运行发现错误;3)传统Java开发环境(例如Eclipse)不支持对技术规则进行语法检查和语法辅助,开发效率低下;4)技术规则代码无法通过代码优化工具(例如Sonar)发现规则编写的代码质量问题;5)部分规则文件无法进行调试。
本发明要解决的技术问题是充分利用Java语言的成熟开发体系,通过规则引擎模拟执行、Java注解技术建立一套Java-Rule规范定义,在开发过程中直接编写Java代码,在测试通过后,利用翻译程序生成对应技术规则。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种规则引擎调试方法及***。
为达到上述目的,本发明实施例的技术方案是这样实现的:
一种规则引擎调试方法,所述方法包括:
根据业务专家提出业务规则,预先编写模拟规则;
将所述模拟规则转换成规则引擎支持的规则;
将规则传入规则引擎中执行;
取得执行结果。
其中,所述规则引擎使用的是JBossDrools。
其中,根据业务规则以及预先规定的代码格式,将所述业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
其中,所述编写模拟规则使用的规则模拟器采用Java的反射技术,通过反射动态调用指定类。
其中,所述将模拟规则转换成规则引擎支持的规则,包括:模拟规则生成器通过Annotation标识模拟规则中的属性基于代码转换技术将模拟规则翻译成具体的规则。
一种规则引擎调试***,所述***包括:
编写模块,用于根据业务专家提出业务规则,预先编写模拟规则;
转换模块,用于将所述模拟规则转换成规则引擎支持的规则;
执行模块,用于将所述规则引擎支持的规则传入规则引擎中执行;
结果模块,用于取得执行结果。
其中,所述规则引擎使用的是JBossDrools。
其中,所述编写模块,用于预先编写模拟规则包括:根据业务规则以及预先规定的代码格式,将所述业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
其中,所述编写模块,用于预先编写模拟规则包括:所述编写模拟规则使用的规则模拟器采用Java的反射技术,通过反射动态调用指定类。
其中,所述转换模块,用于将所述模拟规则转换成规则引擎支持的规则,包括:模拟规则生成器通过Annotation标识模拟规则中的属性基于代码转换技术将模拟规则翻译成具体的规则。
本发明实施例提供了一个编写以及调试并验证JBossDrools规则的技术,通过本发明实施例,技术人员可以方便的进行规则编写、调试、对代码进行规范化管理,不仅提高了开发效率,还保证了规则运行的正确性。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例规则引擎调试方法的流程示意图;
图2为本发明实施例规则引擎调试方法实际应用的实现过程示意图;
图3为本发明实施例Java语言的反射机制示意图;
图4为本发明实施例调试模式示意图。
具体实施方式
本发明实施例解决的技术问题是提供一种以JBossDrools规则的调试、自动生成技术,利用模拟规则引擎的执行、注解技术,可以实现对规则的调试以及动态生成。
如图1所示,本发明实施例的规则引擎调试方法可以包括如下步骤:
步骤101:业务专家提出业务规则;
步骤102:技术人员在该技术平台中编写模拟规则,调试并规范代码;
步骤103:将模拟规则转换成规则引擎支持的规则;
步骤104:将规则传入规则引擎中执行;
步骤105:传入输入,取得执行结果。
实际应用中,本发明实施例包括如图2所示的设计阶段和运行阶段。
下面对本发明的核心内容进行详细说明:
首先,本发明实施例要求规则引擎使用的是JBossDrools,业务专家通过业务抽象,将企业的业务转换成业务规则,通常以表格的形式提供,比如有机票销售中的机票促销业务,如下表1所示。
序号 | 出发地 | 到达地 | 折扣 |
1 | 北京 | 上海 | 5% |
2 | 上海 | 广州 | 10% |
3 | 海口 | 北京 | 15% |
表1
有了业务规则描述之后,技术人员就通过本发明编写模拟规则,并调试,运,如下表2代码所示。
表2
根据业务规则以及本发明要求的代码格式,将业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
在上一步基础之上,在测试正确之后,将上面的规则模拟代码生成能够在规则引擎中运行的代码。
表3
如上表3中的就是规则文件,可以在规则引擎中执行,当传入的数据是PEK-SHA的时候,折扣就设置为0.05。
通过本发明实施例,实现了规则的调试以及正确性验证等功能,将本发明实施例应用在民航多旅游产品的动态打包平台中,最终实现了目标需求,保证了规则引擎在业务***中的完备使用。
本发明实施例的核心内容为通过模拟规则进行调试以及代码格式化和模拟规则生成具体的规则这两部分。通过本发明实施例,开发人员通过编写模拟规则,调试验证之后再通过本发明实施例的方案生成规则引擎中能运行的规则,最终保证规则的正确性以及完备性。
规则模拟器的整体定义如下:该模块用到了Java的反射技术,通过反射动态调用指定类,而无需去手动的指定。这里,反射技术主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制,具体过程如图3所示。
按照本发明实施例要求的框架编写规则,如下表4所示。
表4
其中,模拟规则中的When中部分代码,需要在扩展规则引擎中运行,得到运行结果,如果是True,则执行与该When对应的Then。Then执行完了,去检查队列中还有没有未执行完的模拟规则,如果有继续执行,如果没有,则退出。
本发明实施例的具体流程如下:
首先,业务人员提出业务规则,如下表5所示。
序号 | 出发地 | 到达地 | 折扣 |
1 | 北京 | 上海 | 5% |
2 | 上海 | 广州 | 10% |
3 | 海口 | 北京 | 15% |
表5
第二,技术人员编写模拟规则,如下表6所示;
表6
第三,测试、调试、并校验代码的格式以及正确性,调试模式如图4所示。
这里,通过checkstyle等静态代码检查工具,检查代码的规范性。通过以上的步骤,保证了代码的正确性以及规范性。
本发明实施例有对外的API,提供给外面调用,如下表7所示。
表7
第四,模拟规则生成器将模拟规则生成具体的规则。
模拟规则生成器具体的定义如下:该功能主要是通过Annotation标识模拟规则中的属性,然后通过代码转换技术,将模拟规则翻译成具体的规则。
第五,生成的规则传入规则引擎加载、编译并执行,如下表8所示;
表8
最后,通过以下通用代码,将上一步生成的规则传入规则引擎,最终执行,获得返回结果,过程如下表9所示。
表9
针对规则引擎的应用,本发明实施例设计了一套调用流程,如上述代码所示,在response()方法体中,从规则引擎中取得返回值。
本发明实施例还提供了一种规则引擎调试***,所述***包括:
编写模块,用于根据业务专家提出业务规则,预先编写模拟规则;
转换模块,用于将所述模拟规则转换成规则引擎支持的规则;
执行模块,用于将所述规则引擎支持的规则传入规则引擎中执行;
结果模块,用于取得执行结果。
其中,所述规则引擎使用的是JBossDrools。
其中,所述编写模块,用于预先编写模拟规则包括:根据业务规则以及预先规定的代码格式,将所述业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
其中,所述编写模块,用于预先编写模拟规则包括:所述编写模拟规则使用的规则模拟器采用Java的反射技术,通过反射动态调用指定类。
其中,所述转换模块,用于将所述模拟规则转换成规则引擎支持的规则,包括:模拟规则生成器通过Annotation标识模拟规则中的属性基于代码转换技术将模拟规则翻译成具体的规则。
本发明实施例的优点是提供了一个编写以及调试并验证JBossDrools规则的技术,通过本发明实施例,技术人员可以方便的进行规则编写、调试、对代码进行规范化管理,不仅提高了开发效率,还保证了规则运行的正确性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种规则引擎调试方法,其特征在于,所述方法包括:
根据业务专家提出业务规则,预先编写模拟规则;
将所述模拟规则转换成规则引擎支持的规则;
将规则传入规则引擎中执行;
取得执行结果。
2.根据权利要求1所述的方法,其特征在于,所述规则引擎使用的是JBossDrools。
3.根据权利要求1或2所述的方法,其特征在于:根据业务规则以及预先规定的代码格式,将所述业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
4.根据权利要求1或2所述的方法,其特征在于,所述编写模拟规则使用的规则模拟器采用Java的反射技术,通过反射动态调用指定类。
5.根据权利要求1或2所述的方法,其特征在于,所述将模拟规则转换成规则引擎支持的规则,包括:模拟规则生成器通过Annotation标识模拟规则中的属性基于代码转换技术将模拟规则翻译成具体的规则。
6.一种规则引擎调试***,其特征在于,所述***包括:
编写模块,用于根据业务专家提出业务规则,预先编写模拟规则;
转换模块,用于将所述模拟规则转换成规则引擎支持的规则;
执行模块,用于将所述规则引擎支持的规则传入规则引擎中执行;
结果模块,用于取得执行结果。
7.根据权利要求1所述的***,其特征在于,所述规则引擎使用的是JBossDrools。
8.根据权利要求6或7所述的***,其特征在于,所述编写模块,用于预先编写模拟规则包括:根据业务规则以及预先规定的代码格式,将所述业务规则转换成模拟规则运行,并在Eclipse中进行代码调试以及格式规范。
9.根据权利要求6或7所述的***,其特征在于,所述编写模块,用于预先编写模拟规则包括:所述编写模拟规则使用的规则模拟器采用Java的反射技术,通过反射动态调用指定类。
10.根据权利要求1或2所述的***,其特征在于,所述转换模块,用于将所述模拟规则转换成规则引擎支持的规则,包括:模拟规则生成器通过Annotation标识模拟规则中的属性基于代码转换技术将模拟规则翻译成具体的规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000386.7A CN105653268A (zh) | 2015-12-28 | 2015-12-28 | 规则引擎调试方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511000386.7A CN105653268A (zh) | 2015-12-28 | 2015-12-28 | 规则引擎调试方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105653268A true CN105653268A (zh) | 2016-06-08 |
Family
ID=56476994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511000386.7A Pending CN105653268A (zh) | 2015-12-28 | 2015-12-28 | 规则引擎调试方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653268A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106990967A (zh) * | 2017-04-05 | 2017-07-28 | 百融(北京)金融信息服务股份有限公司 | 规则引擎的数据处理方法 |
CN107315611A (zh) * | 2017-06-26 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种应用***规则管理方法及装置 |
CN108509522A (zh) * | 2018-03-12 | 2018-09-07 | 石家庄金域医学检验所有限公司 | 规则的检测方法和装置 |
CN108920222A (zh) * | 2018-07-12 | 2018-11-30 | 北京京东金融科技控股有限公司 | 一种基于规则引擎的业务处理方法和装置 |
CN109710468A (zh) * | 2018-08-03 | 2019-05-03 | 北京马上慧科技术有限公司 | 一种基于blaze规则的引擎模拟测试*** |
CN110109830A (zh) * | 2019-04-23 | 2019-08-09 | 深圳行云创新科技有限公司 | 一种软件调试的管理方法、装置、***及存储介质 |
CN112379872A (zh) * | 2020-11-05 | 2021-02-19 | 上海汇付数据服务有限公司 | 一种规则引擎*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958987A (zh) * | 2009-07-14 | 2011-01-26 | 中国电信股份有限公司 | 电信业务数据动态转换的方法及其*** |
CN102360291A (zh) * | 2011-10-07 | 2012-02-22 | 云南爱迪科技有限公司 | 面向服务的基于业务规则引擎的业务规则设计方法 |
CN102768682A (zh) * | 2012-06-28 | 2012-11-07 | 用友软件股份有限公司 | 业务规则处理装置和业务规则处理方法 |
-
2015
- 2015-12-28 CN CN201511000386.7A patent/CN105653268A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958987A (zh) * | 2009-07-14 | 2011-01-26 | 中国电信股份有限公司 | 电信业务数据动态转换的方法及其*** |
CN102360291A (zh) * | 2011-10-07 | 2012-02-22 | 云南爱迪科技有限公司 | 面向服务的基于业务规则引擎的业务规则设计方法 |
CN102768682A (zh) * | 2012-06-28 | 2012-11-07 | 用友软件股份有限公司 | 业务规则处理装置和业务规则处理方法 |
Non-Patent Citations (2)
Title |
---|
凌晨 等: ""java注释类型和APT"", 《计算机***应用》 * |
李春芳 等: ""面向业务的Drools规则引擎改进"", 《计算机应用与软件》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106990967A (zh) * | 2017-04-05 | 2017-07-28 | 百融(北京)金融信息服务股份有限公司 | 规则引擎的数据处理方法 |
CN107315611A (zh) * | 2017-06-26 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种应用***规则管理方法及装置 |
CN108509522A (zh) * | 2018-03-12 | 2018-09-07 | 石家庄金域医学检验所有限公司 | 规则的检测方法和装置 |
CN108920222A (zh) * | 2018-07-12 | 2018-11-30 | 北京京东金融科技控股有限公司 | 一种基于规则引擎的业务处理方法和装置 |
CN108920222B (zh) * | 2018-07-12 | 2021-12-03 | 北京京东金融科技控股有限公司 | 一种基于规则引擎的业务处理方法和装置 |
CN109710468A (zh) * | 2018-08-03 | 2019-05-03 | 北京马上慧科技术有限公司 | 一种基于blaze规则的引擎模拟测试*** |
CN110109830A (zh) * | 2019-04-23 | 2019-08-09 | 深圳行云创新科技有限公司 | 一种软件调试的管理方法、装置、***及存储介质 |
CN112379872A (zh) * | 2020-11-05 | 2021-02-19 | 上海汇付数据服务有限公司 | 一种规则引擎*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653268A (zh) | 规则引擎调试方法及*** | |
CN111399853B (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
US9021440B1 (en) | System and method for automated test script generation | |
US8707263B2 (en) | Using a DSL for calling APIS to test software | |
US20160170864A1 (en) | Integrated automated test case generation for safety-critical software | |
CN103577168A (zh) | 测试用例创建***及方法 | |
Hepp et al. | The platin tool kit-the T-CREST approach for compiler and WCET integration | |
US20140143762A1 (en) | Symbolic execution of dynamic programming languages | |
US20130290075A1 (en) | Localization quality assurance of localized software | |
US9965252B2 (en) | Method and system for generating stateflow models from software requirements | |
US20160170714A1 (en) | Method and system of software specification modeling | |
CN104572463A (zh) | 测试接口信息的方法及装置 | |
CN103810090B (zh) | 核电站数字化规程安装调试验证的方法、升版方法和平台 | |
Ono et al. | Using Coq in specification and program extraction of Hadoop MapReduce applications | |
CN106095501A (zh) | 一种应用部署方法及装置 | |
CN107506190A (zh) | 基于Spring框架的XML文件修改方法及装置 | |
CN110442344A (zh) | 用于跨平台转换应用的方法、装置、***及介质 | |
CN110069736A (zh) | 页面加载方法及设备 | |
Seiger et al. | Test modeling for context-aware ubiquitous applications with feature petri nets | |
Muslim et al. | A modular and extensible framework for open learning analytics | |
CN106843822B (zh) | 一种执行代码生成方法及设备 | |
CN111324332A (zh) | 大数据任务的处理方法及***、电子设备、存储介质 | |
CN111143228A (zh) | 基于决策表法的测试代码生成方法及装置 | |
CN115934753A (zh) | 作业调度配置信息生成方法及其装置 | |
CN112988145B (zh) | 生成航空发动机软件架构的方法及航空发动机控制装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160608 |