modelflow

0.0.1 • Public • Published

ModelFlow->

ModelFlow is a JavaScript evented state machine written to run both in node.js and the browser.

Design Goals

  • Easily create state machine on top of a existing data model(s).
  • Define states based on the data models attribute values.
  • Ability to listen for state changes and run callbacks.
  • Provide a mechanism to optionally enforce linear paths from state to state. This may be used an alternative to flow control libraries.

Installation / Basic Usage

ModelFlow depends on Underscore and is built as a complement to Backbone.

On the Server

Install the library using npm or add it to your package.json file as a dependancy. Instances of ModelFlow are technically Backbone Models, however the module can be used completely standalone.

  $npm install modelflow

Define a StateModel class, create an instance of it.

 
var ModelFlow = require('modelflow');
var CustomFlow = ModelFlow.StateModel.extend({
    states : {
        state1 : { foo : 1 },
        staet2 : { foo : 2 }
    }
});
 
var flow = new CustomFlow();
 

On the Client

Just like server, however ModelFlow will be pushed on the window as a global.

<script type="text/javascript" src="underscore.js"></script>
<script type="text/javascript" src="backbone.js"></script>
<script type="text/javascript" src="ModelFlow.js"></script>
 
<script type="text/javascript">
    var CustomFlow = ModelFlow.StateModel.extend({
        states : {
            state1 : { foo : 1 },
            staet2 : { foo : 2 }
        }
    });
 
    var flow = new CustomFlow();
</script> 
 

Moar Usage

Bind callbacks on state changes

    var CustomFlow = ModelFlow.StateModel.extend({
        states : {
            init : { foo : 1 }
        }
    });
 
    var flow = new CustomFlow();
    flow.bind('state:->init', function() {
        console.log('inited');
    });
 
    flow.set({ foo : 0 });  //this does nothing
    flow.set({ foo : 1 });  //'inited' is logged to console

Readme

Keywords

none

Package Sidebar

Install

npm i modelflow

Weekly Downloads

0

Version

0.0.1

License

MIT

Last publish

Collaborators

  • ryan_stevens