ステート マシンのちょっとしたプロモーション: stateflow 自分にとって十分にシンプルなステート マシンが見つからなかったため、独自のステート マシンを作成しました。
フローは、プロパティが状態名で、値が次のプロパティを持つ別の js オブジェクトである js オブジェクトで定義されます。
- タイプ: begin、end または state (デフォルト)。
- action: これに設定された State インスタンス オブジェクトを持つ関数は、以前に登録された action または別のフロー定義 (この場合はサブフロー) という名前にすることもできます。
- on: プロパティはイベントに一致し、値は次に進むべき状態です
簡単な例
var stateflow = require('stateflow');
var flow = new stateflow.StateFlow({
a: {
type:'begin',
action: function(complete) {
// do something
complete('done');
},
on: {
done:'b',
again:'a'
}
},
b: {
type:'end',
action: function(complete) {
complete('finished');
}
}
});
flow.start(function(event) {
console.log('flow result:', event);
});
git https://github.com/philipdev/stateflowまたは npmで確認してください。