【问题标题】:Programatically generate graphical (ADAPT) models / diagrams of structured data [closed]以编程方式生成结构化数据的图形(ADAPT)模型/图表 [关闭]
【发布时间】:2012-11-22 15:29:52
【问题描述】:

我正在寻找从存储在数据库中的结构化数据生成图表的策略或其他起点。制作一个与我的要求非常相似的简化示例:

Input:          DDL SQL to create tables with attributes in a Database.
Desired output: ERD diagram of the tables with connections to each other as svg.

我要构建的图表类型是ADAPT,但由于我确信没有直接生成 ADAPT 图表的实现,我会对任何可以生成模型的东西(如 BPMN、EPK 或类似的东西)感到满意。 ERD 的生成器可能是一个开始,但由于 ADAPT 比 ERD 更复杂,因此需要大量定制。

我目前使用Drupal 创建一个原型,所以该领域的一些东西会很好,但我很高兴有任何可以学习解决核心问题的输入:如何使用结构化数据自动创建图形模型(没有关于元素放置、元素大小等方面的数据或用户交互)?

旁注:

  • svg 不是硬性要求(可以是 png 等),但对我来说似乎是最好的选择。
  • 我正在构建的应用程序记录了应成为模型的要求。
  • 该解决方案需要可集成到 Web 应用程序中。 (有某种 api)
  • Activiti 可以作为图表绘制的基础,但我找不到有关通过 API 而不是 UI 创建图表的信息。
  • Graphviz 可能是一个起点,但我还没有看到任何超越 ERD 的工作。
  • 这是一个学生项目,所以预算有限。

【问题讨论】:

  • 如何从结构化数据到 ADAPT 图是一个非常具体的问题。一个很可能没有人可以回答的问题,因为没有。那么我应该如何在不扩大范围的情况下提出这样的问题呢?我的问题是寻求从结构化数据到图形模型的策略。欢迎提出任何建议。我收到了有用的答案,您没有什么比结束问题更好的办法了,因为我写道,我也会对工具或库感兴趣作为起点。你甚至对答案投了反对票 - WTF?

标签: svg drupal-7 diagram dynamically-generated activiti


【解决方案1】:

有许多可用的图表库,每个都有自己的长处和短处。这在很大程度上取决于您的确切要求。我建议您评估一些替代方案,看看哪种方案最适合您。

我的想法在商业场景中,适用于各种平台的 yFiles 库套件可能是一种选择。从我所见,基于 HTML/JavaScript 的解决方案应该可以很好地满足您的要求:可以很容易地告诉它从各种输入源获取数据,自动创建结构,最重要的是计算图表的布局,以便它可以无需人工安排即可立即查看。您还可以高度自定义库:您可以使项目看起来像“ADAPT”中的项目,自定义用户交互性以便只允许有效的模型更改(如果您需要交互式编辑),当然可以做所有事情以编程方式使用灵活的 Javascript API。

这里有一个很好的例子来说明这种能力: Interactive Graph Source

完全披露:我在 yWorks 工作,但在 Stackoverflow 上我不代表我的雇主。

【讨论】:

  • 谢谢塞巴斯蒂安。我使用 yEd,它是一个很棒的工具,但不知道您拥有如此先进的基于 Web 的编辑器。我正在开发的软件是我的学士论文的一部分,所以我愿意在好的软件上投资一些钱,但 2.640 欧元的 yFiles for HTML 单一开发者许可证的费用在我短短两个月的预算之外使用。
【解决方案2】:

可以生成Graphviz'DOT语言,然后通过命令行运行Graphviz'DOT.exe程序,输入一个DOT语言文件,输出一个.svg文件。这种方法非常简单,因为您不需要通过 API 使用 Graphviz,而只需从您的编程环境中生成文本文件。

不确定这是否对您有帮助;也许只是一般的想法可能有用。

不过,更进一步,我已经在一个开源项目中完成了这项工作,与您在上面具体描述的显着不同之处在于我的项目采用表格(自我描述,结构化)数据而不是 SQL DDL 作为它的用户输入。输出是概念和关系形式的信息,可以以多种方式使用(搜索、操作、图表),其中一种是生成 .svg 输出,显示由各种颜色和标记的箭头互连的各种颜色和形状的实体。 .svg 输出是通过将概念和关系转换为适当的 DOT 文件,然后通过命令行运行 Graphviz,然后在 .svg 输出上启动 Firefox 来完成的。与您需要的内容有很多差异,但布局完全由 Graphviz 处理。

【讨论】:

  • 感谢您分享您的经验和代码。 SQL DDL 只是一个示例。我将以结构化的方式获取信息,因此在这种情况下,它与您开发的内容有些相似。我认为最大的不同是我的目标是更复杂的形状(ADAP)。我猜 GraphViz 是我最好的选择。由于您的代码可能会帮助我入门,因此我将奖励您的答案。
  • 好的,去github看看QuickRDA项目吧。
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-12
  • 2012-03-02
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多