All Projects → psibr → REstate

psibr / REstate

Licence: MIT license
Portable state-flows (state-machine based workflows)

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to REstate

Xamarinmediamanager
Cross platform Xamarin plugin to play and control Audio and Video
Stars: ✭ 647 (+1748.57%)
Mutual labels:  nuget, netstandard
Zipstorer
A Pure C# Class to Store Files in Zip
Stars: ✭ 139 (+297.14%)
Mutual labels:  nuget, netstandard
Computesharp
A .NET 5 library to run C# code in parallel on the GPU through DX12 and dynamically generated HLSL compute shaders, with the goal of making GPU computing easy to use for all .NET developers! 🚀
Stars: ✭ 982 (+2705.71%)
Mutual labels:  nuget, netstandard
KuttSharp
🔪 .NET Package for kutt.it url shortener
Stars: ✭ 29 (-17.14%)
Mutual labels:  nuget, netstandard
SimpleStateMachineLibrary
📚 A simple library for realization state machines in C# code
Stars: ✭ 30 (-14.29%)
Mutual labels:  state-machine, netstandard
Opengl.net
Modern OpenGL bindings for C#.
Stars: ✭ 473 (+1251.43%)
Mutual labels:  nuget, netstandard
Colore
A powerful C# library for Razer Chroma's SDK
Stars: ✭ 121 (+245.71%)
Mutual labels:  nuget, netstandard
Vs Validation
Common input and integrity validation routines for Visual Studio and other applications
Stars: ✭ 48 (+37.14%)
Mutual labels:  nuget, netstandard
Megaapiclient
MegaApiClient is a C# .Net library to access http://mega.co.nz / http://mega.nz cloud storage and file hosting service.
Stars: ✭ 151 (+331.43%)
Mutual labels:  nuget, netstandard
Ether.network
https://github.com/Eastrall/Sylver
Stars: ✭ 147 (+320%)
Mutual labels:  nuget, netstandard
stateless
Finite State Machine porting from Stateless C#
Stars: ✭ 25 (-28.57%)
Mutual labels:  state-machine, dot-graph
IGeekFan.AspNetCore.Knife4jUI
support .NET Core3.0+,.NET Standard2.0 Swagger UI knife4j ui,you can use NSwagger or Swashbuckle.AspNetCore in packages
Stars: ✭ 178 (+408.57%)
Mutual labels:  nuget, netstandard
Vortice.windows
.NET standard bindings for DirectX, WIC, Direct2D1, XInput, XAudio and X3DAudio
Stars: ✭ 427 (+1120%)
Mutual labels:  nuget, netstandard
Vs Threading
The Microsoft.VisualStudio.Threading is a xplat library that provides many threading and synchronization primitives used in Visual Studio and other applications.
Stars: ✭ 585 (+1571.43%)
Mutual labels:  nuget, netstandard
lastfm
Portable .Net library for Last.fm
Stars: ✭ 87 (+148.57%)
Mutual labels:  nuget, netstandard
Eventflow
Async/await first CQRS+ES and DDD framework for .NET
Stars: ✭ 1,932 (+5420%)
Mutual labels:  nuget, netstandard
Formatwith
String extensions for named parameterized string formatting.
Stars: ✭ 44 (+25.71%)
Mutual labels:  state-machine, nuget
dark-sky-core
A .NET Standard Library for using the Dark Sky API.
Stars: ✭ 55 (+57.14%)
Mutual labels:  nuget, netstandard
SapientGuardian.EntityFrameworkCore.MySql
MySQL database provider for Entity Framework Core
Stars: ✭ 54 (+54.29%)
Mutual labels:  netstandard
NLog.Targets.GraylogHttp
NLog target that pushes log messages to Graylog using the Http input.
Stars: ✭ 17 (-51.43%)
Mutual labels:  netstandard

Build status AppVeyor tests

NuGet REstate Release NuGet REstate Concurrency Primitives Release NuGet REstate Remote Release

NuGet REstate Redis Repo Release NuGet REstate EFCore Repo Release

REstate Logo

"Android, bionic, hand, machine, palm, robot, technology icon" by designforeat, used under CC BY 3.0/Partially rotated from original

REstate

REstate is a portable state-flow system. It allows you to define a set of possible states that a program can exist in and what input will cause the transition between any two states. When it transitions into a given state, you can define an action that will execute arbitrary code. This can be used to build complex, but deterministic and predefined systems, such as workflow systems or distributed systems.

A Schematic may be defined on one server or workstation, but then used on others. REstateMachines can call arbitrary code through the connector system, provided the connector exists on the system where it is running.

Given the following REstate schematic, represented in DOT Graph:

EchoMachine Schematic in DOT Graph

Here is the code to build the schematic:

var schematic = REstateHost.Agent
    .CreateSchematic<string, string>("LoggerMachine")

    .WithState("Created", state => state
        .AsInitialState())

    .WithState("Ready", state => state
        .WithTransitionFrom("Created", "log")
        .WithReentrance("log")
        .WithAction("log info", onEntry => onEntry
            .DescribedAs("Logs the payload as a message.")
            .WithSetting(
                key: "messageFormat", 
                value: "{schematicName}({machineId}) entered {state} on {input}. Message: {payload}")))

    .Build();

Schematics are serializer friendly.

The same schematic in YML (YamlDotNet):

SchematicName: LoggerMachine
InitialState: Created
States:
- Value: Created
  Transitions:
  - Input: log
    ResultantState: Ready
- Value: Ready
  Transitions:
  - Input: log
    ResultantState: Ready
  Action:
    ConnectorKey:
      Identifier: log info
    Configuration:
      messageFormat: '{schematicName}({machineId}) entered {state} on {input}. Message: {payload}'
    Description: Logs the payload as a message.

As well as JSON or any other format really.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].