Arbeiten mit Masstransit Ich habe eine einfache Statemachine vorbereitet und versuchte, sie als Meerjungfrau -Diagramm zu visualisieren, aber mit seltsamem Verhalten zu sehen.
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!
Arbeiten mit Masstransit Ich habe eine einfache Statemachine vorbereitet und versuchte, sie als Meerjungfrau -Diagramm zu visualisieren, aber mit seltsamem Verhalten zu sehen.[code] 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));
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"/]; [/code]
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!
Ich arbeite an einem Projekt, bei dem ich die Sekunden von Audio und Videobildern mithilfe eines zufälligen Zustands in Python neu anordne, mit dem Ziel, die Reihenfolge zu „verschlüsseln“. Nach der...
Ich arbeite an einem Jetpack -Komponierungsbildschirm, auf dem Benutzer einen Titel in einem Textfeld eingeben, und eine Schaltfläche ist nur aktiviert, wenn der Titel nicht leer ist. Das Problem...
Ich muss einen Status -Taste -Selektor verwenden. Ich habe einige ArtCicles im Internet zu diesem Thema gelesen, aber es funktioniert immer noch nicht.
Ich muss einen Status -Taste -Selektor verwenden. Ich habe einige ArtCicles im Internet zu diesem Thema gelesen, aber es funktioniert immer noch nicht.
Ich arbeite daran, ein Diagramm zu erstellen und die Datenbank mit C# WPF nachzuschlagen.
Es ist mir gelungen, die Datenbanksuche und das Diagramm durchzuführen.
Ist es möglich, ein Diagramm zu...