MassTransit State Machine to Marmaid -диаграмма.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 MassTransit State Machine to Marmaid -диаграмма.

Сообщение Anonymous »

Работа с MassTransit я подготовил простой Стеймейн и пытаясь визуализировать его как диаграмму русалки, но столкнувшись со странным поведением < /p>
Вот мой код машины состояния < /p>

Код: Выделить всё

 public class TestState : SagaStateMachineInstance
{
public Guid CorrelationId { get; set; }
public string CurrentState { get; set; }
public int ReadyEventStatus { get; set; }
public int ReadyEventStatus2 { get; set; }
}

public class TestStateMachine : MassTransitStateMachine
{
public State Ready { get; private set; } = null!;
public State DataPrepared { get; private set; } = null!;

public Event UploadedEvent { get; private set; }
public Event CreatedEvent { get; private set; }

public Event CompositeReadyEvent { get; private set; }

public Event FilesMovedEvent { get; private set; }
public Event RecsPreparedEvent { get; private set; }

public Event CpmpositeDataPreparedEvent { get; private set; }

public Event
 PrepareBackgroundJobEvent { get; private set; }

public TestStateMachine()
{
Event(() => UploadedEvent, e => e.CorrelateById(context => context.Message.CorrelationId));
Event(() => CreatedEvent, e => e.CorrelateById(context => context.Message.CorrelationId));
Event(() => PrepareBackgroundJobEvent, e => e.CorrelateById(context => context.Message.CorrelationId));

InstanceState(x => x.CurrentState);

Initially(
When(UploadedEvent)
.Then(context => {
Console.WriteLine("Application Uploaded 1 : {0}", context.Saga.CorrelationId);
}),

When(CreatedEvent)
.Then(context => Console.WriteLine("Application Created 1 : {0}", context.Saga.CorrelationId))
);

CompositeEvent(() => CompositeReadyEvent, x => x.ReadyEventStatus, CompositeEventOptions.IncludeInitial, UploadedEvent, CreatedEvent);

During(Initial,
When(CompositeReadyEvent)
.Then(context => Console.WriteLine("Application Ready: {0}", context.Saga.CorrelationId))
.TransitionTo(Ready)
);

CompositeEvent(() => CpmpositeDataPreparedEvent, x => x.ReadyEventStatus2, CompositeEventOptions.IncludeInitial, FilesMovedEvent, RecsPreparedEvent);

During(Ready,
When(CpmpositeDataPreparedEvent)
.Then(context => Console.WriteLine("Application data prepared: {0}", context.Saga.CorrelationId))
.TransitionTo(DataPrepared)
);

During(DataPrepared,
When(PrepareBackgroundJobEvent)
.Then(context => Console.WriteLine("Application creation completed: {0}", context.Saga.CorrelationId))
);

SetCompletedWhenFinalized();
}
}
< /code>
Для визуализации я использую MassTransit.stateMachineVisualizer < /p>
            var machine = new TestStateMachine();
var graph = machine.GetGraph();
var generator = new StateMachineMermaidGenerator(graph);
string mermaid = generator.CreateMermaidFile();
< /code>
И я получаю следующие результаты < /p>
flowchart TB;
0(["Initial"]) --> 3["UploadedEvent"];
0(["Initial"]) --> 5["CreatedEvent"];
0(["Initial"]) --> 6["FilesMovedEvent"];
0(["Initial"]) --> 8["RecsPreparedEvent"];
3["UploadedEvent"] --> 4[\"CompositeReadyEvent"/];
4[\"CompositeReadyEvent"/] --> 1(["Ready"]);
5["CreatedEvent"] --> 4[\"CompositeReadyEvent"/];
6["FilesMovedEvent"] --> 7[\"CpmpositeDataPreparedEvent"/];
7[\"CpmpositeDataPreparedEvent"/] --> 2(["DataPrepared"]);
8["RecsPreparedEvent"] -->  7[\"CpmpositeDataPreparedEvent"/];
Правильно ли, что «filesmovenEvent» и «RecSpRearedEvent» выходят из первоначального события, учитывая, что я выполнил TransitionTo (готово) и TransitionTo (dataPrepared), я ожидаю, что состояние «готово» должно быть родителем для «FilesMovenEvent» и «RecSpRepRearedEvent» События.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... tion-issue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как реализовать State Machine в чистой архитектуре?
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать State Machine в чистой архитектуре?
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Конфигурация по умолчанию для Spring State Machine с JPA
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как справиться со сбросом Spring State Machine после восстановления из базы данных?
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • C ++ State Machine, унаследованный класс со значениями элементов с неправильным синтаксисом
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»