CN110879699A - 领域专用语言dsl的图形化处理方法和设备 - Google Patents
领域专用语言dsl的图形化处理方法和设备 Download PDFInfo
- Publication number
- CN110879699A CN110879699A CN201811033912.3A CN201811033912A CN110879699A CN 110879699 A CN110879699 A CN 110879699A CN 201811033912 A CN201811033912 A CN 201811033912A CN 110879699 A CN110879699 A CN 110879699A
- Authority
- CN
- China
- Prior art keywords
- dsl
- action
- graphical
- statement
- java
- 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
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/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- 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
-
- 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/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种领域专用语言DSL的图形化处理方法和设备,包括:创建java类,所述类包括方法;将DSL脚本的语句片段映射到所述java类的方法;根据所述DSL脚本的语句片段的语义实现所述java类的方法;根据Blockly规范将所述语句片段转换为图形化的块,以便组合所述图形化的块,实现所述图形化的块转译为DSL语句片段。根据本发明提供的方法,能够将DSL的脚本进行图形化处理,辅助DSL程序设计。
Description
技术领域
本发明涉及计算机网络领域,更为具体而言,涉及一种领域专用语言DSL的图形化处理方法和设备。
背景技术
DSL(领域专用语言, Domain Specific Language) 是一种专门用于特定的业务领域的抽象语法,与SQL或者JAVASCRIPT类似。但是,DSL语言更多地是针对特定领域,解决该特定领域的问题。
目前,领域专用语言DSL的设计和实现需要复杂的代码程序,由专门的技术人员编写,也没有其他辅助DSL编写的工具。
发明内容
本发明提供一种领域专用语言DSL的数据处理方法,通过创建java类,将DSL脚本的语句片段映射到java类的方法,还将DSL的语句片段转换为图形化的block,并将block转译为DSL片段,从而能够通过组合图形化的块来实现DSL脚本的编写,辅助DSL程序设计,提高了DSL应用的友好性。
本发明一些实施方式提供一种通用的领域专用语言(DSL)的设计、实现和图形化编写方式。具体而言,提供一种领域专用语言DSL的图形化处理方法,包括:创建java类,所述类包括方法;将DSL脚本的语句片段映射到所述java类的方法;根据所述DSL脚本的语句片段的语义实现所述java类的方法;根据Blockly规范将所述语句片段转换为图形化的块,以便组合所述图形化的块,实现所述图形化的块转译为DSL语句片段。
本发明的一些实施方式还提供一种计算机设备,包括处理器;和存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行上述的领域专用语言DSL的图形化处理方法。
本发明的一些实施方式还提供一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行上述的领域专用语言DSL的图形化处理方法。
附图说明
图1示出了根据本发明实施例的一种领域专用语言DSL的数据处理方法的流程示意图。
图2示出了根据本发明实施例的图形化的块的调用示意图。
图3示出了根据本发明实施例的计算机设备的结构示意图。
具体实施方式
现参考示例性的实施方式详细描述本发明,一些实施例图示在附图中。以下描述参考附图进行,除非另有表示,否则在不同附图中的相同数字代表相同或类似的元件。以下示例性实施方式中描述的方案不代表本发明的所有方案。相反,这些方案仅是所附权利要求中涉及的本发明的各个方面的系统和方法的例子。
参见图1,图1示出了根据本发明实施例的一种领域专用语言DSL的数据处理方法的流程示意图,该方法100可包括:步骤110、步骤120、步骤130和步骤140,下面结合具体的实施例对上述的步骤进行说明。
步骤110,创建java类,所述类包括方法。
Java是面向对象的计算机程序设计语言,其支持多种数据结构,例如,类、实例、对象和方法等。其中,类是具有共同属性和行为的对象的集合,其定义对象的属性和方法。其中,类的属性是对象数据的描述,方法是对象的行为。
本发明实施例中,DSL脚本可以是文本格式的文件,其是基于行为驱动开发(Behavior Driven Development, BDD)开发的程序。一个DSL脚本可以是一个文本文件,一个DSL脚本包含一个Feature行,用于阐述本脚本的基本职责。一个BDD脚本包含多个Scenario行,一个Scenario代表一种场景,一个Scenario包含多个Action行,每个Action行代表一个动作,以动作引导词开头。其中,动作引导词可包括Given、When、And或者Then,在一个DSL脚本中,这些动作引导词可以交叉使用,完成预计的功能。Given 描述给予特定的条件或者状态或者设定,When 描述特定的条件得到满足,And描述进一步强化条件或者状态或者设置,Then 描述根据上述条件或者状态或者设置,执行特定的过程。
步骤110中创建的java类可包括对象和方法,作为DSL语句片段的宿主。在一些实施例中,DSL语句片段可以是一个动作Action行,该Action行以Given、When、And或者Then中的一个引导词开头,实现一个对应的动作Action。
步骤120,将所述DSL脚本的语句片段映射到所述java类的方法。
在一些实施例中,步骤120可以包括:采用java注解的方式将DSL脚本的语句片段映射到java类的方法。在一些实施例中,DSL语句片段可以是一个动作Action行,其可以对应到java类的方法。
Java类的方法需要具有与该Action行对应的动作注解,其中,该动作注解具有进行动作Action行匹配的值value部分。在一些实施例中,动作注解的value部分可以是正则表达式形式。根据动作注解的值部分可以对DSL脚本的动作行执行Action行匹配,并将匹配出来的数据作为该java类的方法的参数。在一些实施例中,匹配出来的数据是文本形式的数据。
下面以一个具体的例子说明java注解。
DSL脚本中的每一行是一个动作(Action)行,代表需要达成的目标,例如:
Given variable apiBase with default http://172.25.12.166:7101
第一个单词Given是动作引导词,是关键字,这个Action要对应的后端的一段代码逻辑,这样Cucumber框架需要知道当出现类似这样的DSL脚本行时,应该执行什么样的动作。Cucumber是一个支持行为驱动开发的的工具库,提供多种语言实现,支持java, net等主流开发语言。
例如,下面的例子,就是要执行java方法requireAttribute:
@Given 注解对应于动作引导词Given,其他的动作引导词存在相应的动作注解。
每个动作注解都有一个正则表达式作为其值,例如:
这个正则表达式的含义是,匹配以variable开头,中间含有with default,并以其他任意字符结尾的的动作Action行。
在运行脚本时,匹配的部分,将被依次传递到一个所对应的java方法的参数,这里,apiBase将被设置为java方法参数attributeName的值,而http://172.25.12.166:7101将被设置为参数defaultValue的值。
步骤130,根据所述DSL脚本的语句片段的语义实现所述java类的方法。
在本发明的实施例中,作为DSL的语句片段(例如,动作Action行)的宿主的java类的方法还需要实现,如果不实现该java类的方法,即便Cucumber框架匹配到这行DSL脚本,但是不知道要具体执行何种操作。作为DSL的语句片段的宿主的类,除了需要实现之外,还需要如上所述的注解,如果不进行注解,那么Cucumber框架没法获知DSL的动作Action行的含义。
步骤140,根据Blockly规范将所述语句片段转换为图形化的块,以便组合所述图形化的块,实现所述图形化的块转译为DSL语句片段。
图形化的块Block可以是在预定编辑器中进行拖拽的图形化的块,该图形化的块可以设置在编辑器的工具栏中,并且能够被用户拖拽到画布区域。该图形化的块可配置有可输入部分和可见文本部分以及上下左右衔接的设置。根据块的上下左右衔接的设置,可以将拖拽的多个图形化的块进行组合。在图形化的块被拖拽到画布界面之后,块的可输入部分可以呈现在该图形化的块的预定区域,接收用户的输入。一种图形化的块可以如图2所示,图2的左侧为工具栏,呈现可供拖拽的块,右侧为画布区域,用户可以将工具栏一侧选定的块拖拽到画布区域,并且可以拖拽多个块,进行组合。
在一些实施例中,图形化的块可对应画布区域中的一个Block实例。在另外一些实施例中,图形化的块可以对应画布区域的两个或多个Block实例。
每个块对应于DSL脚本的每一行,例如,
Given variable apiBase with default http://172.25.12.166:7101
Given variable profile with default shawn-test-001
上述两个动作Action行对应于同一个Block的定义,但是在拖拽的画布界面上,属于两个Block的实例。除开动作引导词Given之外,变化的部分是可输入部分,如图2中的Scenanoname is后面的部分,属于可输入部分,这些可以由用户自行填写。对于上述两个动作Action行,用户可以在图形化的块的可输入部分填写apiBase与http://172.25.12.166:7101 ,也可以在图形化的块的可输入部分填写 profile 和shawn-test-001。其他的部分,是可见文本部分,例如,图2中的Scenano name is属于可见文本部分,其可以呈现在图形化的块的预定区域,供用户查看。可见文本部分是固定不变的,这部分是用户没法改变的,主要作用是让用户了解该Block的语义。可见文本部分并不需要和DSL 行的文本对应,可见文本仅仅用来辅助用户了解块的含义。
当处理任意图形化的块Block时,将调用该块的翻译函数来翻译成特定的DSL语句片段。其中,翻译函数的结果应该是一个正确的,符合要求的DSL 行。所有的Block块都正确翻译了DSL行, 那么就最终得到了完整的DSL脚本。
本发明还提供一种计算机设备。如图3所示,该计算机设备300可包括处理器321、输入/输出(I/O)设备322、存储器323、数据库324和显示器325。
处理器321可为一个或多个已知的处理装置,其可以加载存储器323中存储的用于实现上述方法的计算机指令以使计算机设备执行上述的方法。
I/O设备322可被配置以允许数据被接收和/或传输。I/O设备322可包括一个或多个数字和/或模拟通信设备,其允许计算机设备300与其他机器和设备通信。计算机设备300还可包括一个或多个数据库324,或通过网络与一个或多个数据库324通信连接。例如,数据库324可以是适于进行上述所描述的方法的关联数据处理的任意合适的数据库。
显示器325可包括显示屏,其可用于显示输入/输出设备322的输出结果以及数据处理过程中的中间结果。
本发明还提供一种计算机可读的存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现上面所描述的用于应用程序接口API测试的方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,智能手机或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明说明书中使用的术语和措辞仅仅为了举例说明,并不意味构成限定。本领域技术人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说明,所有的术语应按最宽泛合理的意思进行理解。
Claims (12)
1.一种领域专用语言DSL的图形化处理方法,其特征在于,所述方法包括:
创建java类,所述类包括方法;
将DSL脚本的语句片段映射到所述java类的方法;
根据所述DSL脚本的语句片段的语义实现所述java类的方法;
根据Blockly规范将所述语句片段转换为图形化的块,以便组合所述图形化的块,实现所述图形化的块转译为DSL语句片段。
2.根据权利要求1所述的方法,其特征在于,所述将DSL脚本的语句片段映射到所述java类的方法包括:
采用java注解的方式将DSL脚本的语句片段映射到所述java类的方法。
3.根据权利要求2所述的方法,其特征在于,所述语句片段为DSL的动作Action行,所述动作Action行以动作引导词开头。
4.根据权利要求3所述的方法,其特征在于,所述动作引导词包括given、when、and或者then。
5.根据权利要求3所述的方法,其特征在于,所述java类的方法具有与所述Action行对应的动作注解,其中,所述动作注解具有用于进行动作Action行匹配的值value部分。
6.根据权利要求5所述的方法,其特征在于,所述值value部分为正则表达式形式。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述动作注解的值value部分对所述DSL脚本的Action行执行匹配,并将匹配出来的数据作为所述java类的方法的参数。
8.根据权利要求1所述的方法,其特征在于,所述图形化的块配置有可输入部分和可见文本部分,以及上下左右衔接的设置。
9.根据权利要求1所述的方法,其特征在于,所述图形化的块block对应一个或多个块Block实例。
10.根据权利要求8所述的方法,其特征在于,所述可输入部分配置为在图形化块的预定区域呈现,接收用户的输入数据。
11.一种计算机设备,其包括:
处理器;和
存储器,用于存储计算机指令,所述计算机指令适于被所述处理器加载以执行权利要求1至10的任何一项所述的方法。
12.一种计算机可读介质,其存储有计算机可读指令,所述指令适于被处理器加载以执行权利要求1至10的任何一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811033912.3A CN110879699A (zh) | 2018-09-05 | 2018-09-05 | 领域专用语言dsl的图形化处理方法和设备 |
PCT/CN2019/103977 WO2020048416A1 (zh) | 2018-09-05 | 2019-09-02 | 领域专用语言dsl的图形化处理方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811033912.3A CN110879699A (zh) | 2018-09-05 | 2018-09-05 | 领域专用语言dsl的图形化处理方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110879699A true CN110879699A (zh) | 2020-03-13 |
Family
ID=69722795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811033912.3A Pending CN110879699A (zh) | 2018-09-05 | 2018-09-05 | 领域专用语言dsl的图形化处理方法和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110879699A (zh) |
WO (1) | WO2020048416A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185495A (zh) * | 2022-12-13 | 2023-05-30 | 易保网络技术(上海)有限公司 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092967A (zh) * | 2013-01-22 | 2013-05-08 | 交通银行股份有限公司 | 一种基于规则引擎的业务规则决策方法及装置 |
CN105511860A (zh) * | 2015-11-30 | 2016-04-20 | 大连文森特软件科技有限公司 | 在线图形化编程系统 |
CN106250104A (zh) * | 2015-06-09 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 一种针对服务器的远程操作系统、方法及装置 |
US20170052970A1 (en) * | 2015-08-20 | 2017-02-23 | International Business Machines Corporation | Transforming and loading data from a source data system to a target data system |
CN107273143A (zh) * | 2017-07-26 | 2017-10-20 | 北京计算机技术及应用研究所 | 一种基于Xtext的特定领域语言的软件工程设计方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612870B2 (en) * | 2006-08-04 | 2013-12-17 | National Instruments Corporation | Graphically specifying and indicating targeted execution in a graphical program |
CN104503754B (zh) * | 2014-12-16 | 2018-05-11 | 江南大学 | 一种机器人图形化编程系统中编程及编译的设计方法 |
CN106445556B (zh) * | 2016-10-18 | 2019-08-30 | 中国银行股份有限公司 | 一种可视化代码生成方法及系统 |
CN106970802B (zh) * | 2017-04-25 | 2024-04-09 | 北京航天飞行控制中心 | 在领域特定语言中集成编程脚本语言的方法及装置 |
CN107861721A (zh) * | 2017-11-03 | 2018-03-30 | 上海宽全智能科技有限公司 | 逆向图形化智能编程方法与装置、设备和存储介质 |
CN108334443A (zh) * | 2017-12-22 | 2018-07-27 | 海尔优家智能科技(北京)有限公司 | 生成测试用例的方法、装置、设备及计算机可读存储介质 |
-
2018
- 2018-09-05 CN CN201811033912.3A patent/CN110879699A/zh active Pending
-
2019
- 2019-09-02 WO PCT/CN2019/103977 patent/WO2020048416A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092967A (zh) * | 2013-01-22 | 2013-05-08 | 交通银行股份有限公司 | 一种基于规则引擎的业务规则决策方法及装置 |
CN106250104A (zh) * | 2015-06-09 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 一种针对服务器的远程操作系统、方法及装置 |
US20170052970A1 (en) * | 2015-08-20 | 2017-02-23 | International Business Machines Corporation | Transforming and loading data from a source data system to a target data system |
CN105511860A (zh) * | 2015-11-30 | 2016-04-20 | 大连文森特软件科技有限公司 | 在线图形化编程系统 |
CN107273143A (zh) * | 2017-07-26 | 2017-10-20 | 北京计算机技术及应用研究所 | 一种基于Xtext的特定领域语言的软件工程设计方法 |
Non-Patent Citations (2)
Title |
---|
DAMI.VAN: "BDD框架之Cucumber研究", 《HTTPS://WWW.CNBLOGS.COM/DAMI520/P/3168864.HTML》 * |
普元云计算: "BDD下的自动化测试", 《HTTPS://WWW.DOCIN.COM/P-2124307068.HTML》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116185495A (zh) * | 2022-12-13 | 2023-05-30 | 易保网络技术(上海)有限公司 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
CN116185495B (zh) * | 2022-12-13 | 2023-10-13 | 易保网络技术(上海)有限公司 | 计算函数构建方法、计算引擎、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020048416A1 (zh) | 2020-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036937B2 (en) | Contraction aware parsing system for domain-specific languages | |
US10338893B2 (en) | Multi-step auto-completion model for software development environments | |
US9645799B2 (en) | Method and system for model driven development | |
US11106434B1 (en) | Method, device, and computer program product for generating program code | |
CN107451162A (zh) | 网络资源访问设备、混合设备及方法 | |
US20110314446A1 (en) | Method and system for selectively copying portions of a document contents in a computing system (smart copy and paste | |
CN105378658A (zh) | 自动源代码生成 | |
US20150169533A1 (en) | Server-less HTML Templates | |
JP7309811B2 (ja) | データ注釈方法、装置、電子機器および記憶媒体 | |
CN109542404B (zh) | 页面组件化的构建方法、装置、存储介质及电子设备 | |
CN109669678A (zh) | 模板引擎整合方法、装置、电子设备及存储介质 | |
CN110879699A (zh) | 领域专用语言dsl的图形化处理方法和设备 | |
CN112632333A (zh) | 查询语句生成方法、装置、设备及计算机可读存储介质 | |
CN110647371A (zh) | 一种基于业务配置的多语言资源文件解析方法和系统 | |
KR102601387B1 (ko) | 스타일에 대한 선언적 캐스캐이드 재정렬 | |
EP3255558A1 (en) | Syntax analyzing device, learning device, machine translation device and recording medium | |
CN114449063A (zh) | 一种报文处理方法、装置及设备 | |
CN113705182A (zh) | 一种合同在线生成方法、装置及可读存储介质 | |
CN114528218A (zh) | 测试程序的生成方法、装置、存储介质以及电子设备 | |
CN114489619A (zh) | 一种界面视图显示方法及终端设备、计算机可读存储介质 | |
US11605006B2 (en) | Deep-learning model catalog creation | |
CN113342450A (zh) | 页面处理的方法、装置、电子设备及计算机可读介质 | |
US20150324333A1 (en) | Systems and methods for automatically generating hyperlinks | |
CN105740222A (zh) | 用于阅读器排版的方法、设备、阅读器和电子设备 | |
US20240126978A1 (en) | Determining attributes for elements of displayable content and adding them to an accessibility tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200313 |
|
RJ01 | Rejection of invention patent application after publication |