14 erlang scala state-machine fsm
具有本机(因此没有FSM生成工具)的语言的建议支持状态机开发和执行以及消息/信号的传递.这适用于电信,例如实现这种复杂程度的FSM.
我考虑过Erlang,但是会喜欢一些反馈,建议,教程指针,替代方案,尤其是基于Java的框架.也许斯卡拉?
仅限开源.我不是在寻找UML或正则表达式相关的解决方案.
由于这是用于实现电信协议,因此FSM可能是非平凡的.许多状态,许多转换,基于信号,输入约束/保护.动态实例化将是一个加号.切换语句是不可能的,它很快就会无法使用.如果/其他几乎没有好处.
我宁愿不依赖于图形设计; 格式FSM描述应该是人类可读/可编辑/可管理的.
-
我决定专注于基于Actor的C++解决方案
例如,Theron框架提供了一个起点http://theron.ashtonmason.net/,并且为了避免基于FSM的事件处理程序中的switch语句,这个C++ FSM模板框架看起来很有用http://satsky.spb.ru/articles/ FSM/fsmEng.php
我同意转换声明应该是不可能的......它们最终导致维护噩梦.你不能使用状态模式来实现你的FSM吗?根据您的实际实现,您可以使用actor(如果您有多个FSM协作 - 嗯......可能吗?).关于actor的好处是传递消息的框架已经存在.
使用State的一个例子是:
trait State {
def changeState(message: Any): State
}
trait FSM extends Actor {
var state: State
def processMessage(message: Any) {
state = state.changeState(message)
}
override def act() {
loop {
react {
case m: Any => processMessage(m)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是非常基本的代码,但由于我不知道更多的要求,这是我能想到的最多.国家的优势在于每个州在一个阶级中都是独立的.