首页> 中国专利> 一种基于QT的自动生成跨平台复杂流程图的系统

一种基于QT的自动生成跨平台复杂流程图的系统

摘要

本发明公开了一种基于QT的自动生成跨平台复杂流程图的系统,包括流程图基本图元绘制模块、流程图结构化描述模块、流程监控功能支撑模块和流程监控应用支撑模块;所述流程图基本图元绘制模块从QT提供的基类进行继承和派生,形成流程图的基本图元类;所述流程图结构化描述模块用于将整个流程图通过结构化方式进行描述,并对描述进行格式解析,将信息置于对应容器中;所述流程监控功能支撑模块用于流程图显示风格设置、网络传输、数据库访问、连通和闭环检查,以及不同粒度流程切换;所述流程监控应用支撑模块用于拓扑排序、任务调度、关键路径和最短路径计算,以及支持施工网络图应用。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-17

    授权

    授权

  • 2017-05-03

    实质审查的生效 IPC(主分类):G06F17/24 申请日:20161128

    实质审查的生效

  • 2017-04-05

    公开

    公开

说明书

技术领域

本发明属于信息系统领域,尤其涉及一种基于QT的自动生成跨平台复杂流程图的系统。

背景技术

图形化流程监控界面具有直观形象、易于理解、交互方便、操作方便的特点,是各类应用操作人员和应用开发人员的首选。基于Windows平台,各软件厂商提供很多可进行二次开发的流程图控件产品,如微软Microsoft Office Visio、亿图图示专家EDraw Max、矢量图像绘制软件Diagram Designer等。Visio是其中使用最为广泛的产品,能够进行各种复杂图形设计,功能强大,接口丰富,并提供图元定制功能。

然而,在软硬件国产化的大潮流下,各类应用软件均开始向以龙芯CPU、中标麒麟操作系统、达梦数据库为典型配置的国产化软硬件环境进行迁移,对于应用软件开发人员,急需有一套轻量级和易于二次开发的基于国产化软硬件平台的流程图控件。

Diagram Designer是一个强大的跨平台应用程序,能够快速简单的在文档中创建专业的图标和插图,提供矢量绘图工具、库以及许多预置的图例形状,但对软硬件的运行环境要求较高;ConceptDraw Office也是一种跨平台的控件产品,但其缺点是体积庞大、接口复杂,不适合嵌入到应用系统进行二次开发。到目前,市场上还未找到一套基于国产化软硬件平台、功能完善、开发轻便、规模小巧、对运行环境要求较低的流程图控件。

发明内容

本专利目的是提出一种基于QT的自动生成跨平台复杂流程图的系统,包括流程图基本图元绘制模块、流程图结构化描述模块、流程监控功能支撑模块和流程监控应用支撑模块。

所述流程图基本图元绘制模块从QT提供的基类QObject(QT所有类的基类)、QGraphicsItem(QT图形视图体系中二维图形基类)、QGraphicsLineItem(QT图形视图体系中线形图形基类)、QGraphicsLayoutItem(QT图形视图体系中布局对象基类)等基本类进行继承和派生,形成流程图的基本图元类,所述基本图元类包括连接线类和节点类;

所述流程图结构化描述模块用于将整个流程图通过结构化方式进行描述,包括流程图总体信息、分支流程信息、节点信息和连接线信息的描述,并对描述进行格式解析,将信息置于对应容器中;

所述流程监控功能支撑模块用于流程图显示风格设置、网络传输、数据库访问、连通和闭环检查,以及不同粒度流程切换;

所述流程监控应用支撑模块用于拓扑排序、任务调度、关键路径和最短路径计算,支持施工网络图应用。

为使流程图分布均匀、显示美观,本系统结合QT二维图形引擎提供的布局器功能,根据流程图总体轮廓,预先设置一个矩阵,流程图的各节点分别落在矩阵中指定的行、列对应的位置,流程图控件自动根据预设的行距和列距计算节点中心位置,使节点对齐;连接线只需要连接指定的起始节点和终止节点即可。

本发明所述连接线类包括直接连接线类、并行连接线类和分叉连接线类;

所述直接连接线类为一条直线,直接连接两个图元,并在目的图元连接点处绘制三角形箭头;

所述并行连接线类在两个图元之间存在两条以上的并行连接线,用于绘制与直接连接线平行的非直接连接线;

所述分叉连接线类从主流程拆分成两个以上流程,或从两个以上流程汇总为主流程时,绘制分支线和汇总线。

本发明所述节点类包括圆形图形节点类和方形图形节点类,所述方形图形节点类包括长方形图形节点类和正方形图形节点类。

本发明所述对流程图总体信息、分支流程信息、节点信息和连接线信息的描述是基于可扩展标记语言XML(Extensible Markup Language)的,其中,流程图总体信息属性包括:

1)流程唯一标识:唯一区分流程的符号;

2)父流程唯一标识:唯一区分本流程的父流程(上一层流程)符号,通过该属性实现本流程向父流程切换,即不同粒度流程切换;

3)是否复杂模式:区分流程图是简单模式还是复杂模式,简单模式流程图围绕活动主线进行绘制,复杂模式不存在活动主线。

分支流程信息属性包括:

1)名称:分支流程名称(可理解为活动或任务);

2)对应单位唯一标识:承担该流程或任务的单位的唯一区分符号;

3)是否主流程:在简单模式流程图中,标识该分支流程是否是活动主线上的流程;

4)所在行序号:当前分支流程所在的行序号。

节点信息属性包括:

1)名称:当前节点的名称;

2)节点唯一标识:唯一区分节点的符号;

3)流程唯一标识:当前节点所属的流程图的唯一标识;

4)对应单位唯一标识:当前连接线关联的单位的唯一区分符号

5)所在行序号:节点所在的行序号;

6)所在列序号:节点所在的列序号;

7)节点状态:当前节点所代表的活动或任务的进展情况,可以根据需要进行扩展;

8)与前一节点距离:在同一行上与前一节点之间的距离。

连接线信息属性包括:

1)内容描述:连接线所代表的内容;

2)连接线唯一标识:唯一区分连接线的符号;

3)连接线类型:区分连接线类型,0表示直接连接线,1表示并行连接线、2表示分叉汇总连接线

4)是否上方:当连接线类型为并行连接线时,表示当前的并行连接线是在直接连接线的上方还是下方;

5)距主流程距离:当连接线类型为并行连接线时,表示当前的并行连接线与中间直接连接线平行线之间的距离;

6)是否汇总:当连接线类型为分叉汇总连接线时,表示是否为汇总连接线

7)对应单位唯一标识:当前连接线关联的单位的唯一区分符号;

8)起始节点唯一标识:当前连接线连接的起始节点唯一区分符号;

9)终止节点唯一标识:当前连接线连接的起始节点唯一区分符号。

本发明所述流程监控功能支撑模块用于流程图显示风格设置、网络传输、数据库访问、连通和闭环检查、不同粒度流程切换包括:

基于QT二维图形引擎,实现流程图显示风格的设置,包括字体颜色、大小,线条的颜色、粗细,流程图背景,流程图图元间隔大小、底色;

基于QtNetWork(跨平台网络模块)提供的网络传输功能,与远程终端实现网络传输以及消息收发;

基于QtSql(数据库访问模块)实现数据库表和视图的访问,实现数据库读取和存储操作;

基于QtXML(XML文件读写模块)或者QtNetWork(跨平台网络模块)中的数据库访问接口,对流程图的结构进行解析,形成流程图的总体信息、分支流程容器、节点容器和连接线容器;

针对各类容器信息,通过有向图相关算法实现流程图的连通检查和闭环检查;通过有向图相关算法实现流程图的连通检查,如Tarjan算法、Kruskal算法、Warshall算法,通过深度优先、拓扑排序等方法实现闭环检查;

通过流程图总体信息的父流程唯一标识信息和指定节点信息的流程唯一标识信息回退到上一层流程图和进入节点对应的细化流程图,实现不同粒度流程的切换;

提供用户对流程图进行编辑维护功能,并保存入库或形成XML文件。

本发明所述流程监控应用支撑模块用于拓扑排序、任务调度、关键和最短路径计算,支持施工网络图应用包括:

针对分支流程容器、节点容器和连接线容器,基于有向图拓扑排序方法,提供流程的拓扑排序和任务调度功能;

针对应用需求,基于连接线或者节点赋予的应用参数信息,如网络带宽、处理效率等,应用参数能够被转换为路径长度或花费代价,采用图关键路径和图最短路径算法对外提供求解关键路径和最短路径的功能接口;

基于连接线或者节点赋予的应用参数信息,提供基于AOE网(Activity On EdgeNetwork,边表示活动的网)或AOV网(Activity On Vertex Network,点表示活动的网)的最早开始时间、最迟开始时间、可晚开始时间、总机动时间和自由机动时间的计算以及时间提醒功能。

所述系统具备结构解析、流程展示以及流程监控功能,包括:

通过流程图解析类解析数据库或XML配置文件中存储的图元信息,包括节点信息、节点之间的前后续关系信息以及节点其他应用信息;

流程图显示窗口类根据流程图结构解析信息绘制各图元,并通过布局器布局各图元,构建完整流程图;

监控程序类通过端口监听类接收图元对应单位发送的状态信息,实时更新图元和网路图状态,并自动调用流程图核心算法,分析当前工作状态,提示用户,并根据用户需要调用具体功能。

基于该系统进行二次开发,用户可以在现有成果的基础上继承派生出新属性的节点类和连接线类,拓展流程显示的功能;同时,用户可自定义拓扑图分析算法,叠加应用功能,提升对应用分析和辅助决策能力,实现所见及所得的各类流程监控。

本系统功能完善、开发轻便、规模小巧、对运行环境要求较低,能够很好的支持国产化软硬件平台流程监控应用软件的开发和运行。

本流程图开发控件是完全基于国产操作系统中自带的QT语言开发的流程图控件,现有国内几大生产厂商提供的国产操作系统均自带QT开发环境,如国防科大和中标软件公司联合发布的中标麒麟操作系统自带版本为4.7.4QT开发环境。本流程图控件不需要另外购买和安装开发环境,小巧轻便、跨平台运行,基本能够满足常用流程图二次开发需求和应用需求。

本系统直接从QT基础二维图形类进行继承和派生,实现流程监控所需的各类基本图元,包括直接连接、并行连接和分叉连接三种连接线,方形、圆形两类流程节点;基于结构化方式对监控流程进行定义和描述,采用连通性检查和闭环检查辅助算法保证流程图构建的正确有效性,提供各类图元的属性获取和修改的开发接口,形成流程图开发控件。应用软件对本系统进行集成和配置,结合数据库访问、网络传输以及辅助决策等功能,能够满足各种复杂需求的流程监控应用需求;由于本系统全部基于QT实现,能够跨不同操作系统平台进行编译,做到一次编写、随处运行;同时,本系统对软硬件性能要求较低,在当前软硬件国产化的大潮流下,为应用软件流程图形化展示提供较好技术支撑。

有益效果:本系统显著优点为:(1)跨平台编译和运行,本系统完全基于QT开发,能够做到一次开发、随处运行;(2)对运行环境性能要求低,通过试验验证该控件在龙芯CPU、中标麒麟操作系统、达梦数据库典型国产化软硬件环境下运行流畅,没有卡顿和占据大量资源情况;(3)支持复杂流程的展示和监控,支持AOE网和AOV网两种流程展现方式;(4)采用闭环和连通检查,保证流程图构建的正确性和可用性。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1是系统总体框架。

图2是系统实现方法示意图。

图3是流程图生成的类序列图。

图4是简单模式典型流程示例。

图5是复杂模式典型流程示例。

图6是直接连接线示意图。

图7是并行连接线示意图。

图8是分叉连接线示意图。

具体实施方式

下面结合附图对发明的技术内容进行详细说明:

本系统的功能逻辑划分如图1所示,依托QT功能模块,实现了基本图元层、功能支撑层和应用支撑层的功能模块,基于各类接口支撑各类监控应用的二次开发。

QT层是本系统需要使用的QT主要功能模块,包括QtCore(QT基础模块,包括信号与槽通信、输入输出、事件、对象处理、多线程等)、QtGui(图形用户界面模块)、GtXML(XML文件读写模块)、QtSql(数据库访问模块)、QtNetwork(跨平台网络模块)。

基本图元层是实现流程图的基本要素,包括连接线和节点。连接线分为直接连接线、并行连接线和分叉汇总连接线;节点分方形(长方形、正方形)、圆形两种类型。

功能支撑层用于流程图的图形结构解析、显示风格设置、网络传输接入、数据库访问存储、有向拓扑检查(连通、闭环检查)、不同粒度流程切换功能。

所述流程图结构化描述模块用于将整个流程图通过结构化方式进行描述,包括流程图总体信息、分支流程信息、节点信息和连接线信息的描述,并对描述进行格式解析,将信息置于对应容器中;为使流程图分布均匀、显示美观,结合QT二维图形引擎提供的布局器功能,根据流程图总体轮廓,预先设置一个矩阵,流程图的各节点分别落在矩阵中指定的行、列对应的位置,流程图控件自动根据预设的行距和列距计算节点中心位置,使节点对齐。

所述流程监控应用支撑层用于拓扑排序、任务调度、关键路径和最短路径计算,支持施工网络图应用。

基本图元类包括两大类,分别是连接线类和节点类。

1)连接线类

①直接连接线类(Ctrl_GraphicsLink):一条直线,直接连接两个图元,在目的图元连接点处绘制三角形箭头,如图6所示;

②并行连接线类(Ctrl_GraphicsLinkParallel):在两个图元之间存在多条并行连接线,用于绘制与直接连接线平行的非直接连接线,如图7所示;

③分叉连接线类(Ctrl_GraphicsLinkBranch):从主流程拆分成多个流程,或从多个流程汇总为主流程时,绘制分支线和汇总线,如图8所示。

2)节点类

①圆形图形节点类(Ctrl_GraphicsNodeCircle)

②方形图形节点类(Ctrl_GraphicsNodeRectangle)(包括长方形和正方形)

图4是简单模式的典型流程一个片段示例,流程图对应于“专业4”所在的一行为该流程的主流程,专业3和专业5对应的流程都为非主流程,节点①与节点②之间通过直接连接线和并行连接线进行串联,“专业3地面设备自检”连接线表示的是专业3需要完成的活动,“专业4地面设备自检”连接线表示的是专业4需要完成的活动,“专业5地面设备自检”连接线表示的是专业5需要完成的活动;“①”节点表示“专业3地面设备自检”、“专业4地面设备自检”、“专业5地面设备自检”从该节点开始并行执行;“②”节点表示各专业设备自检均结束后,可以同时并行开展各专业的内外部检查工作。

图5为复杂模式的典型流程一个片段示例,流程图中没有主流程,节点之间通过直接连接线、并行连接线和分叉连接线进行并联或串联。(图4和图5中的内容只是为了对本发明内容进行举例说明,并不是本发明内容要保护的对象)

图5中最左边的空白节点表示后续工作从本节点开始进行分叉并行执行,分成了5个分支分别执行;图中最右侧的空白节点表示5个分别开展的工作均结束后,空白节点后面的工作才可以开展。

以中间“①”“⑥”“⑨”节点之间的一段流程为例进行说明。“活动1-6(单位2)”、“活动6-9(单位3)”、“活动1-9(单位4)”所代表的活动分别由单位2、单位3、单位4分别负责完成;“①”节点表示进入该分支流程后,“活动1-6(单位2)”和“活动1-9(单位4)”代表的活动可以同时开展;“⑥”节点表示,只有“活动1-6(单位2)”代表的活动结束后,“活动6-9(单位3)”所代表的活动才可以开始执行;“⑨”节点表示当“活动6-9(单位3)”和“活动1-9(单位4)”所代表的活动都完成后,该分支流程才全部完成,能够进入图中最右侧空白节点。

流程图结构化描述:

将整个流程图通过结构化方式进行描述,包括流程图总体信息、分支流程信息、连接线信息、节点信息,并对该描述进行格式解析,将信息置于对应容器中。

(1)流程图总体信息

使用可扩展标记语言XML进行描述,流程图总体信息属性包括:

1)流程唯一标识:唯一区分流程的符号;

2)父流程唯一标识:唯一区分本流程的父流程(上一层流程)符号,通过该属性实现本流程向父流程切换,即不同粒度流程切换;

3)是否复杂模式:区分流程图是简单模式还是复杂模式,简单模式流程图围绕活动主线进行绘制,复杂模式不存在活动主线。

(2)分支流程信息

分支流程信息属性包括:

1)名称:分支流程名称(可理解为活动或任务);

2)对应单位唯一标识:承担该流程或任务的单位的唯一区分符号;

3)是否主流程:在简单模式流程图中,标识该分支流程是否是活动主线上的流程;

4)所在行序号:当前分支流程所在的行序号。

由若干分支流程形成分支流程集合。

(3)节点信息

节点信息属性包括:

1)名称:当前节点的名称;

2)节点唯一标识:唯一区分节点的符号;

3)流程唯一标识:当前节点所属的流程图的唯一标识;

4)对应单位唯一标识:当前连接线关联的单位的唯一区分符号

5)所在行序号:节点所在的行序号;

6)所在列序号:节点所在的列序号;

7)节点状态:当前节点所代表的活动或任务的进展情况,可以根据需要进行扩展;

8)与前一节点距离:在同一行上与前一节点之间的距离。

由若干节点形成节点集合。

(4)连接线信息

连接线信息属性包括:

1)内容描述:连接线所代表的内容;

2)连接线唯一标识:唯一区分连接线的符号;

3)连接线类型:区分连接线类型,0表示直接连接线,1表示并行连接线、2表示分叉汇总连接线

4)是否上方:当连接线类型为并行连接线时,表示当前的并行连接线是在直接连接线的上方还是下方;

5)距主流程距离:当连接线类型为并行连接线时,表示当前的并行连接线与中间直接连接线平行线之间的距离;

6)是否汇总:当连接线类型为分叉汇总连接线时,表示是否为汇总连接线

7)对应单位唯一标识:当前连接线关联的单位的唯一区分符号;

8)起始节点唯一标识:当前连接线连接的起始节点唯一区分符号;

9)终止节点唯一标识:当前连接线连接的起始节点唯一区分符号。

由若干连接线形成连接线集合。

功能支撑:

为实现对应用支撑,流程监控功能支撑模块实现如下功能:

(1)基于QT二维图形引擎,实现流程图显示风格的设置,如字体颜色、大小,线条的颜色、粗细,流程图背景,流程图图元间隔大小、底色等;

(2)基于QtNetWork提供的网络传输功能,能够与远程终端实现网络传输以及消息收发;

(3)基于QtSql实现数据库表和视图的访问,实现数据库读取和存储操作;

(4)基于QtXML或者(2)中的数据库访问接口,对流程图的结构进行解析,形成流程图的总体信息、分支流程容器、节点容器、连接线容器等内容;

(5)针对(3)中的各类容器信息,通过有向图相关算法实现流程图的连通检查和闭环检查;

(6)通过总体信息的“父流程唯一标识”信息和指定节点信息的“流程唯一标识”信息可以回退到上一层流程图和进入节点对应的细化流程图,实现流程的缩放;

(7)提供用户对流程图进行编辑维护功能,并保存入库或形成XML文件。

应用支撑:

为支撑各种综合应用,流程监控应用支撑模块基于功能支撑层实现功能,具有如下应用支撑:

(1)针对分支流程容器、节点容器、连接线容器等内容,基于有向图拓扑排序方法,提供流程的拓扑排序和任务调度功能;

(2)针对应用需求,基于连接线或者节点赋予的参数信息,可以采用图关键路径和图最短路径算法对外提供求解关键路径和最短路径的功能接口;

(3)为满足类似于施工网络图的实际应用,控件基于连接线或者节点赋予的参数信息,提供基于AOE或AOV的最早开始时间、最迟开始时间、可晚开始时间、总机动时间、自由机动时间等计算功能;

(4)针对上述应用提供各种信息的应用提醒功能。

主要实现过程:

图2为整个构建及其应用关系图,右上部分是图元关系图,左上部分是图元的信息关系图,其余部分展现了如何通过图元构建流程图,并通过流程图实现监控的功能。其中表示继承、表示聚合、表示依赖,该图主要包含三个部分:

(1)左上侧为图元信息关系,主要包含节点信息类FlowChart_Node和连接线信息类FlowChart_Link,它们继承自图形信息基础类Ctrl_GraphicsInfoBase,用于表示节点类和连接线类所包含的图形显示信息。

(2)右上侧为图元关系,继承自Qt图形基类,主要包含QObject(QT所有类的基类)、QGraphicsLayoutItem(QT图形视图体系中布局对象基类)、QGraphicsItem(QT图形视图体系中二维图形基类)、QGraphicLineItem(QT图形视图体系中线形图形基类),并对其进行扩展,主要包含连接线类Ctrl_GraphicsLink和节点类Ctrl_GraphicsNodeBase。连接线主要派生出分叉连接线类Ctrl_GraphicsLinkBranch和并行连接线类Ctrl_GraphicsLinkParallel,节点主要派生出矩形类Ctrl_GraphicsNodeRectangle和圆形类Ctrl_GraphicsNodeCircle,不同图形可表示不同类型信息。每一个图元包含了相关图元信息,其中节点类中所在行、所在列、与前置节点之间关系、连接线类中起始节点、终止节点、连接线类型等信息用于绘制网络图,节点类中最早开始时间、最晚开始时间、可晚开始时间、连接线类中总机动时间、是否关键路径等信息用于表示网络图中各节点的时间特性,节点类中父子网络图信息用于表示网络图层级关系,用户也可以在现有构件的基础上继承派生出新属性的节点类和连接线类,比如可自定义显示的样式、颜色、包含的信息等特性,从而拓展系统的功能。

(3)下方为系统应用关系。在构建流程图时,通过流程图解析类CTM_FlowChartParser解析数据库或XML配置文件中存储的图元信息,包括节点信息、节点之间的前后续关系信息以及节点其他应用信息,在流程图显示窗口类CTM_FlowChartWidget中绘制连接线、节点,生成网络图,并通过布局器布局各图元。网络图中的连接线和节点可为监控对象,通过监听类sjyh_ssjk_server接收图元对应单位上报的状态信息,实时更新图元和网路图状态,在流程图监控类Sjyh_Ssjk_Wlt中可实时展现并控制任务流程,调用核心算法类Sjyh_WltXg可实时检查网络图当前状态,进行信息提示,辅助用户进行决策和控制,核心算法包括连通性检查、闭环性检查以及关键或最短路径计算等,用户可自定义拓扑图分析算法,提升对应用分析和辅助决策能力。

如图3所示为流程图创建的类序列图。

流程图显示窗口类调用解析类进行流程图结构解析,包括节点和连接线信息,所有结构信息放入显示窗口类的容器中,显示窗口类根据解析的结构信息进行流程图布局,同时调用图形节点类和图形连接线类在画布上绘制流程图节点和连接线,并初始化每个节点和连接线的属性信息,流程图绘制完毕后,调用连通性检查算法、闭环性检查算法等进行流程图的正确性检查。

节点间连接线绘制算法:

步骤1:连接两个节点类图元中心,形成一条连接线;

步骤2:将该连接线与节点类图元的边框进行相交判断,计算出连接线与两个节点类图元的交点,其中圆形节点直接得到圆与直线的相交点,矩形类节点需要将连接线与分别与四条边进行相交判断;

步骤3:两个交点的连接线就是需要画出的流程线。

本发明提供了一种基于QT的自动生成跨平台复杂流程图的系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号