1.2.0 • Published 8 years ago

quos v1.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

Quos State Machine

State Machine that maintains several objects at the same time.

var StateMachine = require('quos').StateMachine;
var sm = new StateMachine();

Create states

var enterStore = sm.addState({
  name: '*',
  // Only allow people with red shirts
  constraints: function () {
    return this.shirt_color == 'red';
  },
  onEnter: function () {
    console.log('Welcome, ' + this.name);
  }
});

var queue = sm.addState({
  name: 'waitingInQueue',

  onEnter: function (prevState, sm) {
    sm.after(10, 'minutes').trigger('next-in-line', this.id);
  },

  onExit: function () {
    console.log(this.name + ', you are next');
  }

});

var counter = sm.addState({
  name: 'payingInCounter',
  onEnter: function () {
    chargeUser(this.id, this.total_bought);
  },

  onExit: function () {
    console.log('Come back anytime!');
  }
});

Define transitions

enterStore.on('bought-something', queue);
queue.on('next-in-line', counter);

Add objects

sm.addObject({ id: 'Customer00012', name: 'Jhon', shirt_color: 'red', total_bought: 9.99 });
sm.addObject({ id: 'Customer00015', name: 'Juan', shirt_color: 'blue', total_bought: 19.99 }); // Rejected

Trigger events to change states.

sm.trigger('bought-something', 'Customer00012');
1.2.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago