@wiz-code/async-fsm
Version:
Finite StateMachine JavaScript Library
66 lines (44 loc) • 2.16 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 (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');
ent.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 en1 = new FSM.EntryPointPseudoState(false);
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 t1 = new FSM.Transition(false, FSM.InitialPseudoState, s1);
var ent = new FSM.Transition(false, s1, en1);
var s1t2 = new FSM.Transition(false, en1, s2s1);
machine.addState(s1, s2);
s2.addState(en1, s2s1);
machine.addTransition(t1, ent);
//machine.addTransition(t2);
//machine.addTransition(dt1);
s2.addTransition(s1t2);
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');