一种在线流程图和代码实时互转的实现方法与流程

文档序号:13072652阅读:3544来源:国知局
一种在线流程图和代码实时互转的实现方法与流程

本发明涉及网页开发技术领域,特别是一种在线流程图和代码实时互转的实现方法。



背景技术:

目前,现有的技术中有实现单纯在线绘制流程图、在线文档者;但尚未有能进一步实现流程图与程序代码实时互转的功能。现有技术存在以下几个方面的缺点:

1:只是单方面的设计,没有转换的功能;

2:如果有转换也不是实时的转换,往往需要后台处理,不能所见即所得;

3:转换往往不可逆。

目前软件程序开发人员需要一种能方便绘制流程图(思维导图)的功能,同时将此流程图转换成代码,或者,将写好的代码更好地通过流程图来展示和讲解;



技术实现要素:

本发明解决的技术问题在于提供一种在线流程图和代码实时互转的实现方法;以解决现有技术无法实现在线实时互换的缺陷。

本发明解决上述技术问题的技术方案是:

所述的方法包括以下步骤:

(1)、在线绘制流程图;

在“流程图”设计区域的功能区,设有工具按钮,拖拽这些工具按钮进“流程图”设计区域并编辑内容、条件即可完成流程图的绘制;

(2)、流程图实时转中间xml代码;

(3)、中间xml代码实时转程序代码;

(4)、嵌套表达式和表达式优化;

(5)、程序代码实时转流程图;

将程序代码转成中间的xml表达式,再将xml表达式根据规则优化后转成流程图。

所述的工具按钮包括:开始/结束块、判断块、普通节点块、带条件箭头、文本等;当鼠标经过设计区域的已拖拽的div块上会有删除图标和编辑图标:删除图标用来删除这个div块;编辑图标可以拖拽编辑div大小,编辑显示内容和条件等;每拖入一个div块,自动生成一个id号,唯一标识这个div块。

流程图实时转中间xml代码的中间代码区域,

每拖入一个普通节点块或开始/结束块,会生成一行标签为exp的表达式代码,属性“id”为分配的唯一标识id号,该标签内容为普通节点块的内容,包括x=a+b;

每拖入一个判断块,则生成标签为if的表达式代码,此if表达式代码除了有id属性外,还有一个条件属性con;

判断块的流向下一个块的箭头的条件即为con的值,包括x>0;若普通节点块或开始/结束块有接入箭头,需判断此箭头的源div块id是否大于本目标div块id;若大于,源div块exp表达式转变为while表达式并提升权重至目标div块之前,同时新增con条件;xml标签为成对出现格式,所以必须有结尾的符号,包括</exp>、</if>、</while>等。

在中间xml代码实时转程序代码时,

每拖入一个div块,或编辑div块的时候触发,中间xml代码更新的同时,程序代码也进行更新;更新采用无刷新的ajax技术;

表达式的转换可以如下:

“<expid=’1’>x=a+b</exp>”转换为“x=a+b;”

“<ifid=’2’con=’>0’>x</if>”转换为“if(x>0){}”

“<whileid=’3’con=’>1’>y</while>”转换为“while(y>1){}”。

嵌套时将对应的标签内的表达式转换成程序代码并将此代码加入到父表达式的大括号内;表达式优化主要针对多重连续的if标签,包括“</if><if>”一般可优化为“}elseif{}”。

所述的步骤还可以包括:

(6)、保存中间代码;

中间代码可直接利用php函数file_get_contents读取区域内容保存成xml后缀格式。

(7)、导出,流程图可通过php的图片处理程序imagegrabscreen导出成图片,程序代码可通过php的文件读写功能导出成txt文本。

所述的方法是将界面设计上呈现三个编辑框,从左至右分别为“流程图”、“中间代码”和“程序代码”,宽度比例分别为50%、25%、25%;“中间代码”底部有“保存”按钮,“流程图”和“程序代码”有“导出”按钮。

所述的在线流程图和代码实时互转的使用流程是:

(a)、打开转换网页;

(b)、在“流程图”设计区域设计流程图或在“程序代码”区域输入程序代码,或一起操作;

(c)、设计/输入完毕,满意后保存中间代码为xml格式;

(d)、将流程图导出为图片(jpg)或将程序代码导出为文本格式(txt);

(e)、完毕。

本发明的有益效果是:

1、本发明功能包括在线所见即所得地设计流程图、实时将流程图转成中间代码(可逆)、实时将中间代码转成程序代码(可逆)、保存中间代码为xml格式方便二次修改等。

2、在线设计流程图采用拖拽的方式,可利用插件easyui的拖拽功能。

3、流程图中每一个div块都有一个独立唯一的id,赋值方法为从上至下按顺序依次赋予增量为1的id,方便进行查找和标识;判断div块转成的中间代码为if类型,除了有id属性还有条件属性“con”(箭头上的条件内容);其他div块(目标div块)若满足条件如下则将源div块转为while类型的中间代码并提升权重至目标div块之前:目标div块有接入箭头且该箭头源点所属源div块的id大于目标div块id。

4、php完成实时转换成中间代码或程序代码,或反向转换,以及保存和导出功能等;流程图转中间代码为所见即所得地实时转换,中间代码转程序代码也是实时转换,因此流程图转成程序代码也是实时转换,反过来,将程序代码转成流程图也是实时转换;

5、中间代码采用xml格式,可随时保存。

而且是在线应用,兼容度高,快捷方便,可保存可导出,实时的显示更能

方便用户找到灵感,找出思维漏洞等。

附图说明

下面结合附图对本发明进一步说明:

图1为本发明的流程图;

图2为本发明功能模块图;

图3为本发明流程图(左)和中间代码(右)互转举例示意图;

图4为本发明中间代码(左)和程序代码(右)互转举例示意图。

具体实施方式

见图1至4所示,本发明关于一种在线流程图和代码实时互转的实现方法的重要功能点实现方法如下:

1:在线绘制流程图。在“流程图”设计区域的功能区,有很多工具按钮,拖拽这些工具按钮进“流程图”设计区域并编辑内容、条件即可完成流程图的绘制。工具按钮包括:开始/结束块、判断块、普通节点块、带条件箭头、文本等。鼠标经过设计区的已拖拽的div块上会有删除图标和编辑图标:删除图标用来删除这个div块,编辑图标可以拖拽编辑div大小,编辑显示内容和条件等;每拖入一个div块,自动生成一个id号,唯一标识这个div块;

2:流程图实时转中间xml代码。每拖入一个普通节点块(或开始/结束块),“中间代码”区域就会生成一行标签为exp的表达式代码,属性“id”为分配的id号(唯一标识),该标签内容为普通节点块的内容(如x=a+b);每拖入一个判断块,则生成标签为if的表达式代码,此if表达式代码除了有id属性外,还有一个条件属性con。判断块的流向下一个块的箭头的条件即为con的值(如x>0);若普通节点块(或开始/结束块)有接入箭头,需判断此箭头的源div块id是否大于本目标div块id,若大于,源div块exp表达式转变为while表达式并提升权重至目标div块之前,同时新增con条件;xml标签为成对出现格式,所以必须有结尾的符号,如</exp>、</if>、</while>等。

3:中间xml代码实时转程序代码。每拖入一个div块,或编辑div块的时候触发,中间xml代码更新的同时,程序代码也进行更新。这里用到了无刷新的ajax技术。表达式的转换很简单,举例如下:

“<expid=’1’>x=a+b</exp>”转换为“x=a+b;”

“<ifid=’2’con=’>0’>x</if>”转换为“if(x>0){}”

“<whileid=’3’con=’>1’>y</while>”转换为“while(y>1){}”

4:嵌套表达式和表达式优化。嵌套只需要将对应的标签内的表达式转换成程序代码并将此代码加入到父表达式的大括号内;表达式优化主要针对多重连续的if标签,如“</if><if>”一般可优化为“}elseif{}”;

5:程序代码实时转流程图(逆行)。逆行只需反向思维,将程序代码转成中间的xml表达式,再将xml表达式根据规则优化(添加id、属性等)后转成流程图;

6:保存中间代码。中间代码所见即所得,可直接利用php函数file_get_contents读取区域内容保存成xml后缀格式;

7:导出。流程图可通过php的图片处理程序(gd库)imagegrabscreen导出成图片,程序代码可通过php的文件读写功能(fopen)导出成txt文本。

如图1所示,在线流程图和代码实时互转的使用流程是:

(a)、打开转换网页;

(b)、在“流程图”设计区域设计流程图或在“程序代码”区域输入程序代码,或一起操作;

(c)、设计/输入完毕,满意后保存中间代码为xml格式;

(d)、将流程图导出为图片(jpg)或将程序代码导出为文本格式(txt);

(e)、完毕。

图3、4是本发明流程图、中间代码和程序代码互转的举例截图。

图2显示了实现本发明方法的各功能模块,包括:流程图在线绘制模块,实现流程图在线绘制。程序代码在线编辑模块,在线进行程序代码编辑。中间代码转化模块,对中间代码进行转化。代码优化模块,优化中间代码。中间代码存储模块,存储中间代码。流程图/代码导出模块,导出流程图或代码。

以上是对本发明实施例中的技术方案进行清楚、完整的描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出实质性创造获得的方案,都属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1