Jason State هو تطبيق آلة الدولة البسيطة. تم تكوينه بواسطة ملف JSON.
| طَرد | |
|---|---|
| جيسونستت | |
| Jasonstate.Extension |
يمكن استخدام الأوامر التالية لتثبيت JasonState و Jasonstate.Extension ، قم بتشغيل الأمر التالي في وحدة تحكم Package Manager
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
}
]
} يجب أن ترث الدول من
وتنفيذ تنفيذ ، أو تنفيذي ، Method ، مع سياق حالتك. يمكنك استخدام أي إطار حقن التبعية لحقن البناء. لن يكسر أي شيء.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}تتيح لك Jason State إضافة أي نوع من الأشياء إلى السياق. كل ما تحتاجه أثناء تنفيذ الحالة يجب أن يكون في السياق.
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.
serviceCollection . AddJasonState < TestStateContext > ( ) ;أو
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; يمكن العثور على TestClient
يمكن العثور على asynctestclient 
مرخصة بموجب معهد ماساتشوستس للتكنولوجيا ، راجع ترخيص النص الكامل.