【问题标题】:Tool to generate Petri Net as SVG将 Petri 网生成为 SVG 的工具
【发布时间】:2017-05-08 12:08:10
【问题描述】:

我被要求构建一个 petri 网引擎,作为内部工作流程的基础。

到目前为止,我已经能够生成所有逻辑和行为(我创建了一个“服务台”类型的工作流来测试规则和条件)并且一切正常。

然而,事实证明有点痛苦的是,将 Petri 网可视化并自动执行此可视化。

我一直在看 SVG 绘图例程,例如: http://flowchart.js.org(流程图) https://bramp.github.io/js-sequence-diagrams/(序列图)

我很想修改其中一个或找到一个类似的作为基础,但我遇到了一个意想不到的问题:我完全不熟悉复杂的绘图例程和处理自动放置的理论多个并发连接和分支。

上面的两个例子很简单,但是在 Petri 网中,你可能有一个地方产生多个转换,如果处理不当,即使是短/简单的网络也很容易变成笨拙的图表。

解决这个问题的最佳方法是什么?

【问题讨论】:

  • 我认为最好的方法是像这样的 d3 力图; jsfiddle.net/tangentstorm/bjp5nv4a
  • 谢谢。我看到了,但不能让它工作得足够好以使它正常。我想我可能只是不知道一个简单的可视化算法可以帮助构建我需要的图表。

标签: javascript svg workflow diagram petri-net


【解决方案1】:

由于您不熟悉该主题,我认为使用或调整提供自动大纲算法的现有工具会更容易。

试试旧的好 graphviz 包,它提供了许多用于图形的美化算法。我已经看到它适用于公司工作流程可视化 (虽然我认为是png,并使用后端)。有 vis.js 版本,vis.js 及其衍生版本,d3 混合,但我个人从未尝试过。

对于实验和小型网络,有免费服务 https://glitch.com/edit/#!/graphviz?path=README.md:1:0

SVG 是受支持的输出之一 http://www.graphviz.org/doc/info/output.html

您可能需要超过 1000 个节点的大型缓存: http://www.graphviz.org/content/drawing-large-petrinet

Boris Stitnicky 用 graphviz 开发了 YPetri,(我没有检查 svg) 为他工作,可能为大量其他工作流可视化工具工作。

Petri net drawing and code generation

如果您想自己实现一些算法,可能会在 Comp Science 小组询问,有很多技术和算法可以绘制精美的图形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2012-10-19
    • 2012-01-16
    相关资源
    最近更新 更多