UNPKG

@wiz-code/async-fsm

Version:

Finite StateMachine JavaScript Library

108 lines (81 loc) 3.17 kB
var _ = require('underscore'); var FSM = require('../src/async-fsm'); var machine = new FSM.Machine('my-machine'); var s1 = new FSM.State('s1', { data: { user: { id: [ 'hoge-san' ] } }, props: { account: 'foo-bar' }, methods: { onClick: function () {console.log('click!!', this._name);} }, entryAction: function (transit) { if (!_.isNull(transit)) { console.log('\ntransition: ', transit.getId(), '\n', this.getName(), ' entry'); } this.watch('user/id', function (e) { console.log( 'event: ', e.event + '\n', 'currentTarget: ', e.currentTarget + '\n', 'target: ', e.target + '\n', 'value: ', e.value + '\n', 'oldValue: ', e.oldValue + '\n', ); }); console.log('user/id/0', this.get('user/id/0')); this.set('user/id/1', 'fuga-san'); this.set('user/id/1', 'yahoo-san'); console.log('user/id', this.get('user/id')); console.log('account', this.props.account); this.methods.onClick(); }, doActivity: function (transit) { if (!_.isNull(transit)) { console.log('\ntransition: ', transit.getId(), '\n', this.getName(), ' do'); } ent.trigger(); }, exitAction: function (transit) { if (!_.isNull(transit)) { console.log('\ntransition: ', transit.getId(), '\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');