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 だよ
rubykaigi_biz3.jpg

ビジネスプロセスの定義

沢山のプロセスを沢山の参加者について接続する

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さんによってサイトの和訳が進んでいる

質疑応答

Q
ビジネスプロセスの定義はどのような形式で書いても同等か?
A
XMLで書いた場合とRubyで書いた場合は同等。XMLで書くにはたくさんのツールを使えるし、Rubyで書けば見やすい
Q
BPELとの違いは?
A
近い。BPELでも書けるようには簡単にできるよ。

(ロガー: zunda)

Last modified:2007/06/16 15:58:34
Keyword(s):
References:[RubyKaigi2007速報ログ]

Login