State Chart XML (SCXML) 状态机规范
来源:互联网 发布:java方法的定义和调用 编辑:程序博客网 时间:2024/06/06 02:48
摘要
这篇文档描述了SCXML,或者说是“状态图可扩展标记语言”。SCXML基于CCXML和Harel State Tables为状态机提供了一个一般性的可执行环境,
概述
这篇文档描述的SCXML,是一种基于事件的状态机语言。它是CCXML和Harel State Tables 结合的产物。CCXML是一种基于事件的状态机语言,被设计用来在语音应用中支持通话控制。CCXML1.0规范定义了一个状态机和事件处理语法以及一系列的通话控制元素。Harel State Table由David Harel于1987年提出的一种状态机记号,后来UML中的状态机沿用了这些记号。Harel State Tables 提供了一个简洁、语义良好和功能强大的控制结构。这篇文章就是使用XML语法和Harel State Table语义来描述CCXML中状态和事件转移的逻辑概念
核心结构
[这部分是非正式的]
介绍
基础的状态机概念
组合状态
并行状态
初始化,终止和历史状态
转移类型
scxml
[这部分是规范的]
文档的顶层元素,携带了版本信息。一个状态机由<scxml>和他的孩子元素共同组成。
提示:任何时候只有一个孩子是处于活跃状态。
属性
孩子元素
说明
一个结构良好的SCXML文档必须至少有一个<state>,或者<parallel>或者<final>孩子,在系统初始化的时候,如果执行呢‘initial’属性,SCXML Processer必须进入 ‘initial’属性指定的状态中。如果没有执行‘initial’属性,Processer必须进入文档中的第一个状态。平台应该顶一个默认的datamodel值。
state
[这部分是规范的]
属性
孩子元素
定义
定义1 :一个原子(atomic)状态是一个没有<state>元素,<parallel>或者<final>孩子的<state>
定义2 :一个复合(compound)状态是一个有<state>元素,<parallel>或者<final>孩子(或者这几者的组合)的<state>
定义3 :一个复合状态的默认的初始化状态由‘initial’属性或者<initial>元素指定,如果前两者都没有出现,那么初始化状态就是当前复合状态的按文档顺序来说的第一个孩子状态
说明
在一个结构良好的SCXML文档,一个复合状态必须制定‘initial’属性或者一个<initial>元素,但是二者不能同时指定。
parallel
[这部分是规范的]
<parallel>元素封装了一系列的孩子状态,如果并行状态是处于活跃状态,当孩子元素的父元素是active的,这些孩子状态会同时处于active状态
属性
孩子元素
transition
[这部分是规范的]
states 之间的Transition是有 事件(Events)和条件(Condition)触发的。在Transition中可以包含可执行内容(executable content),当转移发生的时候这些可执行内容将会执行。
属性
孩子元素
可执行内容都可以作为孩子元素,
说明
一份结构良好的SCXML文档必须至少指定 ‘event’ ,’cond’ 或者’target’中的一个。
initial
[这部分是规范的]
这个元素表示一个复合状态默认的初始化状态
属性
本元素没有属性
孩子元素
final
[这部分是规范的]
这个元素表示<scxml>或者复合状态中的最终状态
属性
孩子元素
说明
当状态机进入一个<state>元素的<final>孩子节点的时候,SCXML Processor在完成了<onentry>元素中可执行内容之后 必须生成一个done.state.id事件,id是父亲状态的id值。然后,如果父状态是一个<parallel>的孩子元素,并且所有的<parallel>的孩子都进入了<final>状态,Processor必须生成一个done.state.id 事件,id是<parallel>元素的id值。
当状态机达到了<scxml>元素的<final>孩子时候,状态机必须终止。如果当前的SCXML状态机(以后简称SCXML session 会话)是被另外一个状态机(Session)的<invoke>元素触发的。当当前session终止的时候,SCXML Processor 必须生成一个done.invoke.id 事件,并且返回这个事件给调用的那个session, id的值是一个唯一的标识符。
onentry
[这部分是规范的]
一个包含可执行内容的元素,当进入某一个状态的时候,<onentry>内的内容被执行
属性
没有属性|
孩子元素
可执行内容都可以在这里定义
说明
SCXML Processor 必须按文档中定义的顺序,执行<onentry>元素和元素内的内容。
onexit
[这部分是规范的]
一个包含可执行内容的元素,当退出某一个状态的时候,<onexit>内的内容被执行
属性
没有属性|
孩子元素
可执行内容都可以在这里定义
说明
SCXML Processor 必须按文档中定义的顺序,执行<onexit>元素和元素内的内容。
history
[这部分是规范的]
<history>伪状态允许一个状态机记住它的状态配置。如果一个转移使用<history>状态作为它的目标状态,将会返回状态机记录到的状态配置。伪状态知识参考uml状态图
属性
孩子元素
说明
在一份结构良好的SCXML文档中,这个转移不能包含cond和event属性,但是必须包含一个非空的target属性,这个值构成了一个有效的状态配置。
更多内容请访问 ThinerZQ’s Blog
- State Chart XML (SCXML) 状态机规范
- Apache SCXML 状态机
- SCXML有限状态机规范详解与使用
- SCXML有限状态机规范详解与使用
- State状态机模式
- React State 状态机
- ReactJs中的状态机State
- 状态机(The State Machine Framework)
- 关于状态机 finite-state machine
- Mina State machine状态机讲解
- React Native 初始化state 状态机
- react——state(状态机)
- 复制状态机(State Machine Replication)
- java设计模式之State-状态机
- Android学习 StateMachine与State模式(状态机)
- C语言最优状态机规范
- Ext chart读xml数据
- 关于WF4 State Machine 状态机工作流的发布问题.
- Android SDK Manager 更新代理配置
- MongoDB No1
- 从头认识Spring-2.3 注解装配-@autowired(5)-限定器@Qualifier(2)
- JAVA与C#的区别
- Python 编码问题
- State Chart XML (SCXML) 状态机规范
- C和C++定义机制不同1
- Java多线程
- 04环信聊天界面 - 计算cell的高度
- Unity出现中文乱码
- Erwin 生成 mysql 带注释(comment )的脚本
- 简单完美的解决键盘遮挡输入框的问题
- java并行编程
- hdu1010(深搜 剪枝 回溯)