diff --git a/README.md b/README.md index 3527d54..3696a28 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,28 @@ -# asyncmachine-go +
+
+ + asyncmachine-go logo + + +

Declarative workflows with relations (state machine)

+ +

+ Usage » +
+ Examples » +
+ Documentation » +
+ Tools » +
+ Integrations » +
+ Case Studies » +
+

+
+ +
![TUI Debugger](assets/am-dbg.gif) @@ -12,7 +36,7 @@ firewalls, telemetry, bots, etc. > **asyncmachine-go** is a general purpose state machine for managing complex asynchronous workflows in a safe and > structured way -## Comparison +### Comparison Common differences from other state machines: @@ -22,6 +46,14 @@ Common differences from other state machines: - every transition can be rejected - error is a state +### Buzzwords + +> **AM technically is:** event emitter, queue, dependency graph, AOP, logical clocks, ~2.5k LoC, no deps + +> **AM gives you:** states, events, thread-safety, logging, metrics, traces, debugger, history, flow constraints, scheduler + +> **Flow constraints are:** state mutations, negotiation, relations, "when" methods, state contexts, external contexts + ## Usage ### Basics @@ -29,15 +61,12 @@ Common differences from other state machines: ```go // ProcessingFile -> FileProcessed (1 async and 1 sync state) package main -import ( - "context" - am "github.com/pancsta/asyncmachine-go/pkg/machine" -) + +import am "github.com/pancsta/asyncmachine-go/pkg/machine" func main() { // init the machine - ctx := context.Background() - mach := am.New(ctx, am.Struct{ + mach := am.New(nil, am.Struct{ "ProcessingFile": { Add: am.S{"InProgress"}, Remove: am.S{"FileProcessed"}, @@ -129,14 +158,6 @@ func (h *Handlers) ProcessingFileState(e *am.Event) { See [docs/cookbook.md](docs/cookbook.md) for more snippets. -## Buzzwords - -> **AM technically is:** event emitter, queue, dependency graph, AOP, logical clocks, ~2.5k LoC, no deps - -> **AM gives you:** states, events, thread-safety, logging, metrics, traces, debugger, history, flow constraints, scheduler - -> **Flow constraints are:** state mutations, negotiation, relations, "when" methods, state contexts, external contexts - ## Examples ### [FSM - Finite State Machine](/examples/fsm/fsm_test.go) diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..e21bc04 Binary files /dev/null and b/assets/logo.png differ diff --git a/config/.mdl_style.rb b/config/.mdl_style.rb index ca076f4..f04cc9c 100644 --- a/config/.mdl_style.rb +++ b/config/.mdl_style.rb @@ -8,5 +8,9 @@ exclude_rule 'MD033' # block quotes exclude_rule 'MD028' +# first line H1 +exclude_rule 'MD002' +# first line H1 +exclude_rule 'MD041' # ??? exclude_rule 'MD007'