(57)【要約】【課題】  ワークフローエンジンがアプリケーションと一体になっているために、ワークフローを切り替えることができなかった。そのため、業種やドメイン毎にシステムを作り直さなければならなかったという課題を解決する。【解決手段】  ワークフローエンジンコンテナはアプリケーションの指示によってワークフローエンジンモジュールをデプロイし、このワークフローエンジンモジュール内のワークフローエンジンファクトリがワークフローエンジンを生成して、前記アプリケーションがこの生成したワークフローエンジンにワークフローの実行を指示するようにした。ワークフローエンジンモジュールを切り替えることにより、複数のワークフローを扱うことができる。【選択図】                    図１
2008027282.tif 000002
【特許請求の範囲】
【請求項１】
ワークフローを実行するワークフローエンジン、およびこのワークフローエンジンを生成するワークフローエンジンファクトリを内蔵し、ワークフロー毎に異なるワークフローエンジンモジュールと、
前記ワークフローエンジンモジュールをデプロイするワークフローエンジンローダを内蔵したワークフローエンジンコンテナと、
ワークフローを指定して、前記ワークフローエンジンコンテナにワークフローエンジンモジュールのデプロイを要求し、デプロイされたワークフローエンジンモジュール内の生成されたワークフローエンジンにワークフローの実行を指示するアプリケーションと、
を具備したことを特徴とするワークフロー切り替えフレームワーク。
【請求項２】
前記ワークフローエンジンコンテナは、デプロイを要求されたワークフローエンジンモジュールと異なるワークフローエンジンモジュールが実行中であるときは、このワークフローエンジンモジュールをアンデプロイした後、デプロイを要求されたワークフローエンジンモジュールをデプロイするようにしたことを特徴とする請求項１記載のワークフロー切り替えフレームワーク。
【請求項３】
前記ワークフローエンジンは、アプリケーションの実行をブロックする同期型実行と、ブロックしない非同期型実行を切り替えて実行できることを特徴とする請求項１若しくは２記載のワークフロー切り替えフレームワーク。
【請求項４】
前記ワークフローエンジンファクトリは、他のワークフローフレームワークのワークフローエンジンファクトリと通信できるようにされていることを特徴とする請求項１乃至請求項３いずれかに記載のワークフロー切り替えフレームワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッチシステムのレシピやシーケンシャルファンクションチャートなど制御システムで用いられているワークフロー記述を、用途に応じて切り替えることができるワークフロー切り替えフレームワークに関するものである。
【背景技術】
【０００２】
制御システムでは、バッチシステムのレシピやシーケンシャルファンクションチャート（ＳＦＣ）等の、処理を記述するためのワークフロー記述が多数用いられている。なお、シーケンシャルファンクションチャートはＰＬＣ(programmable logic controller)のためのグラフィカルな言語であり、シーケンス制御を状態遷移図のように記述することができる。
【０００３】
これらのワークフロー記述は業種やドメインによっても変化する。例えば、食薬業界で使用されるシステムにおけるレシピと、石油精製などのシステムで使用されるバッチとでは、ワークフロー記述が異なっている。そのため、汎用の制御システムでは、多数のワークフローを扱わなければならない。
【０００４】
ワークフロー記述を扱うためには、ワークフロー毎に異なったワークフローエンジンを作成しなければならない。図４に従来用いられている、ワークフロー記述を扱うことができる制御アプリケーションの構成を示す。
【０００５】
図４において、１０はワークフロー記述を扱うことができる制御アプリケーションであり、ワークフローエンジン制御部１１およびワークフローエンジン１２を内蔵している。ワークフロー記述を扱うときは、ワークフローエンジン制御部１１がワークフローエンジン１２にワークフローの実行を指示する。ワークフローエンジン１２は、この指示に基づいてワークフローを実行する。
【０００６】
【特許文献１】特開２０００−０２９９５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、このようなワークフローを扱うことができる制御アプリケーションには、次のような課題があった。前述したように、制御システムでは多種類のワークフローを扱わなければならない。図４の制御アプリケーションはワークフローエンジンがシステムと一体になっているために、ワークフローエンジンを切り替えることができない。このため、業種やドメイン毎にシステムを作り直さなければならないという課題があった。
【０００８】
従って本発明の目的は、ワークフローエンジンを切り替えることができるワークフロー切り替えフレームワークを提供することにある。
【課題を解決するための手段】
【０００９】
このような課題を達成するために、本発明のうち請求項１記載の発明は、
ワークフローを実行するワークフローエンジン、およびこのワークフローエンジンを生成するワークフローエンジンファクトリを内蔵し、ワークフロー毎に異なるワークフローエンジンモジュールと、
前記ワークフローエンジンモジュールをデプロイするワークフローエンジンローダを内蔵したワークフローエンジンコンテナと、
ワークフローを指定して、前記ワークフローエンジンコンテナにワークフローエンジンモジュールのデプロイを要求し、デプロイされたワークフローエンジンモジュール内の生成されたワークフローエンジンにワークフローの実行を指示するアプリケーションと、
を具備したものである。ワークフローエンジンモジュールを切り替えることができる。
【００１０】
請求項２記載の発明は、請求項１記載の発明において、
前記ワークフローエンジンコンテナは、デプロイを要求されたワークフローエンジンモジュールと異なるワークフローエンジンモジュールが実行中であるときは、このワークフローエンジンモジュールをアンデプロイした後、デプロイを要求されたワークフローエンジンモジュールをデプロイするようにしたものである。ワークフローエンジンモジュールが２重に起動されることがない。
【００１１】
請求項３記載の発明は、請求項１若しくは２記載の発明において、
前記ワークフローエンジンは、アプリケーションの実行をブロックする同期型実行と、ブロックしない非同期型実行を切り替えて実行できるようにしたものである。長期に渡るトランザクションを容易に管理できる。
【００１２】
請求項４記載の発明は、請求項１乃至請求項３いずれかに記載の発明において、
前記ワークフローエンジンファクトリは、他のワークフローフレームワークのワークフローエンジンファクトリと通信できるようにしたものである。他のワークフローエンジンと連携できる。
【発明の効果】
【００１３】
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項１，２、３および４の発明によれば、ワークフローエンジンコンテナはアプリケーションの要求によってワークフローエンジンモジュールをデプロイし、このワークフローエンジンモジュール内のワークフローエンジンファクトリがワークフローエンジンを生成して、前記アプリケーションがこの生成したワークフローエンジンにワークフローの実行を指示するようにした。
【００１４】
複数のワークフローエンジンを切り替えて実行することができるので、多くの種類のワークフローを実行することができるという効果がある。そのため、業種やドメインに特化したワークフローをも実行することができる。
【００１５】
また、ワークフローエンジンを抽象化して上位アプリケーションから切り離すことができるので、ワークフローが変わっても、その度に上位アプリケーションを作り直す必要がなくなるという効果もある。
【００１６】
さらに、同期型実行と非同期型実行の両方を選択して実行することができるので、長期間にわたるトランザクションを管理することが容易になるという効果もある。
【発明を実施するための最良の形態】
【００１７】
以下本発明を図面を用いて詳細に説明する。図１は本発明に係るワークフロー切り替えフレームワークの一実施例を示す構成図である。図１において、２０は制御動作を行う制御アプリケーション、２１はこの制御アプリケーション２０に付属しているワークフローエンジンインターフェイスである。ワークフローエンジンインターフェイス２１は、後述するワークフローエンジンから送られてくるＩ／Ｏなどのリソース要求を受けるための統一されたインターフェイスである。
【００１８】
３０はワークフローエンジンコンテナであり、ワークフローエンジンローダ３１を内蔵している。ワークフローエンジンコンテナ３０は、制御アプリケーション２０と後述するワークフローエンジンモジュールとの仲介役となるソフトウエアモジュールである。
【００１９】
４０はワークフローエンジンモジュールであり、ワークフローエンジンファクトリ４１およびワークフローエンジン４３を内蔵しているソフトウエアモジュールである。ワークフローエンジン４３には、ワークフローエンジンインターフェイス２１と同様の動作を行うワークフローエンジンインターフェイス４２が付属している。
【００２０】
ワークフローエンジンコンテナ３０はワークフロー記述とは独立した汎用のモジュールであり、制御アプリケーション２０から送られてくるワークフローエンジン生成要求に応じて、ワークフローエンジンモジュールをデプロイし、またデプロイされているワークフローエンジンモジュール４０をアンデプロイする。なお、デプロイとはソフトウエアモジュールを利用可能なように準備することを言い、アンデプロイとはソフトウエアモジュールを切り離すことを言う。
【００２１】
ワークフローエンジン４３はワークフロー記述を実行するためのコンポーネントであり、ワークフロー記述によって異なっている。このワークフローエンジン４３はワークフローエンジンファクトリ４１によって生成される。
【００２２】
次に、この実施例の動作を図２フローチャートに基づいて説明する。図２において、まず工程（Ｐ２−１）で制御アプリケーション２０は、ワークフロー記述を指定して、ワークフローエンジンコンテナ３０にワークフローエンジンモジュール４０のデプロイを要求する。ワークフロー記述を指定するのは、デプロイするワークフローエンジンモジュールを特定するためである。
【００２３】
次に、工程（Ｐ２−２）で、ワークフローエンジンコンテナ３０内のワークフローエンジンローダ３１は、デプロイを要求されたワークフローエンジンモジュールが既にデプロイされているかをチェックし、デプロイされていれば工程（Ｐ２−６）に移行する。
【００２４】
デプロイされていなければ、工程（Ｐ２−３）で、他のワークフローエンジンモジュールが実行中であるかをチェックし、実行中であれば工程（Ｐ２−４）で実行中のワークフローエンジンモジュールをアンデプロイし、実行中でなければ工程（Ｐ２−５）に移行する。
【００２５】
ワークフローエンジンローダ３１は、実行中のワークフローエンジンモジュールをアンデプロイするために、そのワークフローエンジンモジュールに割り込みをかけて処理を中断させるか、処理が中断あるいは終了するまで待った後、このワークフローエンジンモジュールをアンデプロイする。なお、ワークフローエンジンモジュールのデプロイは、制御アプリケーション２０が動作中であっても可能なように構成される。
【００２６】
工程（Ｐ２−５）で、ワークフローエンジンローダ３１は要求されたワークフローエンジンモジュール４０をデプロイして、工程（Ｐ２−６）に移行する。
【００２７】
次に、工程（Ｐ２−６）で、ワークフローエンジンローダ３１は、デプロイされたワークフローエンジンモジュール４０内のワークフローエンジンファクトリ４１にワークフローエンジンの生成を指示する。
【００２８】
ワークフローエンジンファクトリ４１は、工程（Ｐ２−７）で指示されたワークフローエンジンが生成済みであるかをチェックし、生成済みでないと、工程（Ｐ２−８）で指示されたワークフローエンジンを生成する。生成済みであれば、この工程をスキップする。
【００２９】
次に、工程（Ｐ２−９）で、制御アプリケーション２０は、ワークフローエンジンインターフェイス２１と４２、およびワークフローエンジンコンテナ３０を介して、ワークフローエンジン４３にワークフローの実行を指示する。工程（Ｐ２−１０）で、ワークフローエンジン４３はＩ／Ｏなどのリソースを使用してワークフローを実行する。
【００３０】
なお、ワークフローエンジン４３がワークフローを実行する実行形式には、制御アプリケーション２０の動作を一時ブロックする同期型と、ブロックしない非同期型がある。この実施例では、同期型実行と非同期型実行を切り替えて実行することができる。
【００３１】
非同期型実行は制御アプリケーション２０とは独立して実行されるので、そのままでは制御アプリケーション２０はワークフローの終了を検知できない。制御アプリケーション２０がワークフロー実行の終了を知る手法として、制御アプリケーション２０を含む上位アプリケーションが定期的にワークフローエンジン４３にアクセスして実行終了を確認する手法と、ワークフローエンジン４３が実行終了時にイベントを発生させて、上位アプリケーションに実行終了を通知する手法がある。
【００３２】
図３に、本発明の応用例を示す。なお、図１と同じ要素には同一符号を付し、説明を省略する。図３において、５０は図１と同様構成の制御システムである。すなわち、制御アプリケーション２０はワークフローエンジンコンテナ３０にワークフローエンジンモジュールの生成を要求する。ワークフローエンジンローダ３１はワークフローエンジンモジュール４０をデプロイして、ワークフローエンジンファクトリ５１にワークフローエンジン４３の生成を指示する。制御アプリケーション２０は、生成したワークフローエンジン４３にワークフローの実行を指示し、ワークフローエンジン４３はワークフローを実行する。制御システム６０も、ワークフローエンジンファクトリが異なるだけで、同じ構成を有する。
【００３３】
ワークフローエンジンファクトリ５１、６１は、図１実施例のワークフローエンジンファクトリ４１と同様にワークフローエンジン４３を生成する。また、ワークフローエンジンファクトリ５１、６１は、ＳＯＡＰ(Simple Object Access Protocol)等を用いて相互に通信することができる。このようにすることにより、ワークフローエンジンファクトリ５１、６１は、ウエブサービス等を使用して連携することができ、ワークフローの一部を他のワークフローエンジン依頼することが可能になる。
【００３４】
ビジネス分野等で用いられるＢＰＥＬ(Business Process Execution Language for Web Services)でも、ワークフロー記述が用いられている。ＭＥＳ（Manufacturing Execution System）やＥＲＰ(Enterprise Resource Planning)等のレイヤーと制御システムの下位制御レイヤーとの垂直統合を行うためには、ビジネス分野のワークフロー記述をも扱えるようにしなければならない。本発明を使用することにより、上位レイヤーで使用しているワークフローをそのまま下位層に適合することができ、垂直統合を容易に実現することができる。
【００３５】
図３のような構成にすることにより、ワークフローを複数のシステムで実行することが可能になり、グリッド的なシステムを構築することができる。また、通信を介して他のシステムのリソースをアクセスすることもできる。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施例を示す構成図である。
【図２】本発明の一実施例の動作を示すフローチャートである。
【図３】本発明の応用を説明するための構成図である。
【図４】従来の制御アプリケーションの構成図である。
【符号の説明】
【００３７】
２０  制御アプリケーション
２１、４２  ワークフローエンジンインターフェイス
３０  ワークフローエンジンコンテナ
３１  ワークフローエンジンローダ
４０  ワークフローエンジンモジュール
４１、５１、６１  ワークフローエンジンファクトリ
４３  ワークフローエンジン
５０、６０  制御システム
【図１】
2008027282.tif 000003
【図２】
2008027282.tif 000004
【図３】
2008027282.tif 000005
【図４】
2008027282.tif 000006