アプリケーション
W3C SCXML仕様[ 2 ]によると、 SCXMLは汎用的なイベントベースのステートマシン言語であり、以下のような様々な用途に使用できます。
- VoiceXML 3.0のカプセル化された音声モジュール(音声フォーム、音声選択リストなど)を制御する高レベルの対話言語として
- 音声アプリケーションのメタ言語として、VoiceXML 3.0の機能に加えて、データベースアクセスやビジネスロジックモジュールも制御できる。
- マルチモーダルインタラクションフレームワークにおけるマルチモーダル制御言語として、VoiceXML 3.0ダイアログと、キーボードやマウス、インク、視覚、触覚など、他のモダリティのダイアログを組み合わせることができます。また、読唇(音声認識と視覚を組み合わせたもの)、キーボードをフォールバックとする音声入力、マルチユーザー編集用の複数のキーボードなど、複合モダリティの制御も可能です。
- CCXMLの将来バージョンにおけるステートマシンフレームワークとして。
- CCXMLは、コールセンター管理のための拡張言語として、電話とコンピュータ画面のポップアップを統合するコールセンター向けに、CCXMLの通話制御機能とコンピュータ電話統合機能を組み合わせたものです。また、チャットやインスタントメッセージなどの他の種類のメッセージ交換にも対応しています。
- 音声処理を伴わない他の文脈における、汎用的なプロセス制御言語として。
W3C VoiceXML 3.0仕様の草案[ 3 ]には、機能を定義するためのステートチャートとSCXML表現が含まれています。
マルチモーダルアプリケーション
マルチモーダルアプリケーション設計では、コミュニケーションの各部分に最適な操作方法(音声、タッチスクリーン、キーボードとマウスなど)を使い分けることができます。例えば、音声入力を使えば、携帯電話の小さな画面に文字を入力する手間を省けますが、リストや地図を表示する場合は、利用可能なオプションの長い説明を聞くよりも、画面を使った方が速い場合があります。SCXMLを使えば、複数の処理を並行して簡単に実行でき、Interaction Manager SCXMLアプリケーションは、音声ダイアログとビジュアルダイアログの同期を維持します。

W3C文書「マルチモーダルアーキテクチャのためのアプリケーション作成」[ 4 ]では、W3Cマルチモーダルアーキテクチャを実装するマルチモーダルシステムについて説明し、SCXML、CCXML、VoiceXML 2.1、HTMLなどのさまざまなW3Cマークアップ言語を使用して作成されたシンプルなマルチモーダルアプリケーションの例を示しています。
実装
- scxmlcc は、効率的な scxml から C++ へのコンパイラです。
- Apache Commons SCXMLは、SCXML図を解析および実行するための純粋なJavaライブラリです。
- SCXMLguiは、 SCXML用のJavaビジュアルエディタです。
- SCION SCXMLは、移植性の高いJavaScriptで実装されています。
- JSSCxmlはWebブラウザの実装です。高い準拠性を持ち、DOMイベントを良好にサポートしています。ECMAScriptデータモデルのみをサポートしています。
- uSCXML C/C++ インタープリタおよびトランスフォーマー/コンパイラ。Java および C# 用の言語バインディングも備えています。JavaScriptCore または Google の v8 を介した完全な ECMAScript サポート、追加の LUA および Prolog データモデル、XPath データモデルは基本的なサポートのみ。SPIN モデルチェッカーによる形式検証用の PROMELA データモデル。
- LXSC Lua XML StateChart インタープリタ - Lua データモデルを使用して SCXML ステートマシンを解析および実行します。
- Qt SCXML EngineもC++で実装されており、シグナルとスロットの概念と密接に統合され、ビジュアルエディタがQt Creatorに統合されています。
- TypeScriptで実装されたXState 。
非アクティブな実装
以下の実装は非アクティブです。つまり、ソースコードへの最後の変更は2年以上前に行われています。
- Ozプログラミング言語で実装された実験的なSCXMLへのWebインターフェース
- Legianは、RhinoをJavaScriptエンジンとして使用し、Javaで実装されたSCXMLエンジンです。カスタムタグライブラリやインクルードなどの追加機能もサポートしています。ただし、W3C規格に完全に準拠しているわけではありません。
- PySCXMLはPythonで実装されたライブラリです。WebSocketやSOAPなど、幅広い技術をサポートしています。高い標準規格準拠性を誇り、ECMAScriptデータモデルもサポートしています。(最終更新日:2013年)
- PySCXMLコンソールは、 SCXMLドキュメントの実行と操作を行うためのWebベースの対話型SCXMLコンソールです。ECMAScriptデータモデルをサポートしています。
- SCXML4Flex ActionScript/Flex は、PySCXMLの部分的な移植版です。
参考文献
- ↑ 「ステートチャートXML(SCXML):制御抽象化のためのステートマシン表記法」。ワールドワイドウェブコンソーシアム。2015年9月1日。 2016年3月2日取得。
- ↑ステートチャートXML(SCXML):制御抽象化仕様のためのステートマシン表記法
- ↑音声拡張マークアップ言語(VoiceXML)3.0仕様
- ↑マルチモーダルアーキテクチャ向けアプリケーションの作成
外部リンク
- W3C SCXML仕様1.0
- SCXML Commonsのユースケース - ストップウォッチの例