SCXML : State Chart XML

Le SCXML

Introduction

Le SCXML a été créé dans le but de pouvoir représenter des machines d'états. Il est basé sur les diagrammes d'états de Harel. De plus, il a été pensé comme une mise à jour de la gestion des évènements du CCXML et de palier à certaines limitations. Grâce au SCXML, il est possible d'imaginer des machines d'états très complexes.

Principe

Exemple d'automate

Les diagrammes d'états de Harel ne sont pas sans rappeler les automates. Néanmoins, ils sont basés sur des automates finis, autrement dit avec un nombre d'états non-infini. Il doit donc définir un unique point d'entrée, différents états et des transitions entre ces états. Un état peut être déterminé comme sortant et permet donc de sortir de la machine d'états.

Néanmoins, Harel a introduit plusieurs nouveaux principes sur les diagrammes d'états :

Ces principes seront étudiés dans la section suivante.

Exemple de fichier

				<?xml version="1.0" encoding="UTF-8"?>
				<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initial="ready">
					<state id="ready">
						<transition event="watch.start" target="running"/>
					</state>
					<state id="running">
						<transition event="watch.split" target="paused"/>
						<transition event="watch.stop" target="stopped"/>
					</state>
					<state id="paused">
						<transition event="watch.unsplit" target="running"/>
						<transition event="watch.stop" target="stopped"/>
					</state>
					<state id="stopped">
						<transition event="watch.reset" target="ready"/>
					</state>
				</scxml>
				

Cet exemple décrit le fonctionnement d'un chronomètre. Pour plus de détails sur l'utilisation du langage, vous pouvez vous référer à la section suivante.