Naoki Kurosawa
n-kur****@nri*****
2003年 12月 18日 (木) 17:06:40 JST
黒澤です。 ワークフローシステム構想その4 このプロジェクトで作るワークフローシステムの機能です。 一般的ワークフローシステムの機能と違ったり、 あるものがなかったりします。 ■どんな機能があるのか-概要 メイン ・プロセス制御 - 起動・停止・再開・終了 - 優先度 - 流量 ・プロセス内のフロー制御(処理の流れのスクリプト記述と実行) ・プロセスに含まれるアクティビティの実行制御(予約・実行) ・クライアント機能(プロセス制御へのアクセス、ステータス問い合わせ) サブ ・プロセスのスケジューリング(何時に起動、何時までいったん停止) ・別プロセスとの連携(別のプロセスが終わるまで待つ) メインは、最低限なくてはならない機能で、 サブは、なくてもどうにかなる・あとから足せる機能です。 ■プロセス制御 ○起動 プロセス定義をロードし、実行を開始 ○停止 アクティビティから次のアクティビティへの実行の遷移を一時停止 ○再開 一時停止していた遷移を再開 ○終了 最後のアクティビティを終了し、ロードされたプロセス定義を破棄 ○優先度・流量 長くなるので別メールで。 ■プロセス内のフロー制御 これも長くなるので別メールで。 ■プロセスに含まれるアクティビティの実行制御 プロセスに含まれるアクティビティは大きく3つに分けられる。 ○ワークフローエンジンそのものが実行するもの。 条件分岐・ループなどの実行経路制御アクティビティ ○ワークフローエンジンが呼び出すもの 人間の手を介さない&分散サーバなどで実行しないもので、 ワークフローエンジンから呼ばれて実行されるもの(EJBなど) 「push型アクティビティ」と呼ぶ。 ○ワークフローエンジンに対して実行予約(アクティビティ取得)をして 実行するもの。 人間の手による処理や、分散サーバなどで実行されるもの。 「pull型アクティビティ」と呼ぶ。 プロセスの実行がこのアクティビティに達すると、 人間の手で実行されるか、分散サーバで実行されるまで、 プロセスは待ち状態になる。 実行制御機能は、プロセスに定義されたアクティビティ群を次々と 実行していく機能。 ○pull型アクティビティの実行割り当て pull型アクティビティは、さらに以下の2つに分けられる ・実行予約をして実行する(割り当てられる分散サーバは1個) ・複数の分散サーバを割り当て、予約をしない (一番早く返った結果を採用) また、pull型アクティビティを実行する(分散サーバ)側では、 一度に複数のアクティビティを取得し、 一括して結果を返すこともできる。 ■クライアント機能 ・プロセスの作成 ・プロセスの属性の読み書き ・プロセスの変数の読み書き ・プロセスの開始・停止・再開・強制終了 ・プロセスの問い合わせ - プロセス名・属性値によるプロセスの検索 ■プロセスのスケジューリング ○単発のプロセス起動 何年何月何日何時何分何秒にプロセスを起動。 ○繰り返しのプロセス起動 期間 ・開始 何年何月何日何時何分何秒スタートで ・終了 - 無期限 - 反復何回 - 終了日 何年何月何日まで パターン ・日 - N日ごと の hh時mm分ss秒に ・週 - N週ごと の W曜日 の hh時mm分ss秒に ・月 - 【日】Nヵ月ごとのD日の hh時mm分ss秒に - 【曜日】Nヶ月ごとの 第M W曜日 の hh時mm分ss秒に ・年 - 【指定日】何月何日のhh時mm分ss秒に - 【指定曜日】何月の第M W曜日 の hh時mm分ss秒に ○「時間待ち」アクティビティ 時刻 何年何月何日何時何分まで 時間 何年間何ヶ月何日間何時間何分何秒間 繰り返し的パターン 何年何月何日から数えて… ・日 N日ごとの hh時mm分ss秒になるまで ・週 N週ごと の W曜日 の hh時mm分ss秒になるまで ・月 - 【日】Nヵ月ごとのD日の hh時mm分ss秒になるまで - 【曜日】Nヶ月ごとの 第M W曜日 の hh時mm分ss秒になるまで ・年 - 【指定日】何月何日のhh時mm分ss秒になるまで - 【指定曜日】何月の第M W曜日 の hh時mm分ss秒になるまで ■別プロセスとの連携 プロセスは以下の2つに分けられる。 ・普通に起動された独立プロセス ・あるプロセスから起動された子プロセス プロセスが別なプロセスを起動するとき、 ・子プロセスとして起動するか ・独立プロセスとして起動するか を選択することができる。 クライアント(操作する人間や、外部プログラム:EJBなど)は、 独立プロセスしか起動できない。 子プロセスと独立プロセスの違いは、 ・子プロセスは、親プロセスへのプロセスコントロールを継承する。 親プロセスに対する起動・停止・再開操作が子プロセスにも波及する ・独立プロセスは明示的にそのプロセスへの操作を行わなくてはならない。 ○プロセス連携アクティビティ ・指定したプロセスが終了するまで待つ タイムアウトも指定できる ・指定したプロセス群の内、N個終了するまで待つ -- 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/