Utworzono zestaw klas reprezentujących skierowany cykliczny wykres do reprezentowania procesów BPM, oparty na klasie JUNGDirectedSparseGraph, który zapewnia tylko podstawowe metody manipulacji wykresami w celu dodawania i znajdowania wierzchołków i krawędzi.Płynny interfejs do budowania ukierunkowanego wykresu cyklicznego?
Wyzwanie, przed którym stoję, polega na stworzeniu builder, który zapewnia fluent interface możliwość tworzenia wykresów zawierających złożone rozgałęzienia, cykle i wiele węzłów końcowych (patrz przykłady poniżej).
równoległych gałęzi
Łączące Gałęzie
Cycles
Kompleks
My prąd realizacja (patrz przykład poniżej) uciekają się do aliasing wierzchołek której ma widełki (np wierzchołek "B" Parallel Branches), a potem odwołaj się do aliasu dodając nową gałąź do tego wierzchołka. Mój twórca zawiera również coś podobnego, co pozwala na łączenie gałęzi i cykli. Wprowadzono aliasy, ponieważ nazwy wierzchołków nie są unikalne na wykresach BPM. Chcę bardziej eleganckiego, płynnego interfejsu, aby szybko tworzyć wykresy, wolne od tych odniesień.
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();
Czy za dodanie parser DOT do swojego programu?'GraphBuilder.parse (" A -> B; B -> C; B -> D; ")' wydaje się bardziej czytelne. –
@Duncan Przeczytaj cały wpis. Nie proszę o całego budowniczego, po prostu nie chcę mieć aliasów, bo nie są eleganckie. – izilotti
Jeśli chcesz zbudować cykliczny wykres, ale łańcuch metod ma strukturę drzewa, pewna forma aliasingu wydaje się nieunikniona. –