[Rumble-jp-dev] ワークフローシステム構想1(ワークフローシステムとは)

Zurück zum Archiv-Index

Naoki Kurosawa n-kur****@nri*****
2003年 12月 16日 (火) 15:59:58 JST


黒澤です。

新システムの根幹を担う予定のワークフローシステムについてです。
概略語ってみます。

■ワークフローシステムとは
一般的に世に出回っているワークフローシステム(BancTec Flowareなど)は
人間による企業のワークフローをシステム化し、
・コンピュータシステムと人間の処理の連携
・処理同士の順序の管理
等を行ってくれるものです。

たとえば、過去に私が関わったことのあるワークフローシステムは
住宅情報雑誌を発行している会社のシステムで、
(これは語っても大丈夫なことになっているのでご心配なく)

1.不動産屋さんから物件情報がFAXされてくる
2.FAXがOCRされて、OCRで読み取れたデータとイメージデータそのものが
  DBに格納される。
3.オペレータさんのクライアントに「FAX一件到着してるけど」と出る。
  そいつを選ぶと読み取れたデータとイメージデータが表示され、
  読み取り間違い、読み落しを人力で修正し、DB更新。
4.これまで付き合いのない不動産屋さんからのデータだったりすると…
  i .監査部署の人のクライアントに「未確認不動産屋発見」と出る。
  ii.そいつを選んで不動産屋さんの業績やら評判(?)やらを調べて
     OKを出す。
  既に付き合いのある不動産屋さんだとこの処理はスキップ
5.製作情報(雑誌を編集する人の元データ)DBに物件情報が登録される。

なんてことをやっていました。

ワークフローシステムは裏側で、
・FAXが入ったところでフロー起動
・OCR処理をやるタスクを自動処理
・OCRデータをDBに登録するタスクを自動処理
・オペレータ処理のキューにタスクを投入
  ・オペレータが「このFAXを処理するぞ」という操作をすると、
    そのタスクの実行を予約(他のオペレータからは見えなくなる)
  ・オペレータがタスクを完了するとフロー再開
・タスクの情報で条件判断し、4番のサブタスクを実行するかどうか決定
  ・管理部署処理のキューにタスク投入
    (この後はオペレータ処理と同じ)
・製作情報DBにデータを登録するタスクを自動処理
というような動きをしています。

その他の特徴としては
・フローは当然いくつも平行して起動・実行されます。
・フローの定義はGUIアプリケーションでフローチャートみたいなものを書く
  ことで行います。
・一つのフローでも、内部で分岐して平行して進めることもできます。
・処理のタイムアウトを定義・ハンドリングすることができます。
  (オペレータが「このFAXを処理するぞ」という操作をしておいて、
  処理せず帰ってしまった場合でも一定時間でタイムアウトして
  別オペレータが処理するということができます)
というところでしょうか。

ちなみに、一般的にワークフローシステムが出てきそうなところでは、
FAXとかOCRとかが良く絡むので、BancTecのFlowareには
FAX受信とかOCRエンジンとかが付属していたりして、
それが大きな売りになっていたりします。


■なぜRobocode Stadiumシステムにワークフローなのか

・分散サーバがバトル実行を予約し、処理して返す、
  タイムアウト処理もある、というところが、
  ワークフローで実現されているものとそっくり。
・様々な集計にだんだん時間がかかるようになってきている。
  Webページへのリクエストが来た瞬間に毎回集計するのでは遅すぎる。
  データが入ってきた瞬間に集計しておくべき。
  でも、それを普通にやると、分散サーバからの実行結果受け付けに時間が
  かかりすぎてタイムアウトしてしまう。
  データは受け付けて、裏で非同期に集計するような仕組みにしたい。
・BattleObserver, ThroughputObserverのように、daemon的に動く処理も
  これから増えていくだろう。
  いちいちこれまでのBattleObserverみたいな作り方をするのは面倒くさい。
・大会進行フローや大会に含まれるリーグ構成、そのデータ連携など
  いろいろやりたいことはあるけど、いちいち全部作りたくない。
  部分部分を部品にして、組み合わせると大会進行フローが出来上がる、
  というようにしたい。

■なぜ我々で作るのか
・買ったら高いから(何千万円)
・オープンソースなやつでいいのがないから

■Robocodeワークフローシステムの特徴
・Grid対応
  タスクはインターネット上に分散された分散サーバで実行することができます。
  これは世界的に見ても例がないものです。
・Webサービス(SOAP)対応
  Webサービスでワークフローエンジンにアクセスできます。
  Webサービス「の」フローを記述するものであれば、WSFLだのBPEL4WSだの
  というのがありますが。これらともちょっと違う。


以下続報。

-- 
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/




Rumble-jp-dev メーリングリストの案内
Zurück zum Archiv-Index