Masstransit State Machine zu Meerjungfrau -Diagramm -VisualisierungsproblemC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Masstransit State Machine zu Meerjungfrau -Diagramm -Visualisierungsproblem

Post by Anonymous »

Arbeiten mit Masstransit Ich habe eine einfache Statemachine vorbereitet und versuchte, sie als Meerjungfrau -Diagramm zu visualisieren, aber mit seltsamem Verhalten zu sehen.

Code: Select all

 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>
Für die Visualisierung verwende ich Masstransit.statemachinevisualizer < /p>
            var machine = new TestStateMachine();
var graph = machine.GetGraph();
var generator = new StateMachineMermaidGenerator(graph);
string mermaid = generator.CreateMermaidFile();
< /code>
und ich erhalte die folgenden Ergebnisse < /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"/];
Ist es korrekt, dass "filesmovedEvent" und "recSprefroveDEvent" vom ersten Ereignis entsteht, wenn man bedenkt, dass ich einen Übergang (bereit) und wechselte (dataPrepared) durchgeführt habe. Ereignisse Habe ich die staatliche Maschine verpasst oder habe ich gerade ein Schema verpasst?
Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post