BPMとSOAをきちんと整理して考える

 BPMやSOAの時代がやってくると言われながら、まだまだ実際のシステム構築において実践されているとは言いがたい状況にある。たいていの人の理解では、ビジネスコンポーネントをWEBサービスとして実装し、BPELで定義されたビジネスプロセスによって順次実行していくというようなものではないだろうか。最近ではリッチクライアントでプログラムを開発し、サーバ上で提供されるサービスを呼び出すという流れが出てきている。これはクライアント/サーバ型の開発に新しい技術を適用したものと考えることができる。VBの代わりにAjaxなどのリッチクライントの言語・環境を使い、データベースにODBCなどでアクセスする代わりに、ストアドプロシジャのようなサービスをSOAPインタフェースで呼び出すものである。
 実はビジネスプロセスの主要な構成要素は人間による画面操作であり、BPELがこれを表現できないからクライアント/サーバ型の開発アプローチが出てきているといえる。BPMとSOAの狭義な考え方を採用すれば、状況はすっきりする。BPMはプログラムコードの中にプロセスを埋め込むのではなく、外部に定義するということである。クライアント/サーバ型では、プロセスは定義されておらず、人間が勝手に判断して画面操作をしているわけである。人によってプロセスが変わることだって十分にある(フラグなどの制御をしているので誤操作はないであろうが)。新しい人が業務を覚えるためには画面の操作の順番を覚えなければならない。一方でSOAとはSOAPインタフェースで外部プログラムを呼び出すことともいえる。(少し乱暴ではあるが)このように考えると、画面系プログラムとその順番であるプロセスを定義したビジネスプロセスとSOAPインタフェースで呼び出される外部プログラムから構成されたものが現実的なSOAであると言える。もう少し具体的なイメージで記述するならば、誰が何をどういう順番で実行するかを定義したプロセスをコントロールするワークフローエンジンがあって、ユーザがログインすると実行すべき業務(または画面)を表示する。ユーザはそれをクリックすると、ASPやJSPなどで開発された画面系プログラムが実行される。これらのプログラムはデータベースへのアクセスをSOAPインタフェースで行っている。もちろんSOAPインタフェースで呼び出されるプログラム(サービス)はいろいろなものがあるであろうから、場合によってはかなり粒度の大きいサービスがあってもいいかもしれない。

トラックバック

このエントリーのトラックバックURL:
http://www.innova-bp.co.jp/mt/mt-tb.cgi/105