【问题标题】:Generating UML diagrams from textual representation从文本表示生成 UML 图
【发布时间】:2010-05-09 13:43:44
【问题描述】:

如何使用 Linux 中的命令行工具从包含我的流程的文本表示的文件生成 UML 序列图?

【问题讨论】:

    标签: linux uml


    【解决方案1】:

    尽管PlantUML 已列在已接受的答案中(在许多其他工具中),但它值得更多关注。

    PlantUML 除了可以方便地包装成命令行工具之外,还有

    1. 优秀的文档(查看sequence diagrams 的文档)
    2. 简单而强大的语法(可以与UMLGraph相媲美)
    3. 样式化输出
    4. 广泛的工具集成(Emacs、Sphinx)

    不过,PlantUML 是作为 java 存档提供的,因此可能需要进行以下设置:

    1. java
    2. graphviz(序列图不需要)
    3. bash 包装器

    java 和 graphviz 可作为主要 linux 发行版的软件包。 PlantUML 本身可用于 Fedora 和 Ubuntu。

    如果您的发行版不提供包,请从主站点下载 jar 文件并打包为 bash 脚本。

    bash 包装器(如下)可以存储在路径上名为 plantuml 的文件中,即echo $PATH 列出的目录之一。不要忘记使用chmod u+x plantuml 使其可执行。

    #!/bin/bash
    # from the vim syntax plugin README at aklt/plantuml-syntax on github
    java -jar $HOME/path/to/plantuml.jar -tsvg $@
    

    然后运行plantuml apple.uml berry.uml,plantuml 将创建 apple.svg berry.svg。

    【讨论】:

      【解决方案2】:

      有很多(很多=超过 10 个)工具可以做到这一点。
      complete list

      【讨论】:

        【解决方案3】:

        不确定是不是你想要的,但UMLGraph 可以使用graphviz 和ghostscript 生成序列图...

        【讨论】:

        • 不需要 Ghostscript。 GraphViz 可以直接生成 PNG、SVG 等多种文件类型。
        • @Diomidis:重新阅读我的评论,我意识到我搞混了几件事: - GraphViz(单独)用于生成类图 - GNU plotutils(单独)用于生成序列图.在我很久以前写的一些脚本中,我使用 ghostscript 以高分辨率渲染图表。然后将其输入 ImageMagick 以使背景透明。见blog.julien.cayzac.name/2004/11/…
        【解决方案4】:

        如果您的文本表示与 yuml 非常相似,您也许可以使用它来生成图像,例如

        简单关联

        [Customer]->[Billing Address]
        <img src="http://yuml.me/diagram/scruffy/class/[Customer]->[Billing Address]"/>

        【讨论】:

          【解决方案5】:

          http://umlet.com/ 是另一种解决方案

          【讨论】:

            【解决方案6】:

            将以下源码放入 .html 文件并在浏览器中打开:

            <html>
                <head>
                    <script src="http://code.jquery.com/jquery-latest.js"></script>
                    <script>
                        $(document).ready(function () {
                            $('textarea').each(function () {
                                $(this).hide();
                                var source = $(this).html();
                                $('body').append('<img src="http://yuml.me/diagram/scruffy/class/'
                                    + source + '" />');
                            });
                        });
                    </script>
                </head>
                <body>
                    <textarea>
                        [note: You can stick notes on diagrams too!{bg:cornsilk}],
                        [Customer]<>1-orders 0..*>[Order],
                        [Order]++*-*>[LineItem],
                        [Order]-1>[DeliveryMethod],
                        [Order]*-*>[Product],
                        [Category]<->[Product],
                        [DeliveryMethod]^[National],
                        [DeliveryMethod]^[International]
                    </textarea>
                </body>
            </html>
            

            您应该能够在 textarea 标记中看到与源对应的sample diagram。根据yuml samples更正出处,自己画图。

            【讨论】:

              【解决方案7】:

              使用脚本替换:

              • 一个空格有多个空格
              • 带有列字符的逗号,例如|
              • 带有回车加空格缩进的换行符
              • 带有多个破折号的破折号
              • 大于和小于列跨字符的字符

              参考文献

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-09-06
                • 1970-01-01
                • 1970-01-01
                • 2011-08-30
                • 2017-07-08
                • 1970-01-01
                • 2013-12-15
                相关资源
                最近更新 更多