ᵡᵿᵱᵮᵟ ᵣᶌᶅᶇᶌᶃ
5.11 本プログラムによるルール設計の手順
本節では本プログラムによるルール設計を行う場合の手順を示す.本プログラムを 起動し,最初に使用する言語を選択する.ここでは動的言語の例としてJRubyを選択 した場合の,ルールの設計手順について述べる.プログラムを起動すると,最初に図 5.14に示す言語選択画面が現れる.
言語を選択すると,図5.15のような初期画面が現れる.ここで最初から表示されて
いるRuleとGlobalは,特殊なオブジェクトとなる.RuleはCaSPAルールに必ず存在
するルールクラスを扱うためのオブジェクトであり,詳細については後述する.Global
5.11 本プログラムによるルール設計の手順
図 5.14: 言語選択画面
は言語使用として必要な宣言等及びCaSPAルールに含まれないクラス等をまとめて扱 うためのオブジェクトとなっている.
5.11.1 タスクの登録
メインパネルで右クリックし,新規タスクを選択してタスク名を設定すると,タスク が登録される.この時点ではタスクの動作について何も記述していないため,図5.16 のように中身が記述されていないタスククラスが生成される.
この状態で保存した場合,以下の図5.17のようなソースコードが生成される.
5.11.2 条件及びアクションの設定
新規に条件を設定するには,ツールパレット上で右クリックし,新規条件を選び,条 件クラスの名前を指定する.これによって,ソースコードには新たな条件クラスが追加 されることになる.一方,条件クラスを作ったとしても,それをタスククラスに設定し
5.
図 5.15: 初期画面
なければ実際のルールでは利用されない.条件をタスククラスに設定するには,カー ソルをタスクオブジェクト上に置き,右クリックで条件追加を選択するか,あるいは ツールパレットから条件オブジェクトをドラッグアンドドロップすればよい.
アクションについても,条件と同様に設定する.ツールパレット上で新規に作成し,
それをタスクに設定する.
5.11.3 タスク名とタスククラスの関係の設定
前述したように,CaSPA要素となる各クラスの再利用性を高めるためには,タスク クラスと条件クラスの関係を固定的に記述しないことが望ましい.そのため,本プログ ラムには条件クラスが仮に定めたタスク名と実際のタスククラスの関係をGUIによっ て定義するための機能を有している.
メインパネル上のルールクラスのアイコンには,ルールに登録されている条件クラ スが表示される.ルールクラスアイコン上の条件クラスアイコンをクリックすること で,図5.18の画面が表示される.ここで,プルダウンメニューを用いてタスク名とタ
5.11 本プログラムによるルール設計の手順
図 5.16: タスク登録
スククラスの関係を定義することができる.
なお,ルールクラスの条件クラスアイコンは,そこから派生するタスクが何も登録 されていないときは灰色,偽を真にするためのタスクのみ登録されているときは赤,未 確定を確定させるタスクのみ登録されているときは緑,偽を真にするためのタスクと,
未確定を確定させるタスクの両方が登録されているときは黄で表示される.
この操作によって条件クラスとそこから派生するタスククラスが紐付けられると,メ インパネルではそれを指し示す矢印が表示されるようになり,ルールの構造が直感的 に理解できるようになっている.
5.11.4 保存
ファイルメニューのsaveを選択することで,ファイル名を設定して保存する.保存 を選択することで編集中のすべてのソースファイルが保存される.また,ソースコー ド以外の情報を保存するためのメタファイルが生成され,画面上での各オブジェクト の位置等が記録される.そのため,次回以降に起動した場合にはソースコードととも にウィンドウの状況も復元される.
5.
require ’FuseRule.rb’
require ’ConditionRuby.rb’
require ’TaskRuby.rb’
require ’ActionRuby.rb’
require ’ActionRubyNotime.rb’
class TaskA< TaskRuby def define_task end
end
class Rule< FuseRule def instantiate end
end
図 5.17: スケルトンコード