【问题标题】:generate uml sequence diagrams with python or perl用python或perl生成uml序列图
【发布时间】:2012-10-30 09:42:23
【问题描述】:

我将处理一些文本以生成 uml 序列图 图像。我可以将pythonperl 中的文本处理成现有的“文本到uml”工具的格式,但我试图消除这个额外的步骤并直接从python/perl 脚本提供图像输出。

我可以使用任何 python 或 perl 包/模块吗?

【问题讨论】:

    标签: python perl uml sequence-diagram


    【解决方案1】:

    有许多 Python 替代品。

    如果您想从头开始生成图像,您可能需要考虑PIL(Python 图像库),它是 Python 的“事实上的”图像库。

    但是,特别是对于序列图,blockdiag 图图像生成器库(也使用 PIL)包括一个名为 seqdiag 的序列图生成器。例如,以下是如何定义和生成一个简单但完整的序列图,包括图表定义:

    from seqdiag import parser, builder, drawer
    
    diagram_definition = u"""
       seqdiag {
          browser  -> webserver [label = "GET /index.html"];
          browser <- webserver;
       }
    """
    tree = parser.parse_string(diagram_definition)
    diagram = builder.ScreenNodeBuilder.build(tree)
    draw = drawer.DiagramDraw('PNG', diagram, filename="diagram.png")
    draw.draw()
    draw.save()
    

    有关更多示例(序列)图定义和样式选项,请参阅 http://blockdiag.com/en/seqdiag/examples.html

    【讨论】:

    • 看起来正是我所需要的。我先试试这个,因为我比 perl 更熟悉 python,谢谢..
    • 我尝试从命令行运行,效果很好,但如何在脚本中使用它?我试过导入模块,但它似乎没有任何函数或类。我想我可以创建一个子进程,但我需要先给出一个文件输出,这将排除这样做的全部意义..
    • blockdiag google 组似乎有一些说明:例如参见 groups.google.com/forum/?fromgroups=#!topic/blockdiag-discuss/…
    • 这似乎只适用于blockdiag。我已经向讨论组询问了seqdiag。让我们看看他们怎么说,谢谢..
    • @gokcehan,如果您查看上面的示例,您会注意到它生成了一个序列图。这不是你要求的吗?在底层,seqdiag 实际上只是 blockdiag 之上的一个薄包装器。
    【解决方案2】:

    在 Perl 中有几个 perl 模块可以做到这一点,请参阅 UML::State

    摘自:

    use UML::State;
    
    my $diagram = UML::State->new(
      $node_array,
      $start_list,
      $accept_list,
      $edges
    );
    
    # You may change these defaults (doing so may even work):
    $UML::State::ROW_SPACING = 75;  # all numbers are in pixels
    $UML::State::LEFT_MARGIN = 20;
    $UML::State::WIDTH       = 800;
    $UML::State::HEIGHT      = 800;
    
    print $diagram->draw(); 
    

    CPAN 是你的朋友。:)

    【讨论】:

    • 我认为这是用于状态图的,但我还在同一页面中找到了UML::Sequence 用于序列图,谢谢..
    • @gokcehan 很抱歉混淆了,但是是的,如果你想要的话,很可能有一个 CPAN 模块
    • 由于某种原因无法安装这些。可能只是我是 CPAN 的新手。谁能证实这一点?
    • 我已经安装好了,如果在linux上试试sudo cpanm UML::State
    • cpanm 看起来比 cpan 容易得多,谢谢。我能够安装UML::State,但UML::Sequence 仍然出现配置错误并退出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多