9 OTP设计原则——第二部分
9.4 gen_statem 行为模式
这一章节结合stdlib man page中的gen_statem(3)阅读,其中详细介绍了gen_statem行为模式的接口函数和回调函数。
注意:这是Erlang/OTP 19.0 开始提供的新行为模式,它已经经过严格的检验和慎重思考,并且稳定的运行在至少两个重量级OTP应用。根据用户反馈,可能会在Erlang/OTP 20.0中做一些不向下兼容的改动,我们希望不会如此。
9.4.1 事件驱动的状态机
现有公认的有效状态机理论并没有涉及状态转移如何触发,我们假设输出是由输入和状态函数运算,并产生一些值。
对于事件驱动的状态机,输入是一个触发状态转移的事件,输出是状态转移过程中执行的动作。有限状态机的数学模型和下面的关系集合类似:
State(S) x Event(E) -> Actions(A), State(S')
这组关系可以这样理解: