• 使用 Graphviz 绘制流程图


    流程图常用符号及对应的无样式 dot 语句[1]

    形状 描述 DOT
    Flowline (Arrowhead) 用来表达过程的次序,用一条线由一个符号连接去到另一个符号。如果不是标准的上至下、左至右图就会加上箭头 ->
    Terminal 用来表示次要或程式的开始与完结。常以一个圆角长方形表示。通常里面会标上“开始”或“结束”或其他相关字眼,如“提交查询”或“接受产品” terminal [shape="plain" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>起止符号</TD></TR></TABLE>>];
    Process 以长方形来代表一系列程序去改变数值、形式、数据的位置 process [shape="rectangle" label="程序"];
    Decision 以一个菱形去显示一个条件进程,用来按情况去决定下一步走向。通常以“是/否”或“真/假”值去决定 decision [shape="diamond" label="决策判断"];
    Input/Output 以平行四边形来标示数据输入或输出的过程,即填入数据或显示工作结果的步骤 io [shape="parallelogram" label="输入/输出"];
    Annotation (Comment) 用来补充某步骤的额外资讯,可用一个虚线来连接一个半闭合的长方型至想注释的符号中 comment [shape="plain" margin=0 label=<<TABLE BORDER="1" SIDES="TBL" CELLPADDING="4" CELLBORDER="0" CELLSPACING="0"><TR><TD>注解</TD></TR></TABLE>>]; x -> comment [style="dotted" arrowhead="none"];
    Predefined Process 用一个有2条左右垂直线长方型,来表示一个已在其他地方定义了的过程 predefined [shape="plain" label=<<TABLE CELLBORDER="1" CELLPADDING="4" CELLSPACING="0" BORDER="0"><TR><TD></TD><TD>已定义流程</TD><TD></TD></TR></TABLE>>];
    On-page Connector 用一个含有字母的小圆圈来连接目标流程画于同一页上 onpage [shape="circle" label="同页参考"];
    Off-page Connector 用一个倒画的屋型来表示目标流程画于另一页上 offpage [shape="invhouse" label="换页参考"];
    Data File or Database 用一个圆柱来表示数据库 db [shape="cylinder" label="数据档或资料库"];
    Preparation or Initialization 用一个拉长了的六角形来代表初始化或预备的过程 init [shape="hexagon" label="初始化"];

    如果想要支持更复杂的符号, 请参见 How can I create custom shapes?

    一个简单的流程图样例 (flowchart_demo.dot)[2]

    digraph flowchart {                                                                       // terminal 	[shape="plain" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>起止符号</TD></TR></TABLE>>];
        // process [shape="rectangle" label="程序"];
        // decision [shape="diamond" label="决策判断"];
        // io [shape="parallelogram" label="输入/输出"];
        // comment [shape="plain" margin=0 label=<<TABLE BORDER="1" SIDES="TBL" CELLPADDING="4" CELLBORDER="0" CELLSPACING="0"><TR><TD>注解</TD></TR></TABLE>>];
        // predefined [shape="plain" label=<<TABLE CELLBORDER="1" CELLPADDING="4" CELLSPACING="0" BORDER="0"><TR><TD></TD><TD>已定义流程</TD><TD></TD></TR></TABLE>>];
        // onpage [shape="circle" label="同页参考"];
        // offpage [shape="invhouse" label="换页参考"];
        // db [shape="cylinder" label="数据档或资料库"];
        // init [shape="hexagon" label="初始化"];
    
        // rankdir = "LR";
        start [shape="none" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>电灯不工作了</TD></TR></TABLE>>];
        decision_1 [shape="diamond" label="电灯接好了么?"];
        comment_1 [shape="none" margin=0 label=<<TABLE BORDER="1" SIDES="TBL" CELLPADDING="4" CELLBORDER="0" CELLSPACING="0"><TR><TD>some comments...</TD></TR></TABLE>>];  // 位置决定其渲染顺序
        end_1 [shape="none" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>接好电源</TD></TR></TABLE>>];
        decision_2 [shape="diamond" label="灯泡烧毁了么?"];
        end_2 [shape="none" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>更换灯泡</TD></TR></TABLE>>];
        end_3 [shape="none" label=<<TABLE BORDER="1" CELLPADDING="4" STYLE="ROUNDED" CELLBORDER="0" CELLSPACING="0"><TR><TD>修理电灯</TD></TR></TABLE>>];
        
        start -> decision_1;
        decision_1 -> comment_1 [style="dashed" arrowhead="none"];
        decision_1 -> end_1 [label="否"];
        decision_1 -> decision_2 [label="是"];
        decision_2 -> end_2 [label="否"];
        decision_2 -> end_3 [label="是"];
    }
    

    dot -Kdot flowchart_demo.dot -Tpng -o flowchart-demo.png[3]

    flowchart-demo


    1. 流程图 ↩︎

    2. The DOT Language ↩︎

    3. Command-line Invocation ↩︎

  • 相关阅读:
    大话设计模式--建造者模式 Builder -- C++实现实例
    HTTP状态码大全
    安装mongodb卡顿
    sublime_win配置
    sublime__最全面的 Sublime Text 使用指南
    sublime text 3搭建python 的ide
    spring boot与 spring.factories
    自定义xml spring bean
    统计分析: 跨库多表join
    java基础
  • 原文地址:https://www.cnblogs.com/ayuuuuuu/p/13452432.html
Copyright © 2020-2023  润新知