一种灵活方便的流程图构建方法转让专利

申请号 : CN201610921198.6

文献号 : CN106648608B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴晓军

申请人 : 吴晓军

摘要 :

本发明提出了一种灵活高效的流程图构建方法,包括流程图的布局、编辑、局部折叠/展开、删除/撤销、粘贴复制等操作。所述方法首先定义基本节点和基本组,其中,基本组由组头、组尾以及中间的节点构成,基本组分成一般组,分支组,循环组;在构造流程图时候,由开始节点和结束节点连接构成基本流程图,然后其他的节点都往里面添加;流程图的布局也属于组布局,根据组的不同,组将布局分成主布局、分支组布局和循环组布局。通过组的折叠和展开,将局部流程图组折叠收起或展开,可使得复杂的流程图变得简介清晰,更便于业务逻辑梳理。本发明可广泛应用在基于流程图的程序构建、逻辑梳理等,本发明的一个典型应用是在机器视觉软件系统的搭建中。

权利要求 :

1.一种灵活的流程图创建方法,其特征在于:所述方法包括:定义基本节点和基本组,其中,基本节点包括引入连接线、引出连接线和矩形框,基本组由组头、组尾以及中间的节点构成,并且基本组是基本节点的容器,包含了一个或多个基本节点,同时还能包含基本组,基本组按照结构的不同分成了三种:一般组,分支组,循环组;

组的创建:在构造流程图时候,由开始节点和结束节点连接构成基本流程图,然后其他的节点都往里面添加;具体步骤包括:S11.创建要插入的对象,即节点,创建包括从单元列表中选择节点,或者在已有的流程图中复制节点;

S12.删除原有位置的连接线;S13.将插入对象的上一个节点与插入节点创建连接线;

S14.再将插入对象的下个节点与插入节点创建连接线;S15.最后对整体流程图进行布局;

S16.同时在撤销堆栈中添加相应的操作信息;S17.清空重做堆栈中的对象信息;

组的布局:流程图的布局也属于组布局,根据组的不同,组将布局分成:主布局、分支组布局和循环组布局;其中,主布局的具体步骤包括:S18.首先判断当前节点类型;S19.如果是基本节点,就直接设置下个节点的位置;S20.如果是组,先调用组的布局方法,算出组的高度和宽度,S21.然后设置下个节点的位置;S22.按照上述的步骤循环遍历所有的节点;直到遇到最后一个没有后续连接节点的终止节点,布局完成;

分支组布局:分支组布局是对主布局的一个拓展,分别对分支都进行主布局,最后根据分支中高度最大的分支高度,计算组尾的位置进行布局;

循环组布局:首先对组头的引出连接线进行布局;接着对循环内部的节点进行主布局;

最后对折回线进行布局,布局完成;

折叠和展开是组特有功能,流程图和基本节点都不具备,当组折叠的时候,只有组头显示,其他部分都隐藏,相当于变成了一个基本节点;组的折叠和展开有三种:一般组折叠和展开,分支组的折叠和展开,循环组的折叠和展开。

2.根据权利要求1所述的方法,其特征在于:所述基本节点具有的属性包括:坐标、隐藏/显示和尺寸,利用上述三个属性对节点进行布局操作。

3.根据权利要求1所述的方法,其特征在于:分支组布局的具体步骤包括:首先对组头的引出连接线进行布局;接着对分支进行主布局,直到一条分支布局完成;然后照前两步将其他分支进行布局;分支布局完成后,获取高度最大的分支高度,计算组尾的位置,最后布局完成。

4.根据权利要求1所述的方法,其特征在于:一般组的折叠过程包括:首先遍历组内的节点,此处基本节点和组都称为节点,不进入组内部;将每个节点的位置和尺寸设置为组头的位置和尺寸;除了组头外,将其他节点的隐藏属性设置为隐藏;遍历的时候遇到是组,将组的展开属性设置为假;然后将组头的引出连接线隐藏,将组尾的引入连接线隐藏;最后进行重新布局。

5.根据权利要求1所述的方法,其特征在于:一般组的展开过程包括:首先遍历组内的节点,不进入组内部;然后将除了组头外,其他节点的隐藏属性设置为显示;接着将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示;最后进行重新布局。

6.根据权利要求5所述的方法,其特征在于:由于折叠和展开不涉及到节点的连接关系,直接使用了组的节点集合,所以分支组的折叠和展开和一般组相同。

7.根据权利要求1所述的方法,其特征在于:循环组的折叠过程包括:遍历组内的节点,此处基本节点和组都称为节点,不进入组内部;将每个节点的位置和尺寸设置为组头的位置和尺寸;除了组头外,将其他节点的隐藏属性设置为隐藏;遍历的时候遇到是组,将组的展开属性设置为假;将组头的引出连接线隐藏,将组尾的引入连接线隐藏,将逆向连接线隐藏;最后进行重新布局。

8.根据权利要求1所述的方法,其特征在于:循环组的展开过程包括:遍历组内的节点,不进入组内部;将除了组头外,其他节点的隐藏属性设置为显示;将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示,逆向连接线显示;然后进行重新布局。

9.根据权利要求1所述的方法,其特征在于:复制和粘贴操作是把流程图结构已存在的节点或组复制一份再粘贴到流程图的其他位置,以加快流程图的构建过程;复制操作首先选中节点或组,如果是组,只需要选中组头或组尾,就能选中组;然后序列化节点对象;选择节点或组复制后,粘贴操作首先选中需要粘贴已经复制的节点的连接线;删除原有位置的连接线;将要粘贴节点上一个节点与要粘贴节点创建连接线;将要粘贴节点的下个节点与要粘贴节点创建连接线;对整体流程图进行布局;在撤销堆栈中添加相应的操作信息,清空重做堆栈中的对象信息;

删除是在流程图中创建过程中将不需要的节点或组删除,删除操作首先选中节点或组,如果是组,只需要选中组头或组尾,就能选中组;删除当前选中节点的引入连接线和引出连接线;将要删除节点上一个节点与要删除节点的下一个节点创建连接线,删除完成;在撤销堆栈中添加删除节点或组信息,清空重做堆栈中的对象信息;

撤销功能是在误操作流程图后,将流程图撤销恢复到操作前一步或前几步的过程,从本质来说,撤销就是不同对象的删除和粘贴;重做操作正好是撤销的相反操作。

10.一种机器视觉软件系统的搭建方法,其特征在于:所述方法通过根据权利要求1-9任一项所述的流程图构建方法将机器视觉工具模块根据具体应用快速搭建出解决方案。

说明书 :

一种灵活方便的流程图构建方法

技术领域

[0001] 本发明涉及流程图设计与布局技术领域,尤其涉及一种流程图构建方法。

背景技术

[0002] 专利文献1(中国专利公开号CN1137655A)公开了一种基于流程图的过程信息管理系统,将一个工作流准备为一个流程图,便于用户清晰明了地掌握和选出在每个阶段正确执行的下一个步骤。该文献不涉及流程图本身的构建、编辑和布局的问题。专利文献2(中国专利公开号CN103473265A)为大数据处理提供了一种流程图布局的分析方法,主要是处理流程图的布局分析问题,通过节点的权重对节点进行排序,然后优化调整每层节点的坐标。专利文献3(中国专利公开号CN104462574A)公开了一种在浏览器环境中快速定位流程图节点的方法,给定流程图需要在当前浏览器窗口可视区域内的节点,通过当前节点在流程图画布中的位置和当前浏览器窗口的宽度和高度计算能使当前节点显示在当前浏览器窗口中的位置。专利文献4(中国专利公开号CN102737108B)公开了一种绘制流程图和修改流程图的方法,首先创建流程图,再按照预定的规则对流程图的基本流程单元进行分组,然后将所述分组转化为树状图并创建树状图关系表保存树状图的结构关系信息。专利文献5(中国专利公开号CN101876900A)公开了一种实现流程图自动化调整布局的方法和装置,根据各分支信息确定主线,再根据主线确定流程图中的所有分支的最优组合方式,最后根据最优组合方式调整图元坐标位置,本发明可以提高流程图布局的效率。与专利文献5类似,专利文献6(中国专利公开号CN103473388A)公开了一种流程图自动布局的方法,通过对已有流程图节点的逻辑关系分析,划分节点的等级,对同一等级的节点进行最优化布局,采用拓扑顺序确定优化后的流程图中各节点的坐标,实现快速实现流程图的合理布局,保证布局的精确和业务逻辑的清晰。专利文献7(中国专利公开号CN101416180B)公开了一种将图形示图动态地布局成二维树状结构便于用户交互和最优显示的方法。专利文献8(中国专利公开号CN1704934A)提供了一种将流程图转为等价树状图的方法、将树状图转换为流程图的方法以及验证重组流程图的合法性及创建、编辑流程图的方法。为快速和高效的修改、编辑和创建流程图,该方法将流程图转为等价树状图,在树状图结构中进行流程图的编辑和修改,然后树状图转换为等价的流程图,避免了在流程图上直接修改和编辑的繁琐和复杂操作。
专利文献9(中国专利公开号CN103577164A)提供了一种流程图的生成方法和装置,通过建立节点,在节点中选择父节点和子节点,并建立父子节点时序关系和连接关系,该方法能够实现第一目标节点下的子节点隐藏实现折叠,将第二目标节点下的隐藏子节点展开。专利文献10(中国专利公开号CN103207730A)公开了一种拖拉式流程图生成方法,通过用户选择节点显示区域和流程图绘制区域确定父节点,将新节点拖拉至流程图绘制区域自动将该节点添加至父节点上。专利文献11(中国专利公开号CN105786526A)公开了一种基于Web的流程图绘制方法和系统,主要包括了绘图模块、界面模块和文件模块。专利文献12(中国专利公开号CN101256492A)公开了一种模型驱动架构的软件开发方法,其中提供了业务逻辑流程图进行布局的属性文件。专利文献13(中国专利公开号CN103207730B)公开了一种拖拉式的流程图生产方法。
[0003] 通过分析,专利文献2只对已创建的流程图进行分析和节点重排,便于分析和处理,无法创建和编辑流程图。专利文献3只提了一种在浏览器窗口中快速定位流程图节点的方法,不涉及流程图的构建、布局等操作。专利文献4公开了一种将流程图转为树状图的方法,但没有阐述如何对流程图进行动态创建,无法进行组的嵌套、全局折叠和展开等操作,树状图也无法直观地给出流程图节点和组的拓扑关系。专利文献5中的方法在已有流程图结构的基础上,通过确定流程图上的主线信息确定所有分支的最优组合,无法处理分支嵌套、多分支的流程图自动布局。专利文献6中的方法也是针对已有的流程图节点进行管理和布局优化,无法处理对节点、组的动态添加、删除、复制、粘贴以及折叠和展开操作。专利文献9中的方法没有考虑分支、循环及嵌套单元的处理和操作,也没有考虑流程图的布局问题。专利文献10中的方法只实现了简单的单分支流程图构建方法,无法实现带多分支、循环和嵌套的流程图绘制、编辑、修改、布局及折叠展开操作。专利文献11的方法中调用开源的算法库实现流程图的自动化布局和绘制,该方法也不能实现流程图的分支、折叠展开、成组、复制、粘贴等操作。专利文献12公开的技术核心点不在流程图方面。专利文献13只能生成简单的顺序流程图,无法实现分支、成组、组或节点的删除、复制、粘贴以及折叠和展开操作。
[0004] 在一些应用中,需要具有完整功能的模块构成整体的流程图结构,因此流程图需要具备局部节点的折叠/展开功能。已有专利或文献中,大部分不具备灵活的编辑功能,具有折叠/展开功能的流程图都是将该节点之后的所有子节点全部折叠/展开,并不适用于机器视觉中具有局部模块功能的流程图构建。综上所述,面向机器视觉的流程图构建方法需要具有局部折叠/展开功能、可编辑、多分支嵌套、可复制、粘贴、删除和恢复等功能。

发明内容

[0005] 本发明的目的在于提出一种灵活的流程图创建方法,通过该方法和工具能够为机器视觉等应用搭建程序执行的流程图结构,能够灵活地添加、复制/粘贴、删除/撤销、局部折叠/展开等节点或组操作,克服传统的流程图创建方法的不足。
[0006] 为达上述目的,本发明通过以下技术方案实现:
[0007] 一种灵活的流程图创建方法,所述方法包括:定义基本节点和基本组,其中,基本节点包括引入连接线、引出连接线和矩形框,基本组由组头、组尾以及中间的节点构成,基本组按照结构的不同分成了三种:一般组,分支组,循环组;
[0008] 组的创建:在构造流程图时候,由开始节点和结束节点连接构成基本流程图,然后其他的节点都往里面添加;具体步骤包括:S11.创建要插入的对象,即节点,创建包括从单元列表中选择节点,或者在已有的流程图中复制节点;S12.删除原有位置的连接线;S13.将插入对象的上一个节点与插入节点创建连接线;S14.再将插入对象的下个节点与插入节点创建连接线;S15.最后对整体流程图进行布局;S16.同时在撤销堆栈中添加相应的操作信息;S17.清空重做堆栈中的对象信息;
[0009] 组的布局:流程图的布局也属于组布局,根据组的不同,组将布局分成:主布局、分支组布局和循环组布局;其中,
[0010] 主布局的具体步骤包括:S18.首先判断当前节点类型;S19.如果是基本节点,就直接设置下个节点的位置;S20.如果是组,先调用组的布局方法,算出组的高度和宽度,S21.然后设置下个节点的位置;S22.按照上述的步骤循环遍历所有的节点;直到遇到最后一个没有后续连接节点的终止节点,布局完成;
[0011] 分支组布局:分支组布局是对主布局的一个拓展,分别对分支都进行主布局,最后根据分支中高度最大的分支高度,计算组尾的位置进行布局;
[0012] 循环组布局:首先对组头的引出连接线进行布局;接着对循环内部的节点进行主布局;最后对折回线进行布局,布局完成;
[0013] 折叠和展开是组特有功能,流程图和基本节点都不具备,当组折叠的时候,只有组头显示,其他部分都隐藏,相当于变成了一个基本节点;组的折叠和展开有三种:一般组折叠和展开,分支组的折叠和展开,循环组的折叠和展开。
[0014] 进一步地,所述基本节点具有的属性包括:坐标、隐藏/显示和尺寸,利用上述三个属性对节点进行布局操作。
[0015] 进一步地,分支组布局的具体步骤包括:首先对组头的引出连接线进行布局;接着对分支进行主布局,直到一条分支布局完成;然后照前两步将其他分支进行布局;分支布局完成后,获取高度最大的分支高度,计算组尾的位置,最后布局完成。
[0016] 进一步地,一般组的折叠过程包括:首先遍历组内的节点,此处基本节点和组都称为节点,不进入组内部;将每个节点的位置和尺寸设置为组头的位置和尺寸;除了组头外,将其他节点的隐藏属性设置为隐藏;遍历的时候遇到是组,将组的展开属性设置为假;然后将组头的引出连接线隐藏,将组尾的引入连接线隐藏;最后进行重新布局。
[0017] 进一步地,一般组的展开过程包括:首先遍历组内的节点,不进入组内部;然后将除了组头外,其他节点的隐藏属性设置为显示;接着将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示;最后进行重新布局。
[0018] 进一步地,由于折叠和展开不涉及到节点的连接关系,直接使用了组的节点集合,所以分支组的折叠和展开和一般组相同。
[0019] 进一步地,循环组的折叠过程包括:遍历组内的节点,此处基本节点和组都称为节点,不进入组内部;将每个节点的位置和尺寸设置为组头的位置和尺寸;除了组头外,将其他节点的隐藏属性设置为隐藏;遍历的时候遇到是组,将组的展开属性设置为假;将组头的引出连接线隐藏,将组尾的引入连接线隐藏,将逆向连接线隐藏;最后进行重新布局。
[0020] 进一步地,循环组的展开过程包括:遍历组内的节点,不进入组内部;将除了组头外,其他节点的隐藏属性设置为显示;将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示,逆向连接线显示;然后进行重新布局。
[0021] 进一步地,复制和粘贴操作是把流程图结构已存在的节点或组复制一份再粘贴到流程图的其他位置,以加快流程图的构建过程;复制操作首先选中节点或组,如果是组,只需要选中组头或组尾,就能选中组;然后序列化节点对象;选择节点或组复制后,粘贴操作首先选中需要粘贴已经复制的节点的连接线;删除原有位置的连接线;将要粘贴节点上一个节点与要粘贴节点创建连接线;将要粘贴节点的下个节点与要粘贴节点创建连接线;对整体流程图进行布局;在撤销堆栈中添加相应的操作信息,清空重做堆栈中的对象信息;
[0022] 删除是在流程图中创建过程中将不需要的节点或组删除,删除操作首先选中节点或组,如果是组,只需要选中组头或组尾,就能选中组;删除当前选中节点的引入连接线和引出连接线;将要删除节点上一个节点与要删除节点的下一个节点创建连接线,删除完成;在撤销堆栈中添加删除节点或组信息,清空重做堆栈中的对象信息;
[0023] 撤销功能是在误操作流程图后,将流程图撤销恢复到操作前一步或前几步的过程,从本质来说,撤销就是不同对象的删除和粘贴;重做操作正好是撤销的相反操作。
[0024] 本发明还提供了一种机器视觉软件系统的搭建方法,所述方法通过本发明的流程图构建方法将机器视觉工具模块根据具体应用快速搭建出解决方案。
[0025] 本发明的有益效果是:本发明提供了一种灵活高效的流程图编辑、局部折叠/展开、删除/撤销、粘贴复制和布局的方法。本发明可以广泛应用在基于流程图的程序构建、逻辑梳理等,本发明的一个典型应用是在机器视觉软件系统的搭建中,传统的机器视觉软件系统必须通过编写代码的方式完成,通过本发明中的流程图构建方法可以将机器视觉工具模块根据具体应用快速搭建出解决方案。

附图说明

[0026] 图1是基本节点及开始结束节点示意图;
[0027] 图2(a)是一般组的示意图;
[0028] 图2(b)是分支组的示意图;
[0029] 图2(c)是循环组的示意图;
[0030] 图3是多分支组的示意图;
[0031] 图4是基本节点与组关系示意图;
[0032] 图5是组创建过程示意图;
[0033] 图6是主布局操作流程;
[0034] 图7是分支组布局操作流程;
[0035] 图8是循环组布局操作流程;
[0036] 图9是一般组的折叠操作流程;
[0037] 图10是一般组的展开操作流程;
[0038] 图11是循环组折叠操作流程;
[0039] 图12是循环组的展开操作流程;
[0040] 图13是复制和粘贴操作流程;
[0041] 图14是初始流程图;
[0042] 图15是加入分支组实例;;
[0043] 图16是成组展开及折叠实例;
[0044] 图17是加入循环组的流程图示意图;
[0045] 图18是全部折叠后的流程图示意图;
[0046] 图19(a)是一个简单的机器视觉应用中的流程图全展开的结构示意图;
[0047] 图19(b)是边缘直线检测模块折叠后的流程图结构示意图;
[0048] 图19(c)是分支叠后的流程图结构示意图。具体实施方案
[0049] 下面通过具体实施方式结合附图对本发明作进一步详细说明。
[0050] 流程图在描述业务在系统内、人员之间、作业顺序等信息流向方面具有重要的作用,通过流程图可以梳理逻辑和数据间的逻辑关系。本发明中基本节点是构成流程图的最小单元,流程图中的所有成员都以此为基础,由多个节点构成的组也看作是一种特殊的节点。
[0051] 如附图1所示,基本节点构成主要包括了三个部分:引入连接线1,引出连接线2,矩形框3。引入连接线1、引出连接线2是当前节点与上一个节点、下一个节点的连接关系线,通过上下连接关系线向上和向下可以找到流程图中的所有节点。开始节点包括引入连接线2,结束节点包括引入连接线1。引出连接线作为向下的一个连接关系引线,本节点即为开始节点;引入连接线作为向上的一个连接关系引线,本节点就是结束节点。矩形框3中包含节点名称4、节点图标5、节点状态图标6。基本节点具有的三个属性包括:坐标、隐藏/显示和尺寸,可利用这三个属性对节点进行布局操作。没有向上引线的节点为整个流程图的开始节点,没有向下引出线的节点为整个流程图的结束节点。
[0052] 除基本节点外,本发明中的流程图还包括组,基本组是基本节点的容器,包含了一个或多个基本节点,同时还能包含基本组。基本组也可以认为是一个小的流程图,基本组包含有一个组头和组尾,和流程图具有相同的属性。基本组和流程图的异同点如下:相同点在于基本组和流程图都包含了组头和组尾,只是流程图组头称为开始,组尾称为结束,两者内部的结构完全相同;两者的不同之处主要在于外部表现,基本组可以作为一个整体嵌套在其他的组内部,并且具有上下连接线,同其他单元进行连接,而流程图没有外部链接关系,只能独立的存在。
[0053] 基本组由组头、组尾以及中间的节点(包括基本组)构成。组头、组尾只是一个标记,说明组的开始和结束,不同类型基本组的组头、组尾的构成都不同。基本组按照结构的不同分成了三种:一般组,分支组,循环组。
[0054] 一般组:按照顺序结构来构造,从组头开始,按照线性顺序一直串联到组尾,如附图2(a)所示。
[0055] 分支组:是一种包含了多分支的组,分支从组头开始,结束于组尾。分支内部连接是一种顺序结构,类似于一般组,只是所有分支都共用组头和组尾,如附图2(b)所示。分支组可以包括多分支10,在多分支的每个分支中可以包括基本节点及基本组,如附图3所示。
[0056] 循环组:是一种可以多次循环遍历的组。结构和一般组类似,在组尾有一条连接线引出,连接到组头,此连接线称为逆向连接线,如附图2(c)所示。
[0057] 由于组和基本节点(BaseNode)具有相同的特性,所有组和基本节点可以继承于BaseNode。也就是说BaseNode是所有组和基本节点的基类。BaseNode主要包括了引入连接线、引出连接线、尺寸、位置信息。
[0058] 基本节点直接继承于BaseNode,而其他组不能直接继承BaseNode,而是需要抽象出组的另外一个基类基本组(BaseGroup),这样所有的组都是继承于BaseGroup。BaseGroup主要包含了组头(StartNode)、组尾(EndNode)、能否展开(Expandable)和是否展开(Expanded)等属性。同时BaseGroup包含一些公用方法,比如组布局、获取组内部所有基本节点等,附图4是几个结构的继承关系。本发明中将基本节点和基本组统一称为节点。
[0059] [组的创建(100)]
[0060] 在构造流程图时候,由开始节点和结束节点连接构成基本流程图,然后其他的节点都往里面添加。首先创建要插入的对象,即节点(11),创建包括从单元列表中选择节点,或者在已有的流程图中复制节点;删除原有位置的连接线(12);然后将插入对象的上一个节点与插入节点创建连接线(13);再将插入对象的下个节点与插入节点创建连接线(14);最后对整体流程图进行布局(15),同时在撤销堆栈中添加相应的操作信息(16),清空重做堆栈中的对象信息(17)。组的创建过程如附图5所示。
[0061] [组的布局]
[0062] 布局是在插入节点或组、删除节点或组等操作后对流程图其余节点的位置进行调整和设置的过程,形成一种整洁、清晰的节点摆放方法,不至于导致流程图及连线的混乱。整个流程图可以看成一个组,所以流程图的布局可以归结为组布局。根据组的不同,可以将布局分成四大类:主布局、一般组布局、分支组布局和循环组布局。主布局就是对流程图的布局,由于流程图和一般组具有相同的内部结构,主布局和流程图布局方法也相同。最后布局只有三种:主布局、分支布局、循环布局。
[0063] (1)主布局方法(200)
[0064] 如附图6所示,首先基本框架流程(即流程图)的布局需要将所有组都当成一个基本节点,然后下层在调用相应的布局算法完成整个布局。主布局是其他所有布局的基础,在后面的分支组和循环组中都会用到。主布局的具体布局过程描述如下:首先判断当前节点类型(18);如果是基本节点,就直接设置下个节点的位置(19);如果是组,先调用组的布局方法,算出组的高度和宽度(20),然后设置下个节点的位置(21);按照上述的步骤循环遍历所有的节点;直到遇到最后一个没有后续连接节点的终止节点(22),布局完成。
[0065] (2)分支组布局(300)
[0066] 如附图7所示,分支组布局是对主布局的一个拓展。分别对分支都进行主布局,最后根据分支中高度最大的分支高度,计算组尾的位置进行布局。布局过程如下:首先对组头的引出连接线进行布局(23);接着对分支进行主布局(200),直到一条分支布局完成;然后照前两步将其他分支进行布局;分支布局完成后(24),获取高度最大的分支高度,计算组尾的位置(25),最后布局完成。
[0067] (3)循环组布局(400)
[0068] 如附图8所示,循环组在进行布局时,首先对组头的引出连接线进行布局(23);接着对循环内部的节点进行主布局(200);最后对折回线进行布局(26),布局完成。
[0069] [组的折叠和展开]
[0070] 折叠和展开是组特有功能,流程图和基本节点都不具备,在流程图编辑时可将功能类似的节点组成一般组,利用组折叠和展开功能能够使大规模的流程图变得简洁、方便浏览和快速编辑。当组折叠的时候,只有组头显示,其他部分都隐藏,相当于变成了一个基本节点。展开过程就是撤销组原来布局的过程。同样的,组的折叠和展开有三种:一般组折叠和展开,分支组的折叠和展开,循环组的折叠和展开。
[0071] (1)一般组折叠和展开
[0072] 如附图9所示,一般组的折叠过程(500)描述如下:首先遍历组内的节点(此处基本节点和组都称为节点),不进入组内部(27);将每个节点的位置和尺寸设置为组头的位置和尺寸(28);除了组头外,将其他节点的隐藏属性设置为隐藏(29);遍历的时候遇到是组,将组的展开属性设置为假(保证组内部的组都隐藏)(30);然后将组头的引出连接线隐藏,将组尾的引入连接线隐藏(31);最后进行重新布局(32)(只对展开的组布局,折叠组不用布局)。
[0073] 如附图10所示,一般组的展开过程(600)描述如下:首先遍历组内的节点,不进入组内部(33);然后将除了组头外,其他节点的隐藏属性设置为显示(34);接着将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示(35);最后进行重新布局(36)。
[0074] (2)分支组的折叠和展开
[0075] 由于折叠和展开不涉及到节点的连接关系,直接使用了组的节点集合,所以分支组的折叠和展开和一般组相同。
[0076] (3)循环组折叠和展开
[0077] 循环组与一般组和分支组的最大区别在于组尾有一个引出线指向组头,因此在折叠的时候不仅需要将组尾的引入线隐藏,还要将逆向连接线隐藏。如附图11所示,循环组的折叠过程700描述如下:遍历组内的节点(此处基本节点和组都称为节点)(27),不进入组内部;将每个节点的位置和尺寸设置为组头的位置和尺寸(28);除了组头外,将其他节点的隐藏属性设置为隐藏(29);遍历的时候遇到是组,将组的展开属性设置为假。(保证组内部的组都隐藏)(30);将组头的引出连接线隐藏,将组尾的引入连接线隐藏,将逆向连接线隐藏(37);最后进行重新布局(只对展开的组布局,折叠组不用布局)(32)。
[0078] 循环组的展开过程如下:遍历组内的节点,不进入组内部(33);将除了组头外,其他节点的隐藏属性设置为显示(34);将组头的引出连接线设置为显示,将组尾的引入连接线设置为显示,逆向连接线显示(38);然后进行重新布局(36),如附图12所示。
[0079] [复制、粘贴、删除、撤销及重做操作]
[0080] 在流程图的创建和编辑过程中,需要对节点或组进行复制、粘贴、删除、撤销及重做。确定需要复制、粘贴、删除、撤销的节点或组与流程图其他节点或组的关系后,调用节点或组的布局即可完成布局操作。
[0081] 复制、粘贴、删除、撤销、重做操作本质上就是对节点整体的内存拷贝,例如复制操作,就是将一个节点另外拷贝一份,然后插入到指定的位置即可。因此,我们需解决的问题是节点关系的内存拷贝,可以采用内存对象的序列化方法实现,很多语言都有自己的序列化方法,并且这方面已经比较成熟,在此不再过多陈述具体的序列化方法。将把重点放在具体流程图操作的阐述上面。
[0082] 复制和粘贴操作(900)是把流程图结构已存在的节点或组复制一份再粘贴到流程图的其他位置,以加快流程图的构建过程。复制操作首先选中节点或组(39),如果是组,只需要选中组头或组尾,就能选中组(得到了组对象)。然后序列化节点对象(不包含该节点的引入连接线,引出连接线)(40)。选择节点或组复制后,粘贴操作首先选中需要粘贴已经复制的节点的连接线(41);删除原有位置的连接线(42);将要粘贴节点上一个节点与要粘贴节点创建连接线(43);将要粘贴节点的下个节点与要粘贴节点创建连接线(44);对整体流程图进行布局(45)。在撤销堆栈中添加相应的操作信息,清空重做堆栈中的对象信息。复制和粘贴的过程如图13所示。
[0083] 删除是在流程图中创建过程中将不需要的节点或组删除,删除操作首先选中节点或组,如果是组,只需要选中组头或组尾,就能选中组(得到了组对象);删除当前选中节点的引入连接线和引出连接线;将要删除节点上一个节点与要删除节点的下一个节点创建连接线,删除完成。在撤销堆栈中添加删除节点或组信息(46),清空重做堆栈中的对象信息(47)。
[0084] 撤销功能是在误操作流程图后,将流程图撤销恢复到操作前一步或前几步的过程。从本质来说,撤销就是不同对象的删除和粘贴。所以只需要将已经操作的对象按照堆栈的方式保存下来,同时记录下相应的相反动作(比如此时进行的是删除动作,只需要记录为粘贴即可)。撤销的主要步骤如下:取撤销堆栈最后一个对象信息,使用粘贴操作添加该节点,在重做堆栈中记录中该节点信息;撤销插入和粘贴操作时取撤销堆栈最后一个对象信息执行删除操作,同时在重做堆栈中记录被删除节点信息;撤销成组操作时从撤销堆栈中获得最后一个对象信息将流程图恢复到成组前的状态,在重做堆栈中记录成组节点的信息。
[0085] 重做操作正好是撤销的相反操作,某一个操作撤销后需要恢复时采用重做实现。重做的主要步骤如下:取重做堆栈最后一个对象,使用删除操作删除该节点,调用布局功能重新对流程图近布局;重做插入和粘贴操作时,取重做堆栈的最后一个节点,执行粘贴操作,对流程图近重新布局;重做成组操作时从重做堆栈中取最后一个对象信息执行成组操作,并对流程图进行重新布局,完成重做操作。
[0086] [流程图创建及编辑实例]
[0087] (1)初始流程图如附图14所示。
[0088] (2)加入基本节点和分支节点的流程图如附图15所示,分支节点本身可以成组,附图15的流程图包括3个分支。
[0089] (3)一般节点的成组实例,可根据需要将组折叠和展开,如附图16所示.[0090] (4)加入循环组的流程图如附图17所示。
[0091] (5)将附图16中的所有组折叠后的效果如附图18所示。
[0092] [流程图构建方法的机器视觉软件应用实例]
[0093] 将本发明公开的流程图应用于基于流程图的机器视觉系统开发中,能够很好地实现机器视觉系统灵活的模块化程序构建。附图19(a)~(c)描述了一个简单的机器视觉应用中的流程图结构,包括两个工位,每个工位有一个相机,能够实现的功能包括目标定位、边缘提取、圆检测、条码读取、数值计算、缺陷检测等。边缘直线检测模块相对独立,可以单独成组,附图19(b)和附图19(c)分别为折叠边缘直线检测模块和分支后的流程图结构,附图19(a)为全部展开后的流程图结构。从附图19(b)和附图19(c)可以看出对于复杂的机器视觉系统创建大型的流程图后,通过折叠/展开操作可以将已完成的模块折叠,精简流程图视觉,便于快速编辑和浏览。上述机器视觉系统的应用验证了本发明的流程图构建方法具有良好的适应性。
[0094] 以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。