@wiz-code/async-fsm
Version:
Finite StateMachine JavaScript Library
81 lines (59 loc) • 3.07 kB
JavaScript
var _ = require('underscore');
var FSM = require('../src/async-fsm');
var machine = new FSM.Machine('my-machine');
var s1 = new FSM.State('s1', {
//autoTransition: true,
entryAction: function (t) {t = t || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' entry');},
doActivity: function (t) {t = t || {};console.log('event: ', e.transitionId, '\n', this.getName(), ' do');},
exitAction: function (e) {t = t || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' exit');},
});
var s1s1 = new FSM.State('s1s1', {
//autoTransition: true,
entryAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' entry');},
doActivity: function (e) {
e = e || {};console.log('event: ', e.transitionId, '\n', this.getName(), ' do');
s1t2.trigger();
},
exitAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' exit');},
});
var s2 = new FSM.State('s2', {
//autoTransition: true,
entryAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' entry');},
doActivity: function (e) {e = e || {};console.log('event: ', e.transitionId, '\n', this.getName(), ' do');},
exitAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' exit');},
});
var s2s1 = new FSM.State('s2s1', {
//autoTransition: true,
entryAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' entry');},
doActivity: function (e) {e = e || {};console.log('event: ', e.transitionId, '\n', this.getName(), ' do');},
exitAction: function (e) {e = e || {};console.log('\nevent: ', e.transitionId, '\n', this.getName(), ' exit');},
});
var en1 = new FSM.EntryPointPseudoState(false);
var ex1 = new FSM.ExitPointPseudoState(false);
var t1 = new FSM.Transition(false, FSM.InitialPseudoState, s1);
var ten = new FSM.Transition(false, FSM.InitialPseudoState, en1);
var t2 = new FSM.Transition(false, s1, s2, {locked: false});
var s1t1 = new FSM.Transition(false, FSM.InitialPseudoState, s1s1);
var s1t2 = new FSM.Transition('s1t1', s1s1, ex1);
var ent = new FSM.Transition(false, ex1, s1s1);
var ext = new FSM.Transition(false, ex1, s2);
var s2t1 = new FSM.Transition(false, FSM.InitialPseudoState, s2s1);
var dt1 = new FSM.Transition(false, s1, s2s1, {locked: false});
machine.addState(s1, s2);
s1.addState(s1s1, en1, ex1);
s2.addState(s2s1);
machine.addTransition(/*t1*/ten, ext);
//machine.addTransition(t2);
s1.addTransition(ent, /*s1t1,*/ s1t2);
//machine.addTransition(dt1);
s2.addTransition(s2t1);
machine.deploy();
machine.start();
/*var Machine = require('../src/machines').Machine;
var State = require('../src/states').State;
var Transition = require('../src/transition');
var Region = require('../src/region');
var region = new Region(false);
var state = new State('my-state');
var transit = new Transition('my-transit');*/
//var fsm = new FSM.Machine('my-machine');