CN117873468A - 一种基于规则引擎的代码生成系统及方法 - Google Patents
一种基于规则引擎的代码生成系统及方法 Download PDFInfo
- Publication number
- CN117873468A CN117873468A CN202311672915.2A CN202311672915A CN117873468A CN 117873468 A CN117873468 A CN 117873468A CN 202311672915 A CN202311672915 A CN 202311672915A CN 117873468 A CN117873468 A CN 117873468A
- Authority
- CN
- China
- Prior art keywords
- code generation
- rule
- code
- engine
- designer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000013461 design Methods 0.000 claims abstract description 30
- 230000000007 visual effect Effects 0.000 claims abstract description 9
- 238000009877 rendering Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000012800 visualization Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 5
- 238000012827 research and development Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于规则引擎的代码生成系统及方法,该系统包括代码生成前端设计器、解析器和代码生成模块,其中,代码生成前端设计器用以提供可视化操作平台,并为开发人员定义代码生成时的规则和逻辑;解析器用以保存、验证并解析代码生成前端设计器的设计结果,生成对应的规则配置数据结构和页面配置数据结构;代码生成模块用以将规则配置数据结构和页面配置数据结构进行动态模板替换,生成前后端代码。本发明通过规则引擎技术进行业务编码及代码逻辑的生成,提高了生成代码的实用价值,提高了研发人员的开发效率。
Description
技术领域
本发明涉及软件代码生成技术领域,尤其涉及一种基于规则引擎的代码生成系统及方法。
背景技术
现有技术中,代码生成的代码通常是基于模板技术或配置文件生成代码,从而减少手动编写重复性的代码工作,从而达到提高开发效率,保持代码一致性等目的。但因为模板的局限性,会使生成的代码缺乏可读性导致代码难以理解和调试,生成的代码可能依赖于特定的工具或框架。如果工具或框架发生变化或不再维护,那么生成的代码可能会变得无法使用或难以迁移。能够生成的代支持的场景和功能有限无法满足大多数业务场景的需求,无法加快项目的开发进度,无法达到代码生成器的目标。
发明内容
本发明的目的是提供一种基于规则引擎的代码生成系统及方法,以解决如何代码生成工具生成的代码无法满足复杂业务需求场景的技术问题。
本发明是采用以下技术方案实现的:一种基于规则引擎的代码生成系统,包括代码生成前端设计器、解析器和代码生成模块,其中,代码生成前端设计器用以提供可视化操作平台,并为开发人员定义代码生成时的规则和逻辑;解析器用以保存、验证并解析代码生成前端设计器的设计结果,生成对应的规则配置数据结构和页面配置数据结构;代码生成模块用以将规则配置数据结构和页面配置数据结构进行动态模板替换,生成前后端代码。
进一步的,所述代码生成前端设计器包括页面设计器,所述页面设计器提供可视化操作界面,用以创建和设计应用程序的用户界面,所述可视化操作界面采用拖拽和放置组件、设置属性和样式的方式,来设计页面布局和外观。
进一步的,所述代码生成前端设计器还包括规则引擎设计器,所述规则引擎设计器提供可视化界面,用以定义代码生成时的规则和逻辑,所述规则包括生成代码的模板、条件、循环和变量,所述逻辑包括代码生成的动作。
进一步的,所述解析器包括schema解析器,所述schema解析器用以存储代码生成前端设计器的设计结果,所述schema解析器还用以读取和解析表示前端数据结构的模式文件,并根据模式文件中定义的规则验证前端数据的有效性。
进一步的,所述解析器还包括规则引擎解析器,所述规则引擎解析器用以读取和解析规则定义文件,并将规则定义文件转化为可执行的代码或数据结构。
一种基于规则引擎的代码生成方法,基于上述所述的一种基于规则引擎的代码生成系统实现,包括如下步骤:
S1:通过页面设计器进行页面设计;
S2:通过规则引擎设计器进行页面规则设计;
S3:通过schema解析器进行引擎渲染;
S4:通过规则引擎解析器进行后端规则引擎解析;
S5:通过代码生成模块生成前后端代码。
进一步的,所述页面规则设计包括代码片段设计和方法设计,所述方法设计包括生成规则数据结构和配置信息。
进一步的,所述引擎渲染包括如下步骤:
组件导入,适配设计器组件;
匹配schema属性;
设计器注入画布;
引擎渲染。
进一步的,所述后端规则引擎解析包括如下步骤:
读取规则配置信息;
解析生成代码片段逻辑;
解析方法生成逻辑;
解析方法调用编排逻辑;
出码数据结构。
进一步的,所述生成前后端代码包括如下步骤:
读取配置信息;
将规则配置数据结构和页面配置数据结构进行动态模板替换;
采用模板解析引擎进行解析,生成前后端代码。
本发明的有益效果在于:本发明通过实用规则引擎技术来进行代码生成,从具体的业务方法单元,包括入参、出参、内部业务流程处理到方法单元的编排,生成满足较复杂业务场景的功能需求,比较常规的基于模板技术的代码生成工具具有更高的实用性。
本发明能够基于规则引擎技术并结合模板和配置文件生成通用业务场景代码及部分可定制化的业务功能代码,通过可视化的业务逻辑规则配置,提高了代码生成器对一些复杂业务逻辑的支持,满足更多的业务场景,进一步提升代码生成器的效率。
本发明通过规则引擎技术进行业务编码及代码逻辑的生成,提高了生成代码的实用价值,提高了研发人员的开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明系统框图;
图2为本发明流程图;
图3为页面规则设计流程图;
图4为引擎渲染流程图;
图5为后端规则引擎解析流程图;
图6为前后端代码生成流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
参见图1,一种基于规则引擎的代码生成系统,包括代码生成前端设计器、解析器和代码生成模块,其中,代码生成前端设计器用以提供可视化操作平台,并为开发人员定义代码生成时的规则和逻辑;解析器用以保存、验证并解析代码生成前端设计器的设计结果,生成对应的规则配置数据结构和页面配置数据结构;代码生成模块用以将规则配置数据结构和页面配置数据结构进行动态模板替换,生成前后端代码。
在本实施例当中,所述代码生成前端设计器包括页面设计器,所述页面设计器提供了一个可视化操作界面,用于创建和设计应用程序的用户界面。让用户可以通过拖拽和放置组件、设置属性和样式等方式来设计页面布局和外观。页面设计器生成的前端代码,使生成的前端代码更加符合用户的实际需求场景。
在本实施例当中,所述代码生成前端设计器还包括规则引擎设计器,所述规则引擎设计器提供了一个可视化界面,允许用户定义代码生成时的规则和逻辑。规则引擎设计器可以帮助开发人员定义生成代码的模板、条件、循环、变量等,以及相应的代码生成动作。通过规则引擎设计器,开发人员可以以图形化的方式设计和配置代码生成的规则,而无需手动编写代码,这样可以提高代码生成的灵活性和可维护性,同时减少了手动编写代码的工作量。
在本实施例当中,所述解析器包括schema解析器,所述schema解析器用以将规则设计器和页面设计器的设计结果保存在schema文件中,在代码生成时,需要schema解析器进行解析,然后生成对应的前后端业务逻辑及前端页面代码。schema解析器可以读取和解析表示前端数据结构的模式文件,并根据模式文件中定义的规则验证前端数据的有效性。schema解析器还可以用于生成表单验证、数据绑定、数据转换等功能,以确保前端应用程序的数据一致性和正确性。
在本实施例当中,所述解析器还包括规则引擎解析器,所述规则引擎解析器是一种用于解析和执行规则引擎规则的工具。规则引擎是一种用于管理和执行业务规则的软件组件,它允许开发人员将业务规则从应用程序中分离出来,并以可配置和可维护的方式进行管理。
规则引擎解析器可以读取和解析规则定义文件,并将规则转化为可执行的代码或数据结构,以便在应用程序中执行规则。规则引擎解析器通常支持规则的验证、转换和优化等功能,它们可以检查规则的语法和语义正确性,将规则转化为内部数据结构或可执行代码,以便在运行时进行规则匹配和执行。规则引擎解析器还可以支持规则的版本控制、动态加载和动态更新等高级功能,以满足复杂业务规则的管理需求。
目前规则引擎主要支持编程控制关键字如("if"、"else"、"for"、"while"、"do"、"continue"、"switch"、"case"、"default"、"return"、"instance"、"break")等12个;基本数据类型8种;赋值运算、算术运算、关系运算、逻辑运算、位运算、三目运算、instanceof运算等7种的解析。支持方法的定义包括:方法名,返回值,方法参数;支持方法的编排。
在本实施例当中,代码生成模块用以将前端规则引擎设计器和页面设计器生成的schema配置文件通过schema解析器和规则引擎解析器转化为前后端业务代码,前端代码支持react、后端代码支持java语言。
参见图2,一种基于规则引擎的代码生成方法,基于上述所述的一种基于规则引擎的代码生成系统实现,包括如下步骤:S1:通过页面设计器进行页面设计;S2:通过规则引擎设计器进行页面规则设计;S3:通过schema解析器进行引擎渲染;S4:通过规则引擎解析器进行后端规则引擎解析;S5:通过代码生成模块生成前后端代码。
参见图3,页面规则设计包括代码片段设计和方法设计,其中,方法设计包括生成规则数据结构和配置信息。
参见图4,引擎渲染包括如下步骤:组件导入,适配设计器组件;匹配schema属性;设计器注入画布;引擎渲染。
参见图5,后端规则引擎解析包括如下步骤:读取规则配置信息;解析生成代码片段逻辑;解析方法生成逻辑;解析方法调用编排逻辑;出码数据结构,所述数据结构包括规则配置数据结构和页面配置数据结构。
参见图6,生成前后端代码包括如下步骤:读取配置信息;将规则配置数据结构和页面配置数据结构进行动态模板替换;采用模板解析引擎进行解析,生成前后端代码。
基于上述实施例,本发明至少具有以下技术效果:
本发明通过实用规则引擎技术来进行代码生成,从具体的业务方法单元,包括入参、出参、内部业务流程处理到方法单元的编排,生成满足较复杂业务场景的功能需求,比较常规的基于模板技术的代码生成工具具有更高的实用性。
本发明能够基于规则引擎技术并结合模板和配置文件生成通用业务场景代码及部分可定制化的业务功能代码,通过可视化的业务逻辑规则配置,提高了代码生成器对一些复杂业务逻辑的支持,满足更多的业务场景,进一步提升代码生成器的效率。
本发明通过规则引擎技术进行业务编码及代码逻辑的生成,提高了生成代码的实用价值,提高了研发人员的开发效率。
对于前述的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例属于优选实施例,所涉及的动作并不一定是本申请所必须的。
上述实施例中,描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
1.一种基于规则引擎的代码生成系统,其特征在于,包括代码生成前端设计器、解析器和代码生成模块,其中,代码生成前端设计器用以提供可视化操作平台,并为开发人员定义代码生成时的规则和逻辑;解析器用以保存、验证并解析代码生成前端设计器的设计结果,生成对应的规则配置数据结构和页面配置数据结构;代码生成模块用以将规则配置数据结构和页面配置数据结构进行动态模板替换,生成前后端代码。
2.如权利要求1所述的一种基于规则引擎的代码生成系统,其特征在于,所述代码生成前端设计器包括页面设计器,所述页面设计器提供可视化操作界面,用以创建和设计应用程序的用户界面,所述可视化操作界面采用拖拽和放置组件、设置属性和样式的方式,来设计页面布局和外观。
3.如权利要求2所述的一种基于规则引擎的代码生成系统,其特征在于,所述代码生成前端设计器还包括规则引擎设计器,所述规则引擎设计器提供可视化界面,用以定义代码生成时的规则和逻辑,所述规则包括生成代码的模板、条件、循环和变量,所述逻辑包括代码生成的动作。
4.如权利要求1所述的一种基于规则引擎的代码生成系统,其特征在于,所述解析器包括schema解析器,所述schema解析器用以存储代码生成前端设计器的设计结果,所述schema解析器还用以读取和解析表示前端数据结构的模式文件,并根据模式文件中定义的规则验证前端数据的有效性。
5.如权利要求4所述的一种基于规则引擎的代码生成系统,其特征在于,所述解析器还包括规则引擎解析器,所述规则引擎解析器用以读取和解析规则定义文件,并将规则定义文件转化为可执行的代码或数据结构。
6.一种基于规则引擎的代码生成方法,基于权利要求1~5任意一项所述的一种基于规则引擎的代码生成系统实现,其特征在于,包括如下步骤:
S1:通过页面设计器进行页面设计;
S2:通过规则引擎设计器进行页面规则设计;
S3:通过schema解析器进行引擎渲染;
S4:通过规则引擎解析器进行后端规则引擎解析;
S5:通过代码生成模块生成前后端代码。
7.如权利要求6所述的一种基于规则引擎的代码生成方法,其特征在于,所述页面规则设计包括代码片段设计和方法设计,所述方法设计包括生成规则数据结构和配置信息。
8.如权利要求6所述的一种基于规则引擎的代码生成方法,其特征在于,所述引擎渲染包括如下步骤:
组件导入,适配设计器组件;
匹配schema属性;
设计器注入画布;
引擎渲染。
9.如权利要求6所述的一种基于规则引擎的代码生成方法,其特征在于,所述后端规则引擎解析包括如下步骤:
读取规则配置信息;
解析生成代码片段逻辑;
解析方法生成逻辑;
解析方法调用编排逻辑;
出码数据结构。
10.如权利要求6所述的一种基于规则引擎的代码生成方法,其特征在于,所述生成前后端代码包括如下步骤:
读取配置信息;
将规则配置数据结构和页面配置数据结构进行动态模板替换;
采用模板解析引擎进行解析,生成前后端代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311672915.2A CN117873468A (zh) | 2024-03-04 | 2024-03-04 | 一种基于规则引擎的代码生成系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311672915.2A CN117873468A (zh) | 2024-03-04 | 2024-03-04 | 一种基于规则引擎的代码生成系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117873468A true CN117873468A (zh) | 2024-04-12 |
Family
ID=90592495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311672915.2A Pending CN117873468A (zh) | 2024-03-04 | 2024-03-04 | 一种基于规则引擎的代码生成系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117873468A (zh) |
-
2024
- 2024-03-04 CN CN202311672915.2A patent/CN117873468A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7090778B2 (ja) | 影響分析 | |
US9946517B2 (en) | Dynamic model based software application development | |
Salay et al. | Managing requirements uncertainty with partial models | |
Li et al. | A formal semantics of UML sequence diagram | |
US7975233B2 (en) | Automatic conversion of a textual language into a graphical program representation | |
US8024703B2 (en) | Building an open model driven architecture pattern based on exemplars | |
EP2287808A2 (en) | Parameterized graphs with conditional components | |
Blouin et al. | Kompren: modeling and generating model slicers | |
EP2979176A1 (en) | Method for transforming first code instructions in a first programming language into second code instructions in a second programming language | |
CN106951305B (zh) | 一种基于模型转换由QVT-R语言生成midCore脚本的方法 | |
Beuche | Composition and construction of embedded software families | |
Febbraro et al. | Unit testing in ASPIDE | |
CN111880784A (zh) | 一种面向simscript语言的离散事件仿真图形化建模方法 | |
Hinkel | Implicit incremental model analyses and transformations | |
Consel | From a program family to a domain-specific language | |
CN116755669A (zh) | 一种基于dsl语言操作模型的低代码开发方法和工具 | |
Mäder et al. | Ready-to-use traceability on evolving projects | |
Lucas et al. | Extracting mode diagrams from Blech code | |
Gonçalves et al. | ReFlO: An interactive tool for pipe-and-filter domain specification and program generation | |
CN117873468A (zh) | 一种基于规则引擎的代码生成系统及方法 | |
CN114791808A (zh) | 一种数据流图生成方法及装置 | |
Zhang | An Approach for Extracting UML Diagram from Object-Oriented Program Based on J2X | |
Winckler et al. | SWCEditor: a model-based tool for interactive modelling of web navigation | |
KR20220003106A (ko) | 컴퓨터-보조 컴퓨터 프로그래밍의 시스템 및 방법 | |
Kara | Design and implementation of the modelicaml code generator using acceleo 3. x |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |