0

データベースに保存された構造化データから図を生成するための戦略やその他の出発点を探しています。私の要件に非常に似た単純化された例を作成するには:

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はダイアグラム描画のベースになる可能性がありますが、UI ではなく API を介したダイアグラム作成に関する情報を見つけることができません。
  • Graphvizは出発点かもしれませんが、ERD 以外の作業は見たことがありません。
  • これは学生プロジェクトのため、予算は限られています。
4

2 に答える 2

1

多数の作図ライブラリが利用可能であり、それぞれに長所と短所があります。それはあなたの正確な要件に大きく依存します。いくつかの選択肢を評価して、自分に最も適したものを見つけることをお勧めします。

私の考え:商用シナリオでは、さまざまなプラットフォーム用のライブラリの yFilesスイートがおそらくオプションです。私が見る限り、HTML/JavaScript ベースのソリューションはあなたの要件を十分に満たすはずです: さまざまな入力ソースからデータを取得し、構造を自動的に作成し、最も重要なこととして、ダイアグラムのレイアウトを計算するように簡単に指示できます。手で並べなくてもすぐに見られます。また、ライブラリを非常に高度にカスタマイズすることもできます。アイテムを「ADAPT」のアイテムのように見せたり、有効なモデルの変更のみが許可されるようにユーザーのインタラクティブ性をカスタマイズしたり (インタラクティブな編集が必要な場合)、もちろんすべてを行うことができます。これは柔軟な Javascript API を使用してプログラムで実行できます。

ここにその機能の良い例があります: Interactive Graph Source

完全な開示: 私は yWorks で働いていますが、Stackoverflow では雇用主を代表していません。

于 2012-11-23T08:41:22.023 に答える
0

GraphvizのDOT言語を生成してから、コマンドラインでGraphvizのDOT.exeプログラムを実行できます。このプログラムは、DOT言語ファイルを入力して.svgファイルを出力します。このアプローチは、APIによるGraphvizを使用する必要がなく、代わりに、プログラミング環境が何であれ、テキストファイルを生成するだけなので非常に簡単です。

これがあなたに役立つかどうかはわかりません。おそらく、一般的な考え方だけが役立つかもしれません。

ただし、これはオープンソースプロジェクトで行いました。上記で具体的に説明したものとの顕著な違いは、プロジェクトがユーザー入力としてSQL DDLではなく表形式(自己記述型の構造化)データを使用することです。 。出力は、いくつかの方法(検索、操作、図解)で使用できる概念と関係の形式の情報です。そのうちの1つは、さまざまな色とラベルの付いた矢印で相互接続されたさまざまな色と形のエンティティを示す.svg出力を生成することです。.svg出力は、概念と関係を適切なDOTファイルに変換し、コマンドラインでGraphvizを実行してから、.svg出力でFirefoxを起動することによって実行されます。必要なものとの多くの違いは、それでも、レイアウトは純粋にGraphvizによって処理されます。

于 2012-12-05T02:07:08.550 に答える