[发明专利]基于EPF的JAVA代码生成工具在审
申请号: | 202210323190.5 | 申请日: | 2022-03-30 |
公开(公告)号: | CN114780071A | 公开(公告)日: | 2022-07-22 |
发明(设计)人: | 周宽久;王梓仲;李一聪;徐琳 | 申请(专利权)人: | 大连理工大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/35 |
代理公司: | 辽宁鸿文知识产权代理有限公司 21102 | 代理人: | 隋秀文 |
地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 epf java 代码 生成 工具 | ||
1.一种基于EPF的JAVA代码生成工具,其特征在于,该JAVA代码生成工具基于事件处理表格、支持并发建模、支持生成并发代码的JAVA代码生成工具,其中包含一种形式化建模工具EPF及一种用于自动生成JAVA代码的算法;
(一)EPF是一种形式化建模工具,前端为表格或XML文件,后端具有形式化定义;在EPF中,行表示软件中存在的状态,列表示软件中将要发生的事件;行列交叉单元表示在某一状态下,当某一事件发生时,软件需要进行的处理;处理包含两部分内容:一是正常的事务处理;二是软件状态的转移;
(1)EPF的形式化定义,用四元组的形式来定义:
EPF=(State,Event,Cell,ConcurrentFlag)(1)
其中,
State=(SubStateList,ActiveAction,inActiveAction,PreAction,PostAction)是系统状态的集合;其中SubStateList表示子状态集合,ActiveAction表示激活行为,inActiveAction表示休眠行为,PreAction表示前置行为,PostAction表示后置行为;
Event=Eventout∪Eventin是系统外部事件与系统内部事件的集合,外部事件由用户通过请求产生,内部事件是运行中由模型发起的事件,使用函数event(事件名,表格编号)产生;
Cell∈{一般单元,忽略单元,错误单元,子表格}是系统操作的集合;
ConcurrentFlag∈{true,false}是并发状态的标识位;
该定义表示系统在State状态下,当发生了Event事件时,ConcurrentFlag的并发状态下做出Cell内声明的操作;
EPF中规定Cell有四种情况,即一般单元、忽略单元、错误单元和子表格;其中:
一般单元由目标状态NextState和函数列表FunctionList组成,表示系统执行过列表中函数后,跳转到目标状态;定义如下所示:
Normal=(NextState,FunctionList)(2)
忽略单元表示系统在该情况下不做出任何反应;
错误单元表示系统中不应当存在的情况;
子表格表示此时跳转至子EPF继续执行;
(2)EPF提供层次化设计
(2.1)状态的层次化:状态与状态之间设置为排他关系、语义关系、并列关系;
(2.2)事件的层次化:事件与事件之间设置为排他关系、语义关系、并列关系;
排他关系:即一般的关系;若两个主体为排他关系,则在一个时刻仅有一个主体处于激活状态;
语义关系:即父子关系;父实体并不具备实际意义,通过子实体来决定做出的反应;
并列关系:即同一等级下,兄弟实体的关系;
(2.3)EPF的层次化:每一个单元被设置为一个子EPF表格,当系统执行至该处时,跳转到子EPF继续执行,表格之间通过声明共享变量来传递数据;
EPF在状态的层次间嵌入if…else…和switch…case…逻辑判断式,用来对高层次状态进行进一步细分,是对公共判断逻辑的抽象;EPF将公共行为进行抽象,包含前置行为pre-action和后置行为post-action;当某状态具备公共行为时,不论该状态下发生何种事件,若存在pre-action时,均首先执行前置行为;若存在post-action时,在执行了单元格中规定的行为后,均执行后置行为;EPF可为状态设置激活行为active-action和休眠行为inactive-action;激活行为在状态由休眠态转为激活态时发生;休眠行为在状态由激活态转为休眠态时发生;与pre-action和post-action不同的是,pre-action/post-action的发生不要求状态的状态发生改变;
(3)EPF支持并发建模
通过层次化设计将状态划分为不同的状态簇,在并发状态下,每一个状态簇中,总是有一个状态处于激活状态;当系统中某一事件发生时,会给每一个激活状态下的单元创建新的线程去执行函数并在运行结束后销毁当前线程;
EPF支持并发状态下的多线程事务,EPF声明并列关系的多个状态簇,当一个事件发生时,如果系统中有多个状态均处于激活状态,EPF将创建多个线程并发处理;
(4)使用XML文件来声明EPF,标签定义如下:
(4.1)表格根标签:使用Epf及/Epf来表示,其中包含一个属性id表示表格编号;
(4.2)状态标签:使用State/State来表示,其中包含6个属性如下:
·name:表示状态名;
·concurrent_flag:表示当前操作单元是否处于并发状态,默认为false;
·active_action_list:表示激活行为函数列表,使用分号隔开;
·inactive_action_list:表示休眠行为函数列表,使用分号隔开;
·pre_action_list:表示前置行为函数列表,使用分号隔开;
·post_action_list:表示后置行为函数列表,使用分号隔开;
(4.3)事件标签:使用Event/表示,其中包含属性name,表示事件名称;
(4.4)单元标签:使用Cell/表示,其中属性如下:
·normal:表示当前操作单元是否为一般单元,默认为false;
·ignore:表示当前操作单元是否为忽略单元,默认为false;
·error:表示当前操作单元是否为错误单元,默认为false;
·next_state:表示目标状态,当且仅当normal属性为true时生效;
·function_list:表示函数列表,函数名之间使用分号隔开,当且仅当normal属性为true时生效,
·sub_form_id:表示当前操作单元跳转到的子表格id,当且仅当normal、ignore、error属性均为false时生效;
(4.5)分支逻辑标签:使用If/IfElse/Else表示,其中If标签包含condition属性,表示逻辑判断条件;
(4.6)选择逻辑标签:使用Switch/SwitchCase/Case表示,其中Switch标签包含Var属性,表示分支逻辑变量;
(二)代码自动生成算法,算法首先按行读取XML文件,每当遇见左标签时,将标签入栈,并将如下给出的Java代码映射表M中对应的代码串拼接至目标代码串后;每当遇见右标签时,将栈顶标签出栈并判断二者是否匹配;若匹配,则从M中取出对应的代码串拼接之目标代码串后;若不匹配则文件语法有误,不予生成代码;当ConcurrentFlag为真时,新建线程执行任务。
2.根据权利要求1所述的基于EPF的JAVA代码生成工具,其特征在于,所述的代码自动生成算法GenerateCode描述:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210323190.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种软件研发全流程效能度量方法和系统
- 下一篇:微悬臂梁光纤加速度传感器机构