@wiz-code/async-fsm
Version:
Finite StateMachine JavaScript Library
108 lines (81 loc) • 3.17 kB
JavaScript
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');