[Glue!] エージェントの実行状態遷移


Glue Logic が各エージェントの状態情報を利用できるようにするため、 これらの状態情報は Glue Logic 内の状態表示用の名前の値として公開することとする。 この Glue Logic の状態表示用の名前はエージェントと 一対一の対応を成していなければならない。 このため、各エージェントの状態を表現する名前は、例えばプロセス生成の順序番号だとか、 オペレーティング・システムから与えられたプロセス番号などを含んでいる必要がある。

各エージェントには順に遷移して行くべき幾つかの状態がある。 エージェントの状態表示用の名前はあらかじめ決められた値をとる事によって そのエージェントの状態を示す。 以下にそれらの状態を示す。

初期化状態
アプリケーション・プログラムの処理を開始するためには、 Glue Logic 内の名前の定義や初期化などの準備作業が必要となる。 これらの作業を行なうのが初期化状態である。
まず最初にアプリケーションは自分の状態表示用の名前を作成し、 その名前に初期化状態を示す値を代入しなければならない。 初期化が全て完了したら、そのエージェントはアイドル状態に遷移する。

アイドル状態
この状態では、エージェントはアイドリング状態にあり、 そのエージェントの開始条件の成立を知らせる通知メッセージが来るのを待っている。 すなわち、エージェントはアイドル状態を示す値を状態表示用の名前に代入し、 他のエージェントに処理を開始する準備が整った事を示して、開始メッセージ待ちに入る。

開始状態
処理の開始を伝えるメッセージを受け取ると、 エージェントは共有資源を獲得するための開始状態に入る。 もしもそのエージェントが自分の処理に必要な全ての資源を獲得できれば、 そのエージェントは実行状態を示す値を状態表示用の名前に代入し、 本来の処理を行なう実行状態に遷移する。
もしもエージェントが全ての資源を獲得できなかった場合は、 実行状態に入る事はできない。 この場合には、エージェントは獲得できた全ての資源を一旦開放し、 適当な時間が経ってからもう一度資源の獲得に挑戦する事になる。

実行状態
この状態ではエージェントは本来の作業、 すなわち、セル内の工作機械を制御し、データの処理を行ない、 仕掛かり品を送りだす事ができる。
全ての行なうべき作業が完了すると、 そのエージェントは完了状態を示す値あるいは状態コードを状態表示用の名前に代入する。 状態表示用の名前の値のこの変化を見張っている事で、 Glue Logic は他のエージェントの開始条件をテストする事ができる。
もしも完了状態を示す単一の値の代わりに状態コードが使われると、 後続のエージェントをその状態コードの値によって選択する事ができる。 このように考えると、 少なくとも正常終了と異常終了を示す二種類の値が完了状態を示すために必要となる。

完了状態
エージェントの処理が正常終了したなら、 そのエージェントによって獲得された資源が全て開放されなければならない。 完了状態はそのような処理のために用意され、 資源の開放が終ったならば処理開始を伝える次のメッセージが到着するまで、 アイドル状態に入る。
もしも処理が異常終了した場合には、 その異常回復の操作はその時の状態によって大きく異なってくる。 そのため、エージェントは自分の状態を Glue Logic あるいはその他の異常回復エージェントに 充分正確に伝えてからアイドル状態に入らなければならない。 場合によっては、一旦自分の実行プロセスを終了させ、 次の処理に備えて自分のアプリケーションの新しいエージェントを生成する必要がある。

終了状態
この状態は特に無くても良い。 もしもエージェントが停止命令を受けた時には、 その実行プロセスは終了状態に入る。 この状態では、終了状態を示す値を状態表示用の名前に代入して、 自分の実行プロセスを終了する。 このようにして他のエージェントに対し、自分が停止した事を伝える。

このように状態表示用の名前を Glue Logic 内に用意する事によって、 エージェントを直列あるいは並列に実行させる事ができる。

 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]