state machine
1.0.0
ジェイソン州は、シンプルな州のマシンの実装です。 JSONファイルによって構成されています。
| パッケージ | |
|---|---|
| JasonState | |
| jasonstate.extension |
次のコマンドを使用して、jasonstateとjasonstate.extensionをインストールすることができます。パッケージマネージャーコンソールで次のコマンドを実行します
dotnet add package JasonState
dotnet add package JasonState.Extension
または、 dotnet cliを使用します
dotnet add package JasonState
dotnet add package JasonState.Extension
まず、有効なJSONファイルを提供する必要があります。このJSONファイルには、状態配列が含まれている必要があります。この配列にはあります
オブジェクト。
配列が含まれます
オブジェクト有効なJSONファイルの例は、 
{
"States" : [
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " InitialState " ,
"NextState" : [
{
"Condition" : " !string.IsNullOrEmpty(FromEmail) && FromEmail.Equals( " [email protected] " ) " ,
"State" : " ValidatePaymentState "
},
{
"Condition" : " !string.IsNullOrEmpty(FromEmail) && FromEmail.Equals( " [email protected] " ) " ,
"State" : " FinalState "
}
],
"ErrorState" : " ErrorState "
},
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " ErrorState " ,
"NextState" : [
{
"Condition" : " true " ,
"State" : " FinalState "
}
],
"ErrorState" : null
},
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " FinalState " ,
"NextState" : null ,
"ErrorState" : null
}
]
}州は継承しなければなりません
そして、状態のコンテキストを使用したメソッドを実行するか、 execueSyncを実装します。建設注入のために任意の依存関係噴射フレームワークを使用できます。何も壊れません。
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}ジェイソン州では、あらゆる種類のオブジェクトをコンテキストに追加できます。州の実行中に必要なものはすべて、コンテキストにある必要があります。
public class TestStateContext
{
public long CreditCardNumber { get ; set ; }
public string CardHolderName { get ; set ; }
public decimal Amount { get ; set ; }
}
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
context . CreditCardNumber = "4545454545454545" ;
}
}jasonState.extensionを参照することにより、次のように必要な依存関係をServiceCollectionに登録します
serviceCollection . AddJasonState < TestStateContext > ( ) ;または
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClientを見つけることができます
AsynctestClientを見つけることができます
MITの下でライセンスを取得して、全文のライセンスを参照してください。