Seasar サイトマップ

来源:互联网 发布:公司网络信息保密协议 编辑:程序博客网 时间:2024/05/20 01:37

1.1. ワークフローと BPM

ワークフローとは「業務における一連の作業の流れ」のことです。ワークフローを考えることで、一連の作業をより効率的に行うことができます。

最近ではワークフローという言葉の代わりに BPM(Business Process Modeling)という言葉が使われるようになってきました。どちらも作業の流れを形式化し、作業効率を高めるための考え方である点では同じです。ワークフローは BPM の一部(BPM の方が上位レベル)であるという考え方もありますが、本稿ではワークフローと BPM という言葉をあまり厳密に区別せずに使用します。

以下に簡単なワークフローの例を示します:

  1. 部下が書類を作成する
  2. 部下は作成した書類を上司に提出する
  3. 上司は提出された書類に目を通し、承認/非承認を決める

業務でありがちな作業ですが、このワークフローの中で「書類」というオブジェクトが扱われていることに注意してください。また、より上位レベルの(企業活動全体に関わる)ワークフローを考えることもできます。

昨今のシステム開発の現状を見ると、設計技法や開発技法についてはある程度確立されてきた感があります。しかし、フロー制御という観点が必要なシステムに対する方法論は広く浸透しているとは言えないというのが現状です。フロー制御が必要なシステムに対して有効となるのがワークフローや BPM という考え方です。

1.2. プロセス指向アーキテクチャ

ワークフローや BPM という考え方は決して万能なものではなく、考える対象によって向き/不向きがあります。どのような対象に向いているのかというと「プロセス指向アーキテクチャ」というものです。プロセス指向アーキテクチャは以下のような特徴を持ちます:

  • 長時間実行されるが、ほとんどは休止状態である
  • イベントに対して短時間の処理を行う(イベント・ドリブンである)
  • 状態が永続化される
  • 複数システムが強調して動作する

ここに挙げた特徴を全て備えている必要はありませんが、「1.4. モデリング」にあるような「箱と矢印」の図で描くことができなければ、ワークフローや BPM という考え方には向いていないと考えられます。

ワークフローや BPM という考え方に向いている例としては、旅行の予約システムや商品の注文システムなどが考えられます。どちらの場合も、全ての処理が完結するまでにはある程度の時間(ときには数日)かかりますし、その間には「申し込み」や「ホテルの手配の完了」、「配達の完了」などのイベントが含まれます。

1.3. ワークフローや BPM の標準

ワークフローや BPM の標準化団体はいくつかあり、それぞれがワークフローや BPM の標準を制定しています。以下に主な標準化団体と、それぞれが制定しているワークフローやビジネス・プロセスのモデリング記法と定義言語を示します:

標準化団体モデリング記法定義言語WfMC なしXPDLBPMI BPMNBPMLOASIS なしBPEL(BPEL4WS)

「モデリング記法」はモデリングを行うときの図の描き方、「定義言語」はモデリングを行った結果をファイルに保存するときなどに使用する形式のことを表します。定義言語については各団体とも標準を定めていますが、モデリング記法については WfMC と OASIS では制定していません。現状では複数の団体が競合する標準を制定しているなどの問題もありますが、各団体は互いに無関係というわけではありません。例えば BPMI は WfMC や OASIS のメンバーになっており、自身が持たない標準に関する議論にも参加しています。今後、競合する標準に関して整理が行われることが望まれます。

定義言語に関して、OASIS は自身が提唱する BPML(Business Process Modeling Language)よりも BPEL(Business Process Execution Language)の方が優位であると認めています。そのため、定義言語に関しては XPDL(XML Process Definition Language) と BPEL の二つが競合していると考えても良いでしょう。BPEL は BPEL4WS(Business Process Execution Language for Web Servicies)の略であり、Web サービスを意識した標準 であることが XPDL との違いです。なお本稿で紹介する Buri は XPDL を扱います。

1.4. モデリング

通常、モデリングは専用のモデリング・ツールを使用して行います。図の描き方(表示の仕方)はモデリング・ツールによって異なりますが、基本的な部分は似通っており、以下のように「箱と矢印」で処理の流れを表します:

この画像は JaWE というモデリング・ツール(ワークフロー・エディタ)の実行画面の一部です。JaWE は Buri が扱う XPDL 形式での保存に対応しているため、Buri で開発するときに主に使用されます。JaWE については実際に開発を行うときに改めて解説します。

1.5. ワークフロー・パターン

GoF(Gang of Four)と呼ばれる 4 人の人物が、ソフトウェア開発におけるよくある形に名前を与え「デザイン・パターン」としてカタログ化しました。これによってソフトウェア開発におけるノウハウをパターンとしてまとめ、知識を共有しよう、共通の語彙としようという流れが生まれました。ワークフローの世界でも P4(Process Four)と呼ばれる 4 人によって、一般的なワークフローの形が「ワークフロー・パターン」としてカタログ化されています。P4 によるワークフローのパターンは全部で 20 種類あり、以下に示す 6 カテゴリに分類されています:

  • 基本制御パターン(Basic Control Patterns)
  • 先進的分岐と同期のパターン(Advanced Branching and Synchronization Patterns)
  • 構造のパターン(Structural Patterns)
  • 複数インスタンスのパターン(Patterns Involving Multiple Instances)
  • 状態に基づくパターン(State-based patterns)
  • キャンセルに関するパターン(Cancellation Patterns)

ワークフローという言葉はよく使われるものですが、P4 による分類を見るとワークフローにも多くのパターンがあることが分かります。Workflow Patterns のサイト では、彼らの分類するワークフロー・パターンの Flash アニメーションが公開されていますので、視覚的に理解することができます。

1.6. ワークフロー・エンジン

ここまでの説明で、ワークフローや BPM の有用性については理解していただけたと思います。BPM によるモデリングを行った後は、成果物である BPEL や XPDL を元にしてシステム開発に利用することができます。その場合、モデリング結果を参照しながら手作業でコーディングを行うのではなく、ワークフロー・エンジンというものを導入すると便利です。

ワークフロー・エンジンとは、与えられたワークフローの定義に従ってフロー制御を行うことを専門とする実行エンジンです。実行するワークフローの与え方はワークフロー・エンジンによって異なりますが、通常は BPEL や XPDL などの定義言語で記述されたファイルが利用されます。

ワークフロー・エンジンを導入することの利点は、フロー制御に関する部分を全てエンジン側に任せることができる点にあります。ワークフロー・エンジンを導入せずに独自にフロー制御処理を記述するとなると、どうしてもその場しのぎのコードを書いてしまいがちです。そうでないとしても、フロー制御のコードには以下に挙げる点が必要となります:

  • プログラム中にフロー制御のための条件分岐が必要
    - オブジェクトがワークフロー上のどこにあるのか判定するための条件分岐、次の遷移先を決定するための条件分岐が大量に必要となります。これによってプログラム全体が複雑になるだけでなく、アプリケーションが変更に対して非常に脆くなってしまいます。
  • オブジェクトに状態用の情報が必要
    - フロー制御を行うには、そこで管理するオブジェクトの状態も管理しなければなりません。そのための状態管理用の情報をオブジェクトに追加しなければならず、オブジェクトが複雑になります。
  • RDB のテーブルに状態用のカラムが必要
    - ワークフロー上のオブジェクトは、アプリケーションの終了とともに永続化されます。RDB によって永続化を行う場合は、テーブルの定義にオブジェクトに追加した状態管理用の情報のためのカラムを追加しなければなりません。

ワークフロー・エンジンを導入すると、フロー制御のための大量の条件分岐を一掃することができます。オブジェクトの定義から状態管理用の情報も不要となるため、ワークフローで管理するオブジェクトがステートレス(状態を持たない)となり、プログラムが簡素になります。また、ワークフロー・エンジンによってフロー制御部分が切り離されることによって、ワークフローの変更という上位レベルの変更に対して柔軟に対応することができます。

まとめ

今回は一般的に使われるワークフローという言葉の再確認から、BPM やワークフロー・パターンの説明、そして BPM の結果を積極的に活用する一つの方法であるワークフロー・エンジンの説明を行いました。要点をまとめると次の通りです:

  • ワークフローや BPM という考え方はプロセス指向アーキテクチャに向いている
  • ワークフローは BPEL や XPDL 形式で保存する
  • デザイン・パターンのようにワークフローにもプロセス・パターンというものがある
  • ワークフロー・エンジンによって手作業のコーディングを最小限に抑えることができる

次回は、ワークフロー・エンジンである Buri の説明に入ります。Buri の導入やサンプル・プログラムの実行までを行います。

 

原创粉丝点击