All Projects → thomasduft → Microwf

thomasduft / Microwf

Licence: mit
A simple finite state machine (FSM) with workflow character where you define your workflows in code.

Projects that are alternatives of or similar to Microwf

nactivity
workflow engine activity activiti
Stars: ✭ 55 (-54.92%)
Mutual labels:  workflow, workflow-engine, workflows
stateless
Finite State Machine porting from Stateless C#
Stars: ✭ 25 (-79.51%)
Mutual labels:  fsm, workflow-engine, finite-state-machine
Aiida Core
The official repository for the AiiDA code
Stars: ✭ 238 (+95.08%)
Mutual labels:  workflow-engine, workflows, workflow
River Admin
🚀 A shiny admin interface for django-river built with DRF, Vue & Vuetify
Stars: ✭ 55 (-54.92%)
Mutual labels:  workflow-engine, workflows, workflow
Jstate
Advanced state machines in Java.
Stars: ✭ 84 (-31.15%)
Mutual labels:  finite-state-machine, fsm
Common Workflow Language
Repository for the CWL standards. Use https://cwl.discourse.group/ for support 😊
Stars: ✭ 1,222 (+901.64%)
Mutual labels:  workflows, workflow
Fsm
Finite State Machine for Go
Stars: ✭ 1,269 (+940.16%)
Mutual labels:  finite-state-machine, fsm
Finity
A finite state machine library for Node.js and the browser with a friendly configuration DSL.
Stars: ✭ 88 (-27.87%)
Mutual labels:  finite-state-machine, fsm
Loonflow
基于django的工作流引擎,工单(a workflow engine base on django python)
Stars: ✭ 1,153 (+845.08%)
Mutual labels:  workflow-engine, workflow
Workflows
Run Cloud Native workflows on any environment using Dapr
Stars: ✭ 84 (-31.15%)
Mutual labels:  workflow-engine, workflow
Openmole
Workflow engine for exploration of simulation models using high throughput computing
Stars: ✭ 120 (-1.64%)
Mutual labels:  workflow-engine, workflow
Machine
Machine is a workflow/pipeline library for processing data
Stars: ✭ 78 (-36.07%)
Mutual labels:  workflow-engine, workflow
Maestrowf
A tool to easily orchestrate general computational workflows both locally and on supercomputers
Stars: ✭ 72 (-40.98%)
Mutual labels:  workflows, workflow
Node Webcrypto Ossl
A WebCrypto Polyfill for Node in TypeScript built on OpenSSL.
Stars: ✭ 113 (-7.38%)
Mutual labels:  workflows, workflow
Theflow
Workflow automation library for .NET
Stars: ✭ 72 (-40.98%)
Mutual labels:  workflow-engine, workflow
Server
The Prefect API and backend
Stars: ✭ 87 (-28.69%)
Mutual labels:  workflow-engine, workflow
Alexafsm
With alexafsm, developers can model dialog agents with first-class concepts such as states, attributes, transition, and actions. alexafsm also provides visualization and other tools to help understand, test, debug, and maintain complex FSM conversations.
Stars: ✭ 103 (-15.57%)
Mutual labels:  finite-state-machine, fsm
Nflow
nFlow is a battle-proven solution for orchestrating business processes. It can be used as microservices orchestrator (Saga-pattern), as business process engine or as persistent finite-state machine.
Stars: ✭ 96 (-21.31%)
Mutual labels:  workflow-engine, workflow
Petrinet
🚥 Petrinet framework for PHP
Stars: ✭ 107 (-12.3%)
Mutual labels:  workflow-engine, workflow
Afsm
C++14 Finite State Machine library
Stars: ✭ 113 (-7.38%)
Mutual labels:  finite-state-machine, fsm

build NuGet Release BuitlWithDot.Net shield

microwf

A simple finite state machine (FSM) with workflow character where you define your workflows in code.

Holiday approval sample

Holiday Aproval

In code it looks like:

public class HolidayApprovalWorkflow : WorkflowDefinitionBase
{
  public const string TYPE = "HolidayApprovalWorkflow";

  public override string Type
  {
    get { return TYPE; }
  }

  public override List<Transition> Transitions
  {
    get
    {
      return new List<Transition>
      {
        new Transition {
          State = "New",
          Trigger = "Apply",
          TargetState ="Applied",
          CanMakeTransition = MeApplyingForHolidays
        },
        new Transition {
          State = "Applied",
          Trigger = "Approve",
          TargetState ="Approved",
          CanMakeTransition = BossIsApproving,
          AfterTransition = ThankBossForApproving
        },
        new Transition {
          State = "Applied",
          Trigger = "Reject",
          TargetState ="Rejected"
        }
      };
    }
  }

  private bool MeApplyingForHolidays(TransitionContext context)
  {
    var holiday = context.GetInstance<Holiday>();

    return holiday.Me == "Me";
  }

  private bool BossIsApproving(TransitionContext context)
  {
    var holiday = context.GetInstance<Holiday>();
    
    return holiday.Boss == "NiceBoss";
  }
  
  private void ThankBossForApproving(TransitionContext context)
  {
    // SendMail("Thank you!!!");
  }
}

Running the samples

Assuming you downloaded the sources and opened the directory with VS Code you should be good to go! Ahh and of course you need .NET Core and node.js installed on your development environment.

Running the WebApi backend

  1. Open the integrated terminal in VS Code and type

dotnet build

That ensures you are able to build the dotnet related stuff!

  1. Go to the VS Code Debug tab (Ctrl+Shift+D) and run the Security Token Server (STS = IdentityServer) project.

  2. After the STS is running change the dropdown to the WebApi project and run it.

You should see now the login screen.

Administrator Web UI

A web interface allows an administrator to search for workflow instances and have a look into the current state.

Admin

Happy poking!!

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].