Ich habe eine Reihe von Klassen zur Darstellung eines gerichteten zyklischen Graphen zur Darstellung von BPM - Prozessen erstellt, basierend auf JUNG 's DirectedSparseGraph Klasse, die nur grundlegende Graphenmanipulationsmethoden zum Hinzufügen und Finden von Scheitelpunkten und Kanten bietet. Die Herausforderung, der ich gegenüberstehe, ist die Erstellung einer builder, die eine fluent interface bietet, die in der Lage ist, ein Diagramm zu erstellen, das komplexe Verzweigungen, Zyklen und mehrere Endknoten enthält (siehe Beispiele unten).Fließende Schnittstelle zum Aufbau eines gerichteten zyklischen Graphen?
parallele Zweige
Merging Zweige
Cycles
Complex
Mys aktuelle Implementierung (siehe Beispiel unten) zurückgreift den Scheitelpunkt zu Aliasing wo eine Gabel auftritt (beispielsweise Scheitelpunkt "B" in Parallel Branches) und dann I beziehen Sie sich auf den Alias, wenn Sie zu diesem Knoten einen neuen Zweig hinzufügen. Mein Builder enthält auch etwas Ähnliches, um das Zusammenführen von Zweigen und Zyklen zu ermöglichen. Aliase wurden eingeführt, da Vertexnamen in BPM-Diagrammen nicht eindeutig sind. Ich möchte eine elegantere fließende Oberfläche, um schnell Diagramme zu erstellen, die frei von diesen Referenzen sind.
Graph graph = GraphBuilder.newGraph()
.addVertex("A")
.edgeName("")
.addVertex("B", "b-fork")
.edgeName("")
.addVertex("C")
.edgeName("")
.addVertex("E")
.addBranch("b-fork")
.edgeName("")
.addVertex("D")
.edgeName("")
.addVertex("F")
.build();
Haben Sie darüber nachgedacht einen DOT-Parser zu Ihrem Programm hinzufügen?'GraphBuilder.parse (" A -> B; B -> C; B -> D; ")" scheint besser lesbar. –
@Duncan Bitte lesen Sie den gesamten Beitrag. Ich frage nicht nach dem gesamten Builder, ich möchte einfach keine Aliasnamen haben, weil sie nicht elegant sind. – izilotti
Da Sie ein zyklisches Diagramm erstellen möchten, aber die Methodenkette eine Baumstruktur aufweist, scheint eine Form von Aliasing unvermeidlich. –