私が取り組んでいるフレームワークは、他のサービスに依存するステートフル サービスで構成され、有向非巡回グラフhttp://en.wikipedia.org/wiki/Directed_acyclic_graphを形成します
できるだけ効率的にサービスを開始したい。これは、可能であればサービスを並行して開始することを意味します。たとえば、ウィキペディアのリンクのグラフ。依存関係がないため、3、5、および 7 を同時に開始します。トポロジカル ソートを見てきましたが、それだけでは何が並列に開始できるかわかりません。次のようなサービスをグループ化するためのライブラリ/APIを探しています:
a b、c、d、 e. f、g、 時間
これは、最初に「a」を開始し、次に「b」、「c」、および「d」を並行して開始し、次に「e」というように開始するように指示します。
Vertices をモデル化するライブラリをいくつか見つけましたが、探しているグループ化を行うライブラリはありません。これまでのところ、有向グラフの実装をいくつか見つけましたが、寛容なライセンス (非 gpl など) が必要です。ComputeNodeOrder http://www.docjar.com/docs/api/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.Digraph.html (equinox org.eclipse.osgi_3.6.2.R36x_v20110210 から)、Jgrapht ( lgpl) http://www.jgrapht.org/javadoc/、ユングhttp://jung.sourceforge.net/index.html、プレクサスhttp://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus /plexus/util/dag/DAG.htmlしかし、これらのいずれか/すべてが必要なことを行うかどうかはわかりません。