UNPKG

@wiz-code/async-fsm

Version:

Finite StateMachine JavaScript Library

81 lines (59 loc) 3.07 kB
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');