/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit.StateMachineVisualizer/Abstractions/StateMachineGenerator.cs
34 строки
1 KB
Chris Patterson
Source cleanup on visualizer
04 ноя 2024, 22:48
04 ноя 2024, 22:48
c580c30
Код
Авторство
О чём код?
namespace MassTransit.Visualizer.Abstractions { using System.Collections.Generic; using System.Linq; using QuikGraph; using SagaStateMachine; public abstract class StateMachineGenerator { protected readonly AdjacencyGraph<Vertex, Edge<Vertex>> Graph; public StateMachineGenerator(StateMachineGraph data) { Graph = CreateAdjacencyGraph(data); } static AdjacencyGraph<Vertex, Edge<Vertex>> CreateAdjacencyGraph(StateMachineGraph data) { var graph = new AdjacencyGraph<Vertex, Edge<Vertex>>(); List<Vertex> compositeTargets = data.Edges.Where(x => x.From.IsComposite).Select(x => x.To).ToList(); List<Vertex> targets = data.Edges.Select(x => x.To).ToList(); List<Vertex> vertices = data.Vertices.Where(v => targets.Contains(v) || v.Title == "Initial").ToList(); List<Edge> edges = data.Edges.Where(x => vertices.Contains(x.From) && !compositeTargets.Contains(x.From)).ToList(); graph.AddVertexRange(vertices); graph.AddEdgeRange(edges.Select(x => new Edge<Vertex>(x.From, x.To))); return graph; } } }