アクションモデルの作成
コントロールプラン(Control Plan)のモデルはプロセスのペトリネット(Petri Net)モデル表現です。 Control Plan Editor はモデルを作成し、それを将来の編集や実効のためにファイルに保存することができます。コントロールプランを作成する前に、どのようなペトリネットモデルを作りたいかの考えを持つべきですが、必須ではありません。エディターは使いやすいので、「ブレインストーム」のツールやあなたが設計するペトリネットモデルの文書化に使うことができます。
コントロールプランの作成ステップは、下記のとおりです:
- 新規コントロールプランファイルの作成
- ペトリネットのプレースやトランジションをファイル内に置くことでのモデルの編集
- 処理タスクスクリプトの定義
- 各タスクへどのようにプログラムパラメータを提供する方法の定義
- モデルの検証
- モデルの実行
新規コントロールプランの作成
メニューから File、New を選択しエディターをクリアします。ここで、新しいモデルの作成ががきます。既存モデルを開くには、File、New を選択して現在のモデルをクリアし、その後、File、Open と選んで開くファイルを選択します。
新しい名前でファイルを保存するには、File、Save Model As のオプションを選択してください。
プレースとトランジションの追加による編集
プレースをモデルに追加するには、下記二つの方法のどちらかで行えます:- プレースを置く場所でマウスを右クリックすると、挿入できるノードのリストが表示されます。Insert Place を選択します。
- 2. ツールバーから "Insert Place" アイコンを選ぶことができます。これにより、モデルの左上端にアイコンが置かれます。
追加プレースを挿入するために、この処理を続けます。ノード上でダブルクリックするか、ノード上で右クリックをして"Edit Name" オプションを選びことで、どのノードの名称でも編集できます。
下記のトランジションのタイプが定義できます。プレースの中央にマウスオーバーして(手のアイコンが表示されます)、左クリックして二つ目のプレースの中央までドラッグすることで、既存のプレースを接続します。
これらトランジションの詳しい説明は、「ルーティング構造」 のセクションを参照してください。
- Implicit-OR(暗黙のOR)。 このトランジションはプレースから出る最小限ひとつの制約条件の無いコネクションを必要とします。二つのプレース間を直結するコネクションは、そのプレース間のつなぐ Implicit-OR を意味します。
- Explicit-OR(明示的OR)。 これは、トランジションの後に次プレースを実行しますが、最初に完了したプレースのパスに沿ってのみ行われます。 ORトランジションを追加し、ORノードとプレースをコネクトします。 異なるプレースのパスにORノードをコネクトします。二つ目のExplicit-ORノードを使って、これらのパスを後で結合する必要があります。
- AND。 これは、このトランジションから出る、すべての並行パスを実行します。ANDトランジションを追加した後、並行するパスを追加します。これらのパスを二つ目のANDノードを使って結合する必要があります。
- Timed-AND(時間付きAND)。 これは複数の並列パスが取られる点において、ANDトランジションと同様です。これらのパスを二つ目のTimed-AND で結合する必要があります。ANDトランジションと異なり、終端のANDトランジションへのパスのひとつが実行されたら、残りのパスの実行は終了されます。
処理タスクスクリプトの定義
プレースのひとつを定義すると、そのプレースに達した時に実行される処理スクリプトを追加することができます。そのノード上で右クリックして、Edit Scriptを選びます。エディターのウィンドウが開き、そこで Java か Ruby プログラムを入力することができます。 言語タイプの選択には、ノード上で右クリックし、Java かRuby を選択します。エディターウィンドウ内にプログラムを入力した後、モデルを実行して、そのプログラムを実行することができます。入力したテキストを有効にするために、保存したりエディターを閉じたりする必要はありません。
各タスクへのプログラムのパラメータ提供方法の定義
あなたの処理コードが実行される前に実行パラメータを定義することを要求する場合、ここでそれらを定義します。パレメータは、プレースに三つの異なる方法で提供することか可能です。- プレースパラメータの設定。これらは、モデル実行時に変化しない静的な設定です。パラメータを変更するには、プレース上で右クリックし、Edit Parameters オプションを選びます。表形式のダイアログボックスが表示されるでしょう。NAME と VALUE フィールドを選ぶことで、パラメータを追加できます。Ctrl と x キーを同時に押すことで、行を削除できます。 Java スクリプトは、これらの変数を名前でアクセスできます。Ruby スクリプトは$プレフィックス付きの名前でアクセスできます。たとえば、表で PARAM1 という名前であれば、Ruby スクリプトでは $PARAM1 として参照されます。
- インピーダンスの定義。 このプロセスによってあるプレースから別のプレースにデータを渡すことができます。
- プレース出力(Output)仕様設定。これらは次のプレースに渡される可変パラメータです。 パラメータを変更するにはプレース上で右クリックし、Edit Output Spec オプションを選びます。表のダイアログボックスが表示されるでしょう。NAME と VALUE フィールドを選ぶことで、パラメータを追加できます。Ctrl と x キーを同時に押すことで、行を削除できます。 Java スクリプトは、これらの名前で変数をセットできます。Ruby スクリプトは$プレフィックス付きの名前で変数をセットできます。たとえば、表で PARAM1 という名前であれば、Ruby スクリプトでは $PARAM1 として参照されます。
- プレース入力(Input)仕様設定。 これらは前のプレースから渡される可変パラメータです。 パラメータを変更するにはプレース上で右クリックし、Edit Input Spec オプションを選びます。表のダイアログボックスが表示されるでしょう。NAME と VALUE フィールドを選ぶことで、パラメータを追加できます。Ctrl と x キーを同時に押すことで、行を削除できます。 Java スクリプトは、これらの名前で変数をアクセスできます。Ruby スクリプトは$プレフィックス付きの名前で変数をアクセスできます。たとえば、表で PARAM1 という名前であれば、Ruby スクリプトでは $PARAM1 として参照されます。
- インピーダンスの編集。入力と出力のインピーダンスが定義された後、プレース間のコネクターを選んで右クリックし、Edit Impedances を選びます。表のダイアログボックスが表示されるでしょう。ドロップダウン選択リストを使用し、入力と出力のインピーダンスの変数名をマッチングします。
- データエンベロープ。このテクニックにより、プレースのタスクがデータをモデルの中で処理されるようにトークンにアサインすることができるようにします。その後のプレースのタスクはこのデータをアクセスできます。これらのテクニックについては、プログラミングのセクションで説明します。
モデルの検証
モデルの定義を完了する場合、それは実行するために正しいペトリネットでなければなりません。もし、モデルの中に赤いノードがあれば、そのモデルは正しくありません。File、Traverse Model を選択し、いつでもモデルの妥当性をテストすることができます。モデルが正しければ、その旨を表示するダイアログボックスが表示されるでしょう。赤いノードがあるけれども、あなたはモデルが正しいと思う場合、モデルの妥当性チェックを試して見てください。これで、一時的なエラーがクリアされます。
実行後、あなたのペトリネットでエラーが見出されたら、エラーを消すためにそのモデルを再使用する必要があるかも知れません。確実にファイルを保存してください。そして、File、New で、エディターをクリアします。その後、再度ファイルを開きます。ここで、実行することができるようになります。
モデルの実行
あなたのモデルをテストする一般的な方法は、あなたの期待する出力がトランジションに表示されるかを見るために、そのモデルをコンソールを開いて実行することです。実行(Run)アイコン を選ぶことでいつでもモデルを実行することができます。あるいは、同時にひとつのトランジションをデバッグモードで実行することができます。