Naoki Kurosawa
n-kur****@nri*****
2003年 12月 16日 (火) 19:29:31 JST
黒澤です。 ワークフローシステムについてその2 登場人物です。 用語、定義はProposalとして書いていたものから変えています。 BPEL4WSに倣っているためです。 類似システムと用語をあわせたほうが、 部外者にも理解してもらいやすいですし。 普通のOSがやるプロセス制御に似ているところが数多くあります。 OSの機能と対比させると理解しやすいと思います。 また、Proposalに対してKonkitiさんから寄せられていた意見やご質問にも ある程度答えています。 ■登場人物 ○プロセス システム上にロードされたフロー記述で、実行可能な状態。 OSでいうプロセスと同じ。 OSでいうスレッドは実現しない。理由は、フロー記述が複雑になるため。 スレッドを用いて解決したいような局面は子プロセスを作成することで 対応する。 プロセスは属性情報を持つ。(Proposalにはなかったもの) 属性とは、親プロセスのIDや プロセスが処理している対象を表す(リーグIDなど)情報である。 システムであらかじめ定義された属性とプロセス独自に持つ属性がある。 外部(ワークフローシステムを利用するクライアントなど)からアクセスする ことができ、値の設定・取得ができるが、そのアクセス権は定義によってコン トロールできる(プロセス外部からは値の取得のみ可能、など)。 主に、ワークフローシステム上でプロセスを識別するために用いられ、 ワークフローシステムによってアクセスされることが多い。 ○アクティビティ (Proposalではステップと呼んでいた) プロセスを構成する一つ一つのタスク。 OSでいう、プログラムの1行に相当する。 アクティビティは、実行経路制御やプロセス制御のためのビルトイン・アクティ ビティと、アプリが実現したい処理が記述されたカスタム・アクティビティで 構成される。 アクティビティはループや条件処理などのために別のアクティビティ群を 内包することもできる。 ○プロセス定義(Proposalではプロセス・テンプレートと呼んでいた) ツリー上になったアクティビティ群の静的な記述。 OSでいう「プログラム」あるいは「ソースコード」に相当する。 XMLでワークフローシステム上で動作するタスクの流れを定義する。 ○レジストリ プロセスの静的な記述(プロセス定義)を格納するコレクション。 実体はシステム内の特定のディレクトリ。 通常のOSにはこれと一対一で対応するものはないが、 プログラムが格納されたディスクが近い。 プロセス定義のXMLファイルが格納される。 ○変数 プロセスの実行情報を格納するためのデータ領域。 外部(ワークフローシステムを利用するクライアントなど)からアクセスでき、 値の設定・取得ができる。 プロセス起動後、開始する前にあらかじめ変数を設定することで、 プロセスに対して初期情報を与えることができる。 また、プロセス終了後の実行結果を取得するためにも用いることができる。 ○コンテキスト プロセスの動的な処理状態を表す。 変数の現在値も格納する。 ステップの実行はコンテキストに記録され、コンテキスト情報は 何らかの永続化機構によって保存されるため、プロセスの処理を 中断したり、後で再開したりできる。 さらに以下続報。 -- Naoki Kurosawa <naoki_kuros****@ybb*****>, <n-kur****@nri*****> Sharpen up JAVA skills. - Robocode Rumble-JP Project - http://rumble-jp.sourceforge.jp/ http://robocode.ddo.jp/rumblejp/