OpenWFEru, a Ruby workflow engine (John Mettraux)
- スピーカー
- John Mettraux - Macnica Web Solutions, Tokyo Linux User Group
- プロフィール
- John Mettraux, Swiss citizen. Software architect and open source developer with a predilection for the workflow, business process management (BPM) and document management domains. Started the OpenWFE (Open source WorkFlow Engine) project in 2001 to ensure a certain level of independence. Launched the OpenWFEru project in 2006, as a port of OpenWFE from Java to Ruby. Blogs on workflow and software engineering subjects at http://jmettraux.openwfe.org
- 講演時間
- 11:00〜11:30
- 講演者による資料
- openwferu_rk2007_j.pdf (和訳付き, 538 KB)
タイトルのスライドには「OPEN WFE-る」とあります。 新横浜に住んでいるとのこと。日本語での挨拶から始まりました。
OpenWFEruとは
開発当初はJavaで、現在はRubyで書いてあるアプリケーション。 発音しにくいですが :P
これは 企業・組織のビシネスプロセスやワークフローを管理する するアプリケーション。
組織には、ビジネスプロセスに参加する「参加者」、 部門、また、リソース・サービス・ロールがある。 例えば、
- チャーリーが人事部に電話をかける
- 経理部がリソースをサービスにわりつける
ここで重要なのは、変化。
- 人が移動したりもする
- 組織も変化する
- 環境も変化する
- 効率化やrentabilityへの期待も高まる
参加者よりもプロセスの方がすぐ変わることに注意が必要。 つまり、1つの組織モデルに多数のビジネスプロセスがある。
プロセスが一級市民扱いの世界もある - Operating System
- たくさんのプロセス
- fork, signal, exitによる管理
- ファイルやデバイスという「参加者」
というわけで、OpenWFEru
つまり、OpenWFEruはビジネスプロセスのOSだ!
ここでは、「参加者」とプロセスが一級市民。 変化に近い場所で活動するワークフローエンジン。
- 組織、モデルなどの入力
- プロセスの始動
- 昼ごはん Lunch じゃないよ、始動 Launch だよ
ビジネスプロセスの定義
沢山のプロセスを沢山の参加者について接続する
XMLでも定義できる。
グラフィカルな定義でもいいが、XMLの方が良い:
- 差分をとりやすい
- 複雑な概念を記述しやすい
- すっきり記述できる
YAMLで書きたいという要求もある。できないことはないが、最初から書くのは大変。
RubyのDSLでかくのがいいよ。例:
class CustomerRequestReview < OpenWFE::ProcesssDefinition sequence do concurrence do participant :ref => :alice participant :ref => :bob end participant :ref => :charly end end
このように、並列、直列の他、タイムアウトやスリープなども規定できる
ビジネスエンジンとしては、
- メール
- amazon SOS
などもサポートしている。
ビジネスプロセスは数秒で終わるものから長くかかるものまでいろいろある。 ワークフローエンジンよりも長く続くものも多く、定義・参加者・エンジンの永続化 が欠かせない。
加えて、一時停止・再開、migration (別の部門へのエンジンの移動)、 プロセスやエンジンの修正にも対応している。
使いかた
ユーザーインターフェースはかっこいい方がいいので、 Ruby on Railsをフロントエンドに使うことがおおい。
このうしろで、owferuエンジンや他のアプリケーションが稼動する。
開発
Rubyのエコシステムを活用
- Camping, Ruport, AP4R, dRuby
- JRuby - Java大サーカス!
- RESTでの.Net, Python, Perl, Pnuts, ... の利用
現在
エンジンのバージョンは0.9.1
- YAMLやfsによる永続化
- OpenWFEの古いインターフェースに対応
- ジャーナリングを実現
ユーザーが増加中
近い将来
バージョン0.9.2はJRubyで100%動くようになるはず。さらに下記の機能を追加する:
- ウェブでのプロセス定義
- モニタリング/シミュレーションツール
- プロセス定義言語の追加
- もっと分散化
- アドホックなプロセスの追加を可能にする
- 文書の追加
- Masa Sakaguchiさんによってサイトの和訳が進んでいる
Keyword(s):
References:[RubyKaigi2007速報ログ]