こんにちは、ハブル!
      
        
        
        
      
    
ビジネスに取り掛かりますが、少し背景がまだ必要です。1年半前に、大学の理論を備えた単純なステートマシン(ステートマシン)を実装することが必要になりました。
      
        
        
        
      
    
既存のソリューションには致命的な欠陥があるだけでなく、複雑な構造やドキュメントの欠如など、他にも多くの重大な欠点があるため、Googleで費やした時間は結果なしで通過しました。
私はすぐにこの記事に出くわし、便利な解決策がないことを確認しました。
その後、あなたは何をしましたか?
タスクは(いつものように)すばやく解決する必要があったので、私の有限状態マシンは辞書を使用して実装されました。
- 状態のリストがあります(列挙型)
 - ( )
 - (map): --
 
, « » , , ( )
?
« » . , , , - .
:     .
      
        
        
        
      
    
         ,      . 
...
wpf ReactiveUI.
             .
      
        
        
        
      
    
 ,      xml .

, — . gif .
機会
2つのテーマ

:
- ( )
 








/ / xml
<?xml version="1.0" encoding="utf-8"?>
<StateMachine>
  <States>
    <State Name="Start" Position="37, 80" IsCollapse="False" />
    <State Name="State 1" Position="471, 195.54" IsCollapse="False" />
    <State Name="State 2" Position="276, 83.03999999999999" IsCollapse="False" />
  </States>
  <StartState Name="Start" />
  <Transitions>
    <Transition Name="Transition 2" From="State 2" To="State 1" />
    <Transition Name="Transition 1" From="Start" To="State 2" />
  </Transitions>
</StateMachine>
      PNG/JPEG

:
-           .
      
StateMachine stateMachine = new StateMachine("scheme.xml"); -     ,   «»  ,   .
      
stateMachine.GetState("State1").OnExit(Action1); stateMachine.GetState("State2").OnEntry(Action2); stateMachine.GetTransition("Transition1").OnInvoke(Action3); stateMachine.OnChangeState(Action4); - .
      
stateMachine.Start(parameters); 
, , , , export , .
?
   ,   Entry/Exit  , :
      
        
        
        
      
    
      
        
        
        
      
    
StateMachine.InvokeTransition("Transition1", parameters);
      , , , .
?
- .
 - Data — , StateMachine .
 
, .
:
- /
 - / / xml
 
    ,      .
      
        
        
        
      
    
       .
      
        
        
        
      
    
,           — ,   ! 
. :
. , .
:
stateMachine.GetState("State1");
      
stateMachine.State1;
       ,  dynamic         .
      
        
        
        
      
    
   - -,      .
. :
- .
 - ノードの
      
自動割り当て-キャンバス上の要素の自動レイアウトのための魔法のボタン - クロス
      
- プラットフォーム-AvaloniaUIでのプロジェクトの翻訳 
結論
- ステートマシンは3つのステップで作成しますが、マシンの構造はいつでも視覚的に表示および編集できます。
 - プロジェクトのさらなる発展
 
参考文献
グラフィックエディター、GitHubのソース:SimpleStateMachineNodeEditor
      
        
        
        
      
     
ライブラリ、GitHubのソース:SimpleStateMachineLibrary