JP3767666B2 - Workflow management system - Google Patents

Workflow management system Download PDF

Info

Publication number
JP3767666B2
JP3767666B2 JP17952099A JP17952099A JP3767666B2 JP 3767666 B2 JP3767666 B2 JP 3767666B2 JP 17952099 A JP17952099 A JP 17952099A JP 17952099 A JP17952099 A JP 17952099A JP 3767666 B2 JP3767666 B2 JP 3767666B2
Authority
JP
Japan
Prior art keywords
code
workflow
definition
workflow engine
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP17952099A
Other languages
Japanese (ja)
Other versions
JP2001005680A (en
Inventor
進一 乙川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP17952099A priority Critical patent/JP3767666B2/en
Publication of JP2001005680A publication Critical patent/JP2001005680A/en
Application granted granted Critical
Publication of JP3767666B2 publication Critical patent/JP3767666B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、ワークフロー管理システム、ワークフロー管理システムに用いるコードジェネレータおよびワークフロー処理のプロセスの変更方法に関する。
【0002】
【従来の技術】
従来、ワークフロー管理システムが、複数の端末計算機が接続されたネットワークシステムで、一連かつ複数の工程からなる情報処理すなわちワークフロー処理を効率よく行うために利用されている。ワークフロー処理に係るデータは、パッケージとして各計算機の間を定められた順序で移動し、および、各計算機で処理される。これらの各計算機を操作して各処理者がデータを参照したり書き換えたりする。このような、ワークフロー管理システムの一例が文献I(日経コンピュータ」1997.9.1号 第204〜217頁)に開示されている。
【0003】
図9は、文献Iに開示されているワークフロー管理システムを各機能毎にブロックで分割して概略的に示す図である。図9では、データを角の丸い長方形で示し、機能手段(アプリケーション等)を角張った長方形で示してある。図9に示すように、このワークフロー管理システム201は、ワークフローエンジンA203と、プロセス定義ツールA205と、ワークリストハンドラA207と、モニタリングツールA209とを有する。広く用いられているクライアント/サーバシステムでは、ワークフロー処理を制御するワークフローエンジンA203がワークフローサーバ204で動作しており、各処理者はクライアント計算機を操作して担当の工程(アクティビティ)を実行する。
【0004】
プロセス定義ツールA205は、各工程の処理内容と、アクティビティの順序とを定義するための機能モジュールである。プロセス定義ツールA205は、新規にワークフロー処理を開始するとき、プロセス定義データD211を生成する。プロセス定義データD211は、各アクティビティにおける処理内容と、アクティビティの順序とに関するデータを一体のデータとして含む。また、プロセス定義データD211は、ワークフロー処理の終了条件等の制御条件に関するデータを含むことがある。一般的なプロセス定義ツールA205ではグラフィカルユーザインターフェース(GUI)環境が整えられている。そのため、処理者は、マウス操作によってポインタを用いることによりプロセス(アクティビティの順序および各アクティビティでの処理内容)を容易に定義できる。
【0005】
ワークフローエンジンA203は、ワークフロー処理を制御する機能モジュールである。具体的に言うと、ワークフローエンジンA203は、プロセス定義データD211を解釈してこの解釈に基づいて処理内容を示すワークアイテムをワークリストD213に追加する。なお、ワークリストD213は、各処理者が処理すべきワークアイテムを格納するデータ領域であり、個々の処理者毎に設けられる。
【0006】
各処理者は、ワークリストハンドラA207によって示されるワークアイテムにしたがって、クライアントアプリケーションA215等を用いてアクティビティを実行する。また、人間による処理を必要としないアクティビティについては、ワークフローエンジンA203によって起動された起動アプリケーションA217が、アクティビティを実行する。図9に示すように、これらクライアントアプリケーションA215或いは起動アプリケーションA217はアプリケーションデータD219を利用することがある。
【0007】
ワークリストハンドラA207は、ワークリストD213を参照して処理すべきワークアイテムを各処理者に示すことにより、各処理者に処理内容に関する指示を与える。その処理者が作業を終了すると、ワークリストハンドラA207はワークリストD213からワークアイテムを削除する。ワークフローエンジンA203は、ワークアイテムの削除によってアクティビティの終了を認識して、次の処理者のワークリストD213にワークアイテムを付加する。
【0008】
モニタリングツールA209は、ワークフローエンジンA203を監視することによってワークフロー処理の進行具合を確認する機能モジュールである。モニタリングツールA209によって、監督者或いは各処理者は必要に応じてワークフロー処理の途中経過や終了結果を参照することができる。
【0009】
ワークフロー制御データD221は、複数のワークフロー処理を並行して行う場合、各ワークフロー処理を受け持つワークフローエンジンを互いに識別するのに用いられる。また、ワークフロー関連データD223は、ワークフロー処理に関連する様々な情報を含む。ワークフロー関連データD223は、例えば購入物品の価格データ等であり、価格帯によって担当すべき処理者が変化する場合等に用いられる。
【0010】
図9に示すように、ワークフローエンジンA203がプロセス定義データD211に基づいて各アクティビティにおける処理を制御することにより、ワークフロー処理は行われる。一般的に言うと、ワークフロー処理は、繰り返し行われる定型業務およびアドホックな非定型業務の二つの業務に分類される。定型業務には出張費伝票、備品購入伝票または予算申請などがあり、非定型業務には資料回覧、技術文書作成またはソフト開発などがある。業務の効率を向上させるためには、これら多種多様な業務に適用できるワークフロー管理システムが必要である。
【0011】
典型的に言うと、定型業務のワークフロー処理では、アクティビティの順序および各アクティビティにおける処理内容が殆ど変化しないため、一つのプロセス定義データを用いることが多い。一方、非定型業務のワークフロー処理では、アクティビティの順序および各アクティビティにおける処理内容が一定ではないので、ワークフロー処理を行う毎にプロセス定義データを生成することが多い。
【0012】
【発明が解決しようとする課題】
しかしながら、従来のワークフロー管理システムでは、定型業務或いは非定型業務のいずれにおいても、各アクティビティの処理内容或いは処理順序を変更する場合にはプロセス定義データの全体を修正する必要があった。例えば、ルーチンワークである備品購入伝票において決裁者を変更する場合には、今まで用いていたプロセス定義データを修正しなければならない。また、アドホックに発生する資料回覧において資料の回覧先を変更したい場合には、資料回覧を開始する前にプロセス定義データを修正しなければならない。
【0013】
このようなアクティビティの処理順序の変更を容易に行うため、図9のワークフロー管理システム201では、ワークフローエンジンA203が組織/役割データD225を参照する。組織/役割データD225とは、課長や部長などの組織内の役職等を示す一般的宛先名と、処理者の名前等の具体的宛先名とを関連付けたデータである。この場合、プロセス定義データD211に一般的宛先名を定義しておくだけで、ワークフローエンジンA203は、組織/役割データD225を参照することにより一般的宛先名から具体的宛先名を判断できる。そのため、決裁ルートに沿う役職にある処理者が人事異動等によって他の処理者に変更された場合でも、動的に宛先が認識されるため、決裁ルートの宛先名を変更する必要が無くなる。
【0014】
このような組織/役割データの導入によって変更が不必要になる場合はあるが、役職で処理順序を定義しないワークフロー処理では、依然としてアクティビティの処理順序をプロセス定義データから修正する必要があった。
【0015】
したがって、定型業務および非定型業務のいずれのワークフロー処理においても、一つのアクティビティにおける処理内容を変更する場合、或いは、アクティビティの処理順序を変更する場合には、プロセス定義データを修正し或いはプロセス定義データを新たに作成する。このように、従来のワークフロー処理では、プロセスに関する変更はプロセス定義データの再定義を伴うため非能率的であり、容易に行うことができなかった(第1の問題点)。
【0016】
また、通常、新たにワークフロー処理を開始するときには、プロセス定義データを新規に作成する。このとき、ワークフロー処理を適用する業務の種類が多岐に渡る場合には、必然的にプロセス定義データも様々な内容を有することとなる。ワークフローエンジンは、それらのプロセス定義データを解釈してかつ実行できなければならないから、多種のワークフロー処理を実行するための多くの基本的な機能を予め具備している必要がある。したがって、ワークフローエンジンの構成が複雑となり、ワークフローエンジンとして機能するワークフローエンジンコードの占有メモリが必然的に大きくなる(第2の問題点)。
【0017】
そのため、少なくとも第1の問題点を解決でき、好ましくは第2の問題点も解決できるワークフロー管理システムが望まれていた。
【0018】
【課題を解決するための手段】
したがって、この出願に係る発明のワークフロー管理システムは、複数の計算機を有するネットワークシステムで、一連かつ複数の工程からなるワークフロー処理を、各工程における処理内容およびそれら工程の順序に関するプロセス定義情報に基づいて、各工程ごとに行うワークフロー管理システムにおいて、
前述のプロセス定義情報から、各工程における処理内容に関するオブジェクト定義情報と、工程の順序に関するフロー定義情報とを識別する識別手段と、
前述のワークフロー処理に用いる基本的な機能を提供する複数のプログラムを格納してあるプログラム格納部と、
前述のオブジェクト定義情報を解釈してこの解釈に応じたプログラムをプログラム格納部から読み出し、かつ、この読み出されたプログラムに基づいて各工程における処理内容に関するコードであるオブジェクト定義コードを生成するオブジェクト定義コード生成手段と、
前述のフロー定義情報を解釈してこの解釈に応じたプログラムをプログラム格納部から読み出し、かつ、この読み出された各工程の順序に関するコードであるフロー定義コードを生成するフロー定義コード生成手段と、
前述のフロー定義コードおよび前述のオブジェクト定義コードを解釈することにより、ワークフロー処理を制御するワークフローエンジンとを具える。
【0019】
このワークフロー管理システムの構成によれば、ワークフロー処理のプロセスを定義をする際、起票者がワークフロー処理を開始させるためにプロセスを定義する。起票者が入力したプロセス定義情報は、識別手段によってフロー定義に関する部分およびオブジェクト定義に関する部分に分離される。この分離の後、前者の部分はフロー定義コード生成手段によってコード化されてフロー定義コードとして生成され、および、後者の部分はオブジェクト定義コード生成手段によってコード化されてオブジェクト定義コードとして生成される。よって、ワークフロー処理を行うとき、プロセス(各アクティビティにおける処理内容およびアクティビティの順序)を変更する場合であっても、プロセス定義データそのものを修正する必要がない。言い換えれば、各アクティビティにおける処理内容のみを変更したい場合にはオブジェクト定義コードのみを修正すれば良く、アクティビティの順序(アクティビティを行う処理者の変更)を変更したい場合にはフロー定義コードのみを修正すればよい。
【0020】
また、この発明の実施に当たり、より好適には、前述のオブジェクト定義情報および前述のフロー定義情報を解釈してこの解釈に応じたプログラムをプログラム格納部から読み出すことにより、この読み出されたプログラムに基づいてワークフローエンジンコードを生成するワークフローエンジンコード生成手段を更に具え、および、このワークフローエンジンコードによって前述のワークフローエンジンコードを機能させるのが良い。
【0021】
それにより、フロー定義情報およびオブジェクト定義情報に定義された機能を実現するための必要最低限の構成のみを有するワークフローエンジンコードを生成できる。よって、ワークフローエンジンコードの占有メモリを小さくできる。なお、ワークフローエンジンコードとは、CPUで実行されることにより仮想的にCPUにワークフローエンジンを存在させかつ機能させるプログラムコードを意味する。
【0022】
また、この発明の実施に当たり、好適には、前述のオブジェクト定義コードおよび前述のフロー定義コードを高水準言語のコードの状態で保存する定義コード保存手段を更に具えるのが良い。それにより、フロー定義或いはオブジェクト定義についての修正をするとき、修正する者は、各定義コードを理解しながらコードを追加したり削除したり或いは修正したりすることができる。
【0023】
また、この発明の実施に当たり、好適には、前述のワークフローエンジンは上位階層から複数の下位階層に機能を継承する階層構造を有し、かつ、個々の下位階層のワークフローエンジンは相互にアクセスする通信機能を有するのがよい。それにより、下位階層のワークフローエンジンをネットワークシステム内のホスト計算機に分散できる。このように、ワークフローエンジンに階層構造を与え、個々の下位階層のワークフローエンジンに通信機能を設けると、下位下層のワークフローエンジンは、ネットワークシステム内の任意のホスト計算機に分散して存在できる。よって、負荷分散によるネットワークシステムの効率および安定性が実現できる。
【0024】
また、上述のように下位階層のワークフローエンジンを分散させてなるワークフロー管理システムでは、前述のフロー定義コードに一般的な宛先名を予め定義する場合、一般的宛先名から具体的宛先名を生成する宛名変換手段を更に具えていて、この宛名変換手段が、ワークフローエンジンと相互にアクセスする通信機能を有するのが望ましい。
【0025】
従来、宛名変換を行うには、宛名変換手段はワークフローエンジンの存在するホスト計算機と同一のホスト計算機に設ける必要があった。しかしながら、宛名変換手段に通信機能を設けたため、上述のように下位階層のワークフローエンジンを分散させた場合であっても、宛名変換手段は下位階層のワークフローエンジンと相互にアクセスできる。よって、宛名変換手段を下位階層のワークフローエンジンと別のホスト計算機に設けることができる。
【0026】
また、この出願に係る発明のコードジェネレータは、複数の計算機を有するネットワークシステムで、一連かつ複数の工程からなるワークフロー処理を行う際、各工程における処理内容およびそれら工程の順序に関するプロセス定義情報から、ワークフローエンジンの解釈できるコードを生成するコードジェネレータであって、
前述のプロセス定義情報から、各工程における処理内容に関するオブジェクト定義情報と、工程の順序に関するフロー定義情報とを識別する識別手段と、
前述のオブジェクト定義情報からワークフローエンジンの解釈できるオブジェクト定義コードを生成するオブジェクト定義コード生成手段と、
前述のフロー定義情報からワークフローエンジンの解釈できるフロー定義コードを生成するフロー定義コード生成手段とを具える。
【0027】
このコードジェネレータの構成によれば、識別手段が、プロセス定義情報をオブジェクト定義情報およびフロー定義情報に分離させたのち、オブジェクト定義情報からオブジェクト定義コードを生成しかつフロー定義情報からフロー定義コードを生成する。そのため、各工程における処理内容のみを変更したい場合にはオブジェクト定義コードを修正し、また、工程の処理順序のみを変更したい場合にはフロー定義コードを修正すればよい。よって、プロセスを能率的にかつ容易に変更することができる。なお、オブジェクト定義コードおよびフロー定義コードは、例えば、高水準言語としてのJava言語或いはC++のソースプログラムコードすなわち、オブジェクト定義ソースプログラムコードおよびフロー定義ソースプログラムコードとして生成される。このとき、これらオブジェクト定義コードおよびフロー定義コードは、コンパイルされると、ワークフローエンジンが解釈できる実行型プログラムコードとなる。
【0028】
また、この出願に係るワークフロー処理のプロセスの変更方法の発明では、一連かつ複数の工程からなるワークフロー処理を行う前に、各工程の処理内容および工程の処理順序に関するプロセス定義情報から、各工程の処理内容に関するオブジェクト定義情報と、工程の処理順序に関するフロー定義情報とを識別し、オブジェクト定義情報からワークフローエンジンの解釈できるオブジェクト定義コードを生成し、かつ、フロー定義情報からワークフローエンジンの解釈できるフロー定義コードを生成するワークフロー処理について、当該ワークフロー処理のプロセスを変更するに当たり、各工程の処理内容のみを変更する場合にはオブジェクト定義コードのみを修正し、工程の処理順序のみを変更する場合にはフロー定義コードのみを修正する。
【0029】
このプロセスの変更方法によれば、各工程における処理内容のみを変更したい場合若しくは工程の処理順序のみを変更したい場合のいずれにも、互いに独立に存在するオブジェクト定義コード或いはフロー定義コードの一方を修正することにより対応できる。よって、プロセスを能率的にかつ容易に変更できる。
【0030】
【発明の実施の形態】
以下、図を参照して、この発明のワークフロー管理システムの実施の形態につき説明する。なお、この説明に用いる各ブロック図は、これら発明を理解できる程度に各構成成分をブロックで表して概略的な機能上の相互関係を示しているに過ぎない。また、各図において同様な構成成分については、同一の番号を付して示し、その重複する説明を省略することがある。また、各図で角張った長方形は機能単位を示し、角の丸い長方形はデータを示す。
【0031】
(第1の実施の形態)
ワークフロー管理システムでは、ワークフロー処理のプロセスを定義したのち当該ワークフロー処理を実行する必要がある。そのため、第1の実施の形態では、ワークフロー管理システムのプロセスを定義する形態につき説明し、次にワークフロー管理システムのワークフロー処理を実行する形態につき説明し、続いてワークフロー処理のプロセスを変更する方法につき説明する。
【0032】
図1は、第1の実施の形態のワークフロー管理システムについて、主要な機能単位の相互関係を概略的に示すブロック図である。ただし、図1中の各機能単位は、ハードウェア資源としての中央処理装置がその機能単位に対応するプログラムを実行することにより、仮想的に中央処理装置に存在する。以下では、中央処理装置に仮想的に実現される機能単位を角張った長方形、記憶装置のデータ領域に形成されるデータ情報を丸みを帯びた長方形で示してある。また、図2は、図1の各機能単位を1台のホスト計算機で動作させた場合を例として、各機能単位によるハードウェア資源の利用形態を概略的に示す図である。
【0033】
以下、図1および図2を参照して、実施の形態のワークフロー管理システムのプロセスを定義する形態につき説明する。ただし、実施の形態のワークフロー管理システムでは特にワークフローエンジンコード生成手段が設けてある。
【0034】
周知のごとく、ワークフロー管理システムは、複数のホスト計算機を有するネットワークシステムで、一連かつ複数のアクティビティからなるワークフロー処理を各アクティビティ毎に行うことにより、ワークフロー処理を実行する。
【0035】
図1に示す第1の実施の形態のワークフロー管理システム11は、識別手段F13と、オブジェクト定義コード生成手段F15と、フロー定義コード生成手段F17と、ワークフローエンジンコード生成手段F19と、プログラム格納部21とを有する。なお、ここではこれら各機能単位F13、F15、F17およびF19は、図2のホスト計算機h1の中央処理装置(CPU)c1で仮想的な機能手段として動作するように構成されている。
【0036】
図2に示すホスト計算機h1は、ハードディスクや光ディスク等の記憶装置m1と、CPUc1と、マンマシンインターフェース用の入力装置i1とを有する。CPUc1には、これら記憶装置m1、入力装置i1、上述の各機能単位F13、F15、F17およびF19その他の動作のタイミングや始動或いは停止を含む所要の制御を行うための制御部を図示せずも含んでいる。なお、ホスト計算機h1の記憶装置m1には、識別手段F13の機能を実現させる識別プログラムD13と、オブジェクト定義コード生成手段F15の機能を実現させるオブジェクト定義コード生成プログラムD15と、フロー定義コード生成手段F17の機能を実現させるフロー定義コード生成プログラムD17と、ワークフローエンジンコード生成手段F19の機能を実現させるワークフローエンジンコード生成プログラムD19とが格納されている。
【0037】
先ず、ワークフロー処理のプロセスを定義するに当たり、起票者24は、ホスト計算機h1の入力装置i1を操作して記憶装置m1にプロセス定義情報D23を格納する。このとき、起票者24は、ホスト計算機h1の入力装置i1から例えばキーボードからのスクリプト入力或いはポインタデバイスからのGUI操作によって、プロセス定義情報D23を入力する。これにより、プロセス定義情報D23がホスト計算機h1の記憶装置m1に格納される。ただし、プロセス定義情報D23は、各アクティビティの処理内容に関するデータすなわちオブジェクト定義情報D23aと、アクティビティの順序に関するデータすなわちフロー定義情報D23bとを含む。
【0038】
プロセス定義情報D23が入力されると、識別手段F13は、記憶装置m1に格納されたプロセス定義情報D23を読み出してきて、このプロセス定義情報D23からオブジェクト定義情報D23aおよびフロー定義情報D23bを互いに識別する。しかる後、識別されたオブジェクト定義情報D23aおよびフロー定義情報D23bを記憶装置m1に格納する。なお、識別手段F13は、記憶装置m1に格納されている識別プログラムD13をCPUc1が読み出しかつ実行することにより、仮想的な機能単位としてCPUc1で動作する。
【0039】
プログラム格納部21は、ワークフロー処理に用いる基本的な機能を提供する複数の基本機能提供プログラムD22を格納している。なお、プログラム格納部21は、例えばホスト計算機h1の記憶装置m1内のデータ領域に形成される。
【0040】
例えば、この基本機能提供プログラムD22は、ワークフロー処理に用いる基本的な機能を各機能毎に区分された複数のプログラムからなる。このように、基本的な機能が各機能毎に区分されていると、不必要な機能を読み出すことなく必要な機能だけを読み出すことができる。したがって、基本機能提供プログラムD22から生成されるオブジェクト定義コードD25a、フロー定義コードD25bおよびワークフローエンジンコードD27の占有メモリを小さくできる。
【0041】
オブジェクト定義コード生成手段F15は、オブジェクト定義情報D23aを解釈してこの解釈に応じた基本機能提供プログラムD22をプログラム格納部21から読み出すことにより、読み出された基本機能提供プログラムD22に基づいてオブジェクト定義コードD25aを生成する。このとき、具体的にはオブジェクト定義コード生成手段F15はホスト計算機h1内で次のように機能する。
【0042】
すなわち、ホスト計算機h1のCPUc1が記憶装置m1に格納されているオブジェクト定義コード生成プログラムD15を読み出してかつ実行する。それにより、オブジェクト定義コード生成手段F15が起動する。オブジェクト定義コード生成手段F15は、記憶装置m1からオブジェクト定義情報D23aを読み出すと共に、オブジェクト定義情報D23aに基づいてオブジェクト定義コードD25aの生成に必要な基本機能提供プログラムD22かどうかを判断して当該基本機能提供プログラムD22を読み出す。しかるのち、オブジェクト定義コード生成手段F15は、読み出された基本機能提供プログラムD22およびオブジェクト定義情報D23aを例えば組み合わせてオブジェクト定義コードD25aを生成する。例えば、このときオブジェクト定義コード生成手段F15は、複数の基本機能提供プログラムD22を読み出してオブジェクト定義コードD25aを生成しても良い。なお、生成されたオブジェクト定義コードD25aは、少なくとも各アクティビティにおける共通の処理内容を定義した基本ソースプログラムを含むソースプログラムとして記憶装置m1に格納される。
【0043】
フロー定義コード生成手段F17は、フロー定義情報D23bを解釈してこの解釈に応じた基本機能提供プログラムD22をプログラム格納手段21から読み出すことにより、読み出された基本機能提供プログラムD22に基づいてフロー定義コードD25bを生成する。このとき、具体的にはフロー定義コード生成手段F17はホスト計算機h1内で次のように機能する。
【0044】
すなわち、ホスト計算機h1のCPUc1が記憶装置m1に格納されているフロー定義コード生成プログラムD17を読み出してかつ実行する。それにより、フロー定義コード生成手段F17が起動する。フロー定義コード生成手段F17は、記憶装置m1からフロー定義情報D23bを読み出すと共に、フロー定義情報D23bに基づいてフロー定義コードD25bの生成に必要な基本機能提供プログラムD22かどうかを判断して当該基本機能提供プログラムD22を読み出す。しかるのち、フロー定義コード生成手段F17は、読み出された基本機能提供プログラムD22およびフロー定義情報D23bを例えば組み合わせてフロー定義コードD25bを生成する。例えば、このときフロー定義コード生成手段F17は、複数の基本機能提供プログラムD22を読み出してフロー定義コードD25bを生成しても良い。なお、生成されたフロー定義コードD25bは、少なくともアクティビティの順序を定義したソースプログラムを含むソースプログラムとして記憶装置m1に格納される。
【0045】
ワークフローエンジンコード生成手段F19は、識別されたオブジェクト定義情報D23aおよびフロー定義情報D23bを解釈してこの解釈に応じた基本機能提供プログラムD22をプログラム格納部21から読み出すことにより、読み出された基本機能提供プログラムD22に基づいてワークフローエンジンコードD27を生成する。このとき、具体的にはワークフローエンジンコード生成手段F19はホスト計算機h1内で次のように機能する。
【0046】
すなわち、ホスト計算機h1のCPUc1が記憶装置m1に格納されているワークフローエンジンコード生成プログラムD19を読み出してかつ実行することにより、ワークフローエンジンコード生成手段F19が起動する。起動したワークフローエンジンコード生成手段F19は、記憶装置m1からオブジェクト定義情報D23aおよびフロー定義情報D23bを読み出すと共に、これらの定義情報D23aおよびD23bに基づいてワークフローエンジンコードD27の生成に必要な基本機能提供プログラムD22かどうかを判断して当該基本機能提供プログラムD22を読み出す。しかるのち、ワークフローエンジンコード生成手段F19は、読み出された基本機能提供プログラムD22からワークフローエンジンコードD27を生成する。例えば、このときワークフローエンジンコード生成手段F19は、複数の基本機能提供プログラムD22を組み合わせてワークフローエンジンコードD27を生成する。なお、生成されたワークフローエンジンコードD27は、オブジェクト定義コードD15およびフロー定義コードD17を解釈(ただし、Javaプログラミングにおける「参照」の意味を含む。)してかつこの解釈に基づいてワークフロー処理を制御するためのソースプログラムとして記憶装置m1に格納される。
【0047】
また、実際にワークフロー処理を行う際には、例えばホスト計算機h1のCPUc1が記憶装置m1に格納されているワークフローエンジンコードD27を読み出してかつ実行することにより、一つの機能単位としてのワークフローエンジンが起動してワークフロー処理の制御動作を行う。
【0048】
なお、識別手段F13、オブジェクト定義コード生成手段F15およびフロー定義コード生成手段F17は、コードジェネレータF28という一つの機能単位として認識できる。コードジェネレータF28は、複数のホスト計算機を有するネットワークシステムで、一連かつ複数のアクティビティからなるワークフロー処理を行う際、各アクティビティにおける処理内容およびそれらアクティビティの順序に関するプロセス定義情報から、ワークフローエンジンの解釈できるプロセスに関するコードを生成する。特に、このコードジェネレータF28は、プロセス定義情報D23から、オブジェクト定義コードD25aおよびフロー定義コードD25bを区別してそれぞれ生成する。そのため、一般的なワークフロー管理システムについて、そのワークフローエンジンがオブジェクト定義コードD25aおよびフロー定義コードD25bを解釈できる構成であれば、このコードジェネレータF28の部分のみを適用できる。
【0049】
ここで、具体的なワークフロー処理を実行する場合を例として、以上説明した各機能単位につき更に詳細に説明する。
【0050】
なお、ここではワークフロー管理システムを、オブジェクト指向プログラミング(OOP)を用いて構築する。周知の如く、Java言語やC++言語等は、OOPに適している。OOPを用いると、上述したワークフローエンジンについて、基本的な機能のみを有する上位階層(スーパークラス)から具体的かつ個別な機能を有する下位階層(サブクラス)までを含む、階層構造を有するワークフローエンジンとして定義できる。このとき、オブジェクト定義コードおよびフロー定義コードは、ワークフローエンジンに参照されるオブジェクトとなる。
【0051】
図3は、図1のワークフロー管理システムの具体的な機能構成を概略的に示した図であって、図1に示すワークフローエンジンに代えてクラス構造すなわち階層構造を有するワークフローエンジンを用いる場合のワークフロー管理システムについて、その主要な機能単位の相互関係を概略的に示すブロック図である。なお、図3の各機能単位は、ハードウェア資源としてのCPUがその機能単位に対応するプログラムを実行することにより、仮想的にCPUに存在する機能単位である。ただし、便宜上、図3ではワークフローエンジンサブクラスF27aおよびF27bは、それぞれホスト計算機h2およびh3の各CPUで動作する仮想的な機能単位として示してある。
【0052】
図4は、図3のワークフロー管理システムの各機能単位を動作させるネットワークシステムの一例を示す図である。図4には3つのホスト計算機h1、h2およびh3が接続されたネットワークシステムが示されている。図4に示すように、各ホスト計算機h1、h2およびh3は、CPUc1、c2およびc3と、ハードディスクや光ディスク等の記憶装置m1、m2およびm3と、マンマシンインターフェース用の入力装置i1、i2およびi3とを具える。また、図示せずも、各ホスト計算機h1、h2およびh3は一般に表示装置等を有する。既に説明したようにCPUc1、c2およびc3は、各機能単位を駆動するための制御部を有している。また、CPUc1、c2およびc3には各ハードウェア資源を駆動するドライバソフトや一般的なOSソフト等が動作していても良い。なお、図4は、ワークフロー管理システムの各構成が存在できる計算機の一例を示しているに過ぎない。
【0053】
ここで具体的なワークフロー処理の例として、2つのアクティビティからなるワークフロー処理を実施する。すなわち、図3および図4に示すように、このワークフロー処理では、先ず起票者24がホスト計算機h1を操作してワークフロー処理のプロセスを定義し、次に処理者31aがホスト計算機h2を操作してアクティビティを実行し、その後、処理者31bがホスト計算機h3を操作してアクティビティを実行する。
【0054】
図3および図4に示すワークフローエンジンは、上位階層から下位階層までの複数の階層構造を有する。すなわち、このワークフローエンジンを機能させるコードは、上位階層のワークフローエンジンコード(ワークフローエンジンスーパークラスコード)D27s、下位階層のワークフローエンジンコード(ワークフローエンジンサブクラスコード)D27aおよびD27bという2層の階層構造を有している。
【0055】
ただし、ここではワークフローエンジンコード生成手段F19は、ソースプログラムコードであるワークフローエンジンサブクラスコードD27aおよびD27bを生成する。なお、このワークフローエンジンサブクラスコードD27aは、ワークフローエンジンサブクラスF27aを機能させ、ワークフローエンジンサブクラスコードD27bは、ワークフローエンジンサブクラスF27bを機能させる。
【0056】
このように階層構造を有するワークフローエンジンを用いる場合、下位階層のワークフローエンジンコードのみを生成するのが好ましい。
【0057】
周知の如く、ワークフローエンジンサブクラスF27aおよびF27bは、ワークフローエンジンスーパークラス(図中では機能単位ではなくコードとして示してある。)D27sから機能的な継承(インヘリタンス)を行うことができる。したがって、ワークフローエンジンスーパークラスコードD27sで基本機能を定義しておけば、ワークフローエンジンサブクラスF27aおよびF27bでは、当該基本機能を継承できる。そのため、ワークフローエンジンサブクラスコードD27aおよびD27bでは、当該基本機能と異なる機能のみを定義すればよい。
【0058】
このように、ワークフローエンジンコード生成手段F19は、OOPに基づいて、基本機能を定義した上位階層のワークフローエンジンコードD27sから機能的な継承をする下位階層のワークフローエンジンコードD27aおよびD27bであって、かつ、具体的な固有の機能を定義した下位階層のワークフローエンジンコードD27aおよびD27bを生成するのが好ましい。それにより、ワークフローエンジンとして機能させる全体のソースプログラムコードの記述を簡略化できるため、ワークフローエンジンコードを容易に生成できる。それと同時に、ワークフローエンジンコードの記憶装置内の占有メモリを低減できる。なお、図3に示すように、ワークフローエンジンスーパークラスコードD27s等を含むクラスライブラリD52は、例えばプログラム格納部21に設けておく。
【0059】
また、スーパクラスからサブクラスに渡る階層構造を有するワークフローエンジンコードについて、ワークフローエンジンサブクラスコードD27aおよびD27bに通信機能を設定して互いにアクセスできるようにしておけば、ワークフローエンジンサブクラスD27aおよびD27bは、それぞれネットワークシステム内の任意のホスト計算機に分散して存在できる。よって、負荷分散によるネットワークシステムの効率および安定性の向上が実現できる。
【0060】
なお、ここでは、図4に示すように、ホスト計算機h1にて生成されたワークフローエンジンサブクラスコードD27aおよびD27bは、それぞれホスト計算機h2およびh3に分散している。このように、図4のワークフローエンジンサブクラスコードD27aはホスト計算機h2で動作して図3に示すワークフローエンジンサブクラスF27aとして機能し、図4のワークフローエンジンサブクラスコードD27bはホスト計算機h3で動作して図3に示すワークフローエンジンサブクラスF27bとして機能する。図3および図4に示すように、処理者31aは、ホスト計算機h2を操作することによりアクティビティを行い。その後、処理者31bは、ホスト計算機h3を操作することにより別のアクティビティを行う。このように、ワークフローエンジンコードを生成するとき、各処理者のホスト計算機毎に、互いに異なるワークフローエンジンサブクラスを定義するのが良い。それにより、容易に処理者の特定ができるため、ワークフロー処理のプロセスを定義することが容易となる。
【0061】
ここでは、上述のごとく処理者毎に下位階層のワークフローエンジンコードを生成するため、次のようなプロセス定義情報を生成する。すなわち、図3では、前述したプロセス定義情報として例えばプロセス定義スクリプトD43を用いる。このとき、起票者24は例えばホスト計算機h1の入力装置i1を操作してプロセス定義スクリプトD43を入力する。このプロセス定義スクリプトD43は、オブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bを含む。
【0062】
このとき、ホスト計算機h1のCPUc1にOSソフトやエディタソフトを動作させておくと、記憶装置m1にはデータとしてのプロセス定義スクリプトD43が格納される。なお、このプロセス定義スクリプトD43は、ワークフロー処理のプロセス定義に関する情報を簡単な内部コードで記述したデータである。ただし、ここでいう内部コードとはスクリプト識別手段F45が認識できるコードである。
【0063】
図5は、具体的なワークフロー処理に対するプロセス定義スクリプトの一例である。図5に示すプロセス定義スクリプトは、オブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bを含む。
【0064】
また、これらのスクリプトD43aおよびD43bを相互に識別するため、各スクリプトD43aおよびD43bには異なる識別子が付加されている。図5に示す例では、識別子engines および識別子flowがフロー定義スクリプトD43bを示し、識別子doがオブジェクト定義スクリプトD43aを示す。
【0065】
識別子engines はワークフローエンジンサブクラス名を指定する。ここでは、各処理者31aおよび31b毎に異なるワークフローエンジンサブクラスコードが生成されているため、ワークフローエンジンサブクラス名によって各アクティビティを実行する処理者31aおよび31bを定義している。例えば、図5に示すように、処理者31aに対してはワークフローエンジンサブクラスF27a(loanTeller)を定義し、処理者31bに対してはワークフローエンジンサブクラスF27b(loanDecision)を定義している。
【0066】
識別子flowは、ワークフローエンジンサブクラス名を順次に指定することにより、アクティビティの処理順序を定義する。すなわち図3では、ワークフローエンジンサブクラスF27a(loanTeller)およびF27b(loanDecision)の順に、アクティビティが実行される。
【0067】
識別子doは、各アクティビティにおける処理内容を定義する。すなわち図5に示すように、ワークフローエンジンサブクラスF27a(loanTeller)ではメソッドstart という処理内容が定義され、ワークフローエンジンサブクラスF27b(loanDecision)ではメソッドdecideLoanという処理内容が定義される。
【0068】
図3に示すように、このようなプロセス定義スクリプトD43は、ホスト計算機h1のCPUc1で動作するスクリプト識別手段F45に読み込まれる。このとき、スクリプト識別手段F45は、プロセス定義スクリプトD43に含まれる識別子に基づいて、プロセス定義スクリプトD43をオブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bに分離する。その後、スクリプト識別手段F45は、ホスト計算機h1に分離したオブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bを記憶装置m1に格納する。なお、スクリプト識別手段F45は、図4に示すホスト計算機h1の記憶装置m1に格納されているスクリプト識別プログラム(図示せず)をCPUc1が読み出してかつ実行することにより、機能する仮想的な機能単位である。
【0069】
なお、プログラム格納部21は、具体的に言うと、次のような基本機能提供プログラムD22を有する。すなわち、プログラム格納部21は、例えば、
▲1▼新規にワークフロー処理を開始させる機能を実現する基本機能提供プログラムD22と、
▲2▼実行中のワークフロー処理の進行状況を確認する機能を実現する基本機能提供プログラムD22と、
▲3▼ワークフロー処理を中止する機能を実現する基本機能提供プログラムD22と、
▲4▼ワークフロー処理における全てのアクティビティの終了を確認する機能を実現する基本機能提供プログラムD22と、
▲5▼中止または終了したワークフロー処理に関する情報を破棄する機能を実現する基本機能提供プログラムD22と、
▲6▼処理者毎に設けられたワークリストにワークアイテムを付加する機能を実現する基本機能提供プログラムD22と、
▲7▼ワークリストにおけるワークアイテムの削除によってアクティビティの終了を認識する機能を実現する基本機能提供プログラムD22と
を有する。
【0070】
なお、図4に示すように、ここでは階層構造を有するワークフローエンジンのクラスがホスト計算機h1、h2およびh3に分散して存在しているため、プログラム格納部21は、▲8▼ワークフローエンジンサブクラスが他のワークフローエンジンと相互に通信するための通信機能を実現する基本機能提供プログラムD22を有するのが好ましい。また、プログラム格納部21は、▲9▼人間による処理を必要としないアクティビティについて、起動アプリケーションによってアクティビティを自動処理する基本機能提供プログラムD22を有しても良い。また、図4に示すように、プログラム格納部21は、例えばホスト計算機h1の記憶装置m1のデータ領域として設けられる。
【0071】
また、Java言語によるOOPを行うには、プログラム格納部21が、ワークフローエンジンのスーパークラス等のワークフロー処理に利用できるクラスを定義したクラスライブラリ52を有するのが望ましい。図3では、クラスライブラリD52はワークフローエンジンスーパークラスコードD27s(DWorkflowEngine )およびその他のスーパークラスコードD27t(LoanApp2)を含む。
【0072】
ワークフローエンジンコード生成手段F19は、記憶装置m1のプログラム格納部21から上述のような▲1▼〜▲9▼の基本機能提供プログラムD22、記憶装置m1に蓄積されたオブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bを読み出したのち、読み出された▲1▼〜▲9▼の基本機能提供プログラムD22を組み合わせて、ワークフローエンジンサブクラスF27a(LoanTeller)およびF27b(LoanDecision)として機能するワークフローエンジンサブクラスコードD27a(LoanTeller)およびD27b(LoanDecision)を生成する。
【0073】
このとき、ワークフローエンジンコード生成手段F19は、ワークフロー処理に関するオブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bを解釈することにより、当該ワークフロー処理に必要な基本機能のみを有するワークフローエンジンサブクラスコードD27a(LoanTeller)およびD27b(LoanDecision)を生成する。すなわち、ワークフローエンジンコード生成手段F19は、オブジェクト定義スクリプトD43aおよびフロー定義スクリプトD43bで定義されたワークフロー処理に必要な基本機能のみを読み込みかつ不必要な機能を読み込まない。例えば、スクリプト識別手段F45から読み出されたオブジェクト定義スクリプトD43aおよびプログラム格納部21から読み出された▲1▼〜▲9▼の基本機能の幾つかを組み合わせて、ワークフローエンジンサブクラスコードD27a(LoanTeller)およびD27b(LoanDecision)が生成される。そのため、このワークフローエンジンサブクラスコードD27a(loanTeller)およびD27b(LoanDecision)は、必要最低限の構成のみを有し、従って占有メモリが小さくなる。具体的に言うと、例えば、従来のワークフローエンジンでは任意のステップ数のアクティビティが処理できなければならないが、実施の形態のワークフローエンジンは、2つのアクティビティが処理できればよいため、余分なクラスやメソッドの定義を省略したコードとなる。
【0074】
オブジェクト定義コード生成手段F15は、記憶装置m1のプログラム格納部21から上述のような基本機能提供プログラムD22と、記憶装置m1に蓄積されたオブジェクト定義スクリプトD43aとを読み出したのち、読み出された基本機能提供プログラムD22およびオブジェクト定義スクリプトD43aを組み合わせてオブジェクト定義コードD47aを生成する。
【0075】
フロー定義コード生成手段F17は、記憶装置m1のプログラム格納部21から上述のような基本機能提供プログラムD22と、記憶装置m1に蓄積されたフロー定義スクリプトD43bとを読み出したのち、読み出された基本機能提供プログラムD22およびフロー定義スクリプトD43bを組み合わせてフロー定義コードD47bを生成する。
【0076】
図6および図7は、オブジェクト定義コード生成手段F15およびフロー定義コード生成手段F17によってJava言語によるソースプログラムコードとして生成されたオブジェクト定義コードD47aおよびフロー定義コードD47bの一部を示した図である。
【0077】
図6に示すソースプログラムコードのうち1〜2行目のコードは、ワークフローエンジンのスーパークラスコードD27s(DWorkflowEngine )に対するサブクラスコードD27a(loanDecision)を定義する。3〜7行目のコードは、ワークフローエンジンサブクラスコードD27b(loanDecision)について例外処理を宣言している。8行目〜11行目のコードは、ワークフローエンジンサブクラスコードD27b(loanDecision)における処理内容を示すメソッドdecideloanを定義する。また、12〜24行目のコードは、ワークフローエンジンサブクラスコードD27b(loanDecision)を開始したとき最初に実行されるメソッドが定義される。
【0078】
図7に示すソースプログラムコードのうち1〜2行目のコードによって、ワークフロー処理に必要なその他のスーパークラスコードD27t(LoanApp2)のサブクラスLoanFlow2 が定義される。3〜7行目のコードは、その他のスーパークラスコードD27t(LoanFlow2 )の初期化および名前の定義を行う。8〜26行目のコードは、loanFlow2 に用いるワークフローエンジンサブクラスコードD27a(loanTeller)およびD27b(loanDecision)を登録する。27〜31行目のコードは、ワークフローエンジンサブクラスコードD27a(loanTeller)およびD27b(loanDecision)の名前のテーブルを作成する。32〜34行目のコードは、ワークフロー処理の名前のテーブルを作成する。35〜37行目のコードは、ワークフロー処理のタイムリミットテーブルを作成する。38〜40行目のコードは、ワークフロー処理の終了を判定するテーブルを作成する。
【0079】
また、実際にワークフロー処理を行うとき、図3に示すワークフローエンジンサブクラスF27a(loanTeller)およびF27b(LoanDecision)が駆動して、オブジェクト定義コードD47aおよびフロー定義コードD47bのクラスやメソッドの参照を行うことにより、ワークフロー処理を制御する。
【0080】
また、実際にワークフロー処理を行うとき、オブジェクト定義コードD47aおよびフロー定義コードD47bには、プロセスに関する定義が記述されていなければならない。これらの定義コードD47aおよびD47bは、一つのステップで生成しても良いし、或いは複数ステップに分けて生成しても良い。例えば、コードジェネレータF28では基本的な定義コードのみを生成し、基本的な定義コードに具体的な定義コードを追加することにより、定義コードを完成させても良い。言い換えれば、複数ステップに分けてオブジェクト定義コードD47aやフロー定義コードD47bを生成する場合、先ずオブジェクト定義基本コードとして各アクティビティに共通の処理内容を定義するコードを生成し、および、オブジェクト定義拡張コードとして個々のアクティビティに固有の処理内容を定義するコードをオブジェクト定義基本コードに追加することにより、オブジェクト定義コードを生成しても良い。具体的に言うと、図6のオブジェクト定義コードD47aは、8〜9行目のブロックにオブジェクト定義拡張コードとして、個々のアクティビティに固有のメソッドが追加されると、オブジェクト定義コードとして完成する。このように、オブジェクト定義コード生成手段F15がオブジェクト定義基本コードを生成したのち、オブジェクト定義基本コードにオブジェクト定義拡張コードを付加するのが好ましい。それにより、個々のオブジェクト定義コードが簡潔となる。
【0081】
なお、説明の都合上、仮想的な各機能単位である識別手段、ワークフローエンジンコード生成手段、オブジェクト定義コード生成手段、フロー定義コード生成手段を特定の同一ホスト計算機のCPUに存在させたが、これら各機能単位は任意のホスト計算機のCPUに存在できる。また、プログラム格納部21、オブジェクト定義コードD47a、フロー定義コードD47bも任意のホスト計算機の記憶装置に存在して良い。
【0082】
以上のような手順で、プロセス定義スクリプトでワークフロー処理のプロセスを定義することにより、ワークフローエンジンサブクラスコードD27a(LoanTeller)およびD27b(LoanDecision)と、オブジェクト定義コードD47aと、フロー定義コードD47bとが生成できる。ただし、ワークフロー処理の開始の際には、ホスト計算機h1で生成されたワークフローエンジンサブクラスコードD27a(LoanTeller)およびD27b(LoanDecision)を、それぞれホスト計算機h2およびホスト計算機h3に分散させる。
【0083】
従来のワークフロー管理システムと同様に、図3に示す各ワークフローエンジンサブクラスF27a(loanTeller)およびF27b(LoanDecision)と同一ホスト計算機には、各々ワークリストD53aおよびD53bと、ワークリストハンドラF55aおよびF55bとが設けられている。ワークリストD53aおよびD53bは、個々の処理者31aおよび31b毎に設けられる。
【0084】
各ホスト計算機h2およびh3では次のような処理が行われる。すなわち、先ず、各処理者31aは、ワークフローエンジンサブクラスF27a(loanTeller)によってワークリストD53aに示されたワークアイテムを参照する。それにより、処理者31aは処理すべきアクティビティを認識する。そして、処理者31aはクライアントアプリケーションD57等を用いてアクティビティを実行する。アクティビティに含まれる作業が終了すると、ワークリストハンドラF55aはワークリストD53aからワークアイテムを削除する。それにより、ワークフローエンジンサブクラスF27a(loanTeller)は、アクティビティの終了を検出する。その後、ワークフローエンジンF27a(loanTeller)は、アクティビティで処理されたデータを次のワークフローエンジンF27b(loanDecision)に送付する。
【0085】
そして、各処理者31bは、ワークフローエンジンサブクラスF27b(loanDecision)によってワークリストD53bに示されたワークアイテムを参照する。処理者31bは処理すべきアクティビティを認識する。そして、処理者31bはクライアントアプリケーションD57等を用いてアクティビティを実行する。アクティビティが終了すると、処理者31bはワークリストハンドラF55bを操作してワークリストD53bからワークアイテムを削除する。それにより、ワークフローエンジンサブクラスF27b(loanDecision)は、アクティビティの終了を検出する。同時に、ワークフローエンジンF27b(loanDecision)は、ワークフロー処理の全てのアクティビティの終了を検出して、例えば処理者31a等にワークフロー処理の終了および結果を通知する。
【0086】
続いて、上述のワークフロー管理システムを一適用例としてワークフロー処理のプロセスを変更する方法につき説明する。
【0087】
実施の形態のワークフロー管理システムのプロセスの変更は、オブジェクト定義コードD25a(D47a)或いはフロー定義コードD25b(D47b)を書き換えて行う。したがって、従来技術のワークフロー管理システムのようにプロセス定義データそのものを書き換える必要がない。すなわち、実施の形態のワークフロー管理システムによれば、各アクティビティの処理内容のみを変更したい場合にはオブジェクト定義コードD25aのみを修正し、アクティビティの順序のみを変更したい場合にはフロー定義コードD25bのみを修正すればよい。
【0088】
具体的に言うと、例えば図7のフロー定義コードに従うワークフロー処理において、処理者を変更したい場合には、フロー定義コードに記述されたワークフローエンジンサブクラス(loanDecision)を別のワークフローエンジンサブクラスに名称の変更をすればよい。また、例えば図6のオブジェクト定義コードに従うワークフロー処理において、ワークフローエンジンサブクラス(loanDecision)の処理内容を変更したい場合には、オブジェクト定義コードの処理内容を示すメソッドdecideLoanを修正すればよい。このように、オブジェクト定義コード或いはフロー定義コードの一方の修正が他方の修正に影響しないため、プロセスは容易に変更できる。
【0089】
オブジェクト定義コード或いはフロー定義コードを修正するには、前述のワークフロー管理システムが、オブジェクト定義コードおよび前述のフロー定義コードを高水準言語のコードの状態で保存する定義コード保存手段(図示していない。)を更に具えるるのが望ましい。
【0090】
図6および図7に示すオブジェクト定義コードおよびフロー定義コードは、ワークフロー処理を開始する前に生成される。これらの定義コードはこの実施の形態ではソースプログラムである。これらの定義コードはコンパイルされることにより、動作可能なオブジェクトプログラムとなる。例えば、Java言語ソースプログラムをコンパイルすると、ソースプログラムはプラットフォームに依存せずに動作するバイトコードに変換されて実行型プログラムとなる。コンパイルしたバイトコードデータそのものを書き換えるのは困難であるから、コンパイルする前の状態すなわち例えばJava言語のソースプログラムコードを保存しておく。それにより、各アクティビティにおける処理内容或いは処理順序を変更する際、Java言語のソースプログラムコードの一部を修正することにより、新たなオブジェクト定義コード或いはフロー定義コードが作成できる。新たな定義コードを、コンパイルしてバイトコードに変換したのち修正前のバイトコードデータと置換すれば、プロセスに関する定義が修正できる。
【0091】
(第2の実施の形態)
以下の第2の実施の形態では、第1の実施の形態のワークフロー管理システムに宛名変換手段を設けた形態につき説明する。ただし、ここでは特に階層構造を有するワークフローエンジンを設けている形態につき説明する。第1の実施の形態にて説明したワークフロー管理システムでは、アクティビティの処理順序はフロー定義コードに静的に定義される。すなわち、アクティビティの処理者を示すコードには具体的な宛先が示されており、人事異動等による宛先の変更すなわちアクティビティの順序の変更があった場合、フロー定義コードを書き換える必要がある。
【0092】
ところで、文献I等に開示されている宛名変換手段を用いると、動的に処理順序を定義できるため、プロセス定義データを修正する必要が無くなることが知られている。しかしながら、文献Iに開示されるワークフロー管理システムの場合、ワークフローエンジンはサーバで、また、宛名変換手段はワークフローエンジンと同一のサーバで動作する。そのため、宛名変換手段を含むサーバの負担が大きくなる。また、実際にサーバがダウンしたときには、ワークフロー処理が中断されてしまうという問題があった。
【0093】
図8は、第2の実施の形態のワークフロー管理システムを動作させるワークフロー管理システムの各機能単位を模式的かつ概略的に示すブロック図である。ただし、図8では図4と同一の機能単位については示しておらず、図4と異なる点のみすなわちワークフローエンジンサブクラスF27a、F27bおよび宛名変換手段F67が示される。
【0094】
図8に示すように、第2の実施の形態のワークフロー管理システムは、宛名変換手段F63を有する。ここで、ホスト計算機h4のCPUc4が記憶装置m4の宛名変換プログラムD63を読み出しかつ実行することにより、宛名変換手段F63は仮想的な機能手段としてCPUc4で動作する。
【0095】
図8に示すワークフローエンジンは、OOPによってプログラミングされており、スーパークラスから複数のサブクラスF27aおよびF27bに機能を継承するクラス構造を有する。そして、個々のワークフローエンジンサブクラスF27aおよびF27bは、各処理者毎に分散して存在するため、互いにアクセスするための各通信機能F67aおよびF67bを有する。
【0096】
そして、この第2の実施の形態の宛名変換手段F63は、特に、通信機能F67tを備える点を特徴とする。よって、宛名変換手段F63と、複数のワークフローエンジンサブクラスF27aおよびF27bとは通信によって互いにアクセスできる。
【0097】
宛名変換手段F63は、周知のごとく、課長や部長など組織内の役職等を示す一般的宛先名を、処理者の名前等の具体的宛先名に変換する機能モジュールである。また、この宛名変換手段F63は、従来構成と同様に組織/役割データD65を参照する。例えば備品購入の決裁のワークフロー処理を行う場合、決裁ルートは役職で決定されることが多いから、予め宛先名を役職で指定する。そのため、決裁ルートに沿う役職にある処理者が人事異動等によって他の処理者に変わっても動的に宛先が判断されるため、決裁ルートすなわち宛先名を変更する必要が無い。
【0098】
ここで図8を参照して、宛名変換手段63によって一般的宛先名から具体的宛先名を判断する流れについて説明する。
【0099】
ワークフローエンジンサブクラスF27aは、フロー定義コード中に定義されたアクティビティの処理者が一般的な宛先名で記述されている場合、先ず、そのワークフロー処理を開始させたワークフローエンジンサブクラス名すなわち処理者を調べる。次に、ワークフローエンジンサブクラスF27aは、各通信機能F67aおよびF67tを介して宛名変換手段F63とネットワーク通信することにより、一般的宛先名および開始者名を宛名変換手段F63に送信する。
【0100】
このとき、宛名変換手段63は、実行中のワークフロー処理の開始者名から開始者の組織内の役割(所属部署や役職等)を認識すると共に、この開始者の役割および一般的宛先名から次のアクティビティを担当する処理者名を調べる。そして、次の処理者名からワークフローエンジンサブクラス名を得て、次のアクティビティを処理すべきワークフローエンジンサブクラス名を、ワークフローエンジンサブクラスF27aに送信する。そして、この後、次のアクティビティを処理べきワークフローエンジンサブクラスF27bが起動する。
【0101】
以上のように、第2の実施の形態では、図8に示すようにワークフローエンジンが階層構造をなす複数のワークフローエンジンサブクラスF27aおよびF27bとして異なるホスト計算機h3およびh4に分散しており、および、宛名変換手段F63が通信機能を有する。すなわち、ホスト計算機h2ではワークフローエンジンサブクラスF27aが動作し、ホスト計算機h3ではワークフローエンジンサブクラスF27bが動作し、および、ホスト計算機h4では宛名変換手段F63が動作する。このように、宛名変換手段F63と、ワークフローエンジンサブクラスF27aおよびF27bとが異なるホスト計算機に存在しても、宛名変換手段F63が通信機能F67tを有するため、宛名変換手段F63はワークフローエンジンサブクラスF27aおよびF27bと互いに通信できる。したがって、宛名変換手段F63を任意のホスト計算機に移動させることができる。すなわち、従来のように宛名変換手段F63をワークフローエンジンと同一ホストに設ける必要がない。
【0102】
そのため、宛名変換手段を含むホスト計算機の負担を小さくしシステムダウンの可能性を低減させることができる。また、宛名変換手段を含むホスト計算機がシステムダウンしたときでも、別のホスト計算機に宛名変換手段を移動することによって、ワークフロー処理を続行できる。
【0103】
【発明の効果】
上述した説明から明らかなように、この発明のワークフロー管理システムによれば、ワークフロー処理のプロセスを定義をする際、起票者が入力したプロセス定義情報は、識別手段によってフロー定義に関する部分およびオブジェクト定義に関する部分に分離されたのち、フロー定義コード生成手段およびオブジェクト定義コード生成手段によってコード化される。そのため、ワークフロー処理を行うとき、各アクティビティにおける処理内容およびアクティビティの順序を変更する場合であっても、プロセス定義データそのものを修正する必要がない。言い換えれば、各アクティビティにおける処理内容のみを変更したい場合にはオブジェクト定義コードのみを修正すれば良く、アクティビティの順序(アクティビティを行う処理者の変更)を変更したい場合にはフロー定義コードのみを修正すればよい。したがって、プロセスを能率的にかつ容易に変更することができる。
さらに、この発明のワークフロー管理システムによれば、プログラム格納部がワークフロー処理に用いる基本的な機能を提供する複数のプログラムを各機能毎に区分して格納してある。そのため、不必要な機能を読み出すことなく、必要な機能だけを読み出すことができる。したがって、基本機能提供プログラムから生成されるオブジェクト定義コード、フロー定義コードおよびワークフローエンジンコードの占有メモリを小さくできる。
さらに、この発明のワークフロー管理システムによれば、例えば、複数ステップに分けてオブジェクト定義コードやフロー定義コードを生成する場合に、起票者は、先ず、各アクティビティに共通の処理内容を入力し、次に、個々のアクティビティに固有の処理内容を入力すればよい。これにより、ワークフロー管理システムは、オブジェクト定義基本コードとして各アクティビティに共通の処理内容を定義するコードを生成し、オブジェクト定義拡張コードとして個々のアクティビティに固有の処理内容を定義するコードを生成する。そして、ワークフロー管理システムは、生成したオブジェクト定義拡張コードをオブジェクト定義基本コードに追加する。これにより、ワークフロー管理システムは、オブジェクト定義コードを生成することができる。したがって、この発明のワークフロー管理システムによれば、複数ステップに分けてオブジェクト定義コードやフロー定義コードを生成する場合に、起票者が各アクティビティに共通の処理内容と個々のアクティビティに固有の処理内容とを入力するだけで、オブジェクト定義コードを生成することができる。
【0104】
また、この発明のコードジェネレータによれば、識別手段が、プロセス定義情報をオブジェクト定義情報およびフロー定義情報に分離させたのち、オブジェクト定義情報からオブジェクト定義コードを生成しかつフロー定義情報からフロー定義コードを生成する。そのため、各工程における処理内容のみを変更したい場合にはオブジェクト定義コードを修正し、工程の処理順序のみを変更したい場合にはフロー定義コードを修正すればよい。よって、プロセスを能率的にかつ容易に変更することができる。
【0105】
また、このワークフロー処理のプロセスの変更方法の発明によれば、プロセス定義情報から、オブジェクト定義コードおよびフロー定義コードを生成するワークフロー処理のプロセスを変更するのに、各工程の処理内容のみを変更する場合にはオブジェクト定義コードのみを修正し、工程の処理順序のみを変更する場合にはフロー定義コードのみを修正する。したがって、このプロセスの変更方法によれば、各工程における処理内容のみを変更したい場合若しくは工程の処理順序のみを変更したい場合のいずれにも、互いに独立に存在するオブジェクト定義コード或いはフロー定義コードの一方を修正することにより対応できる。よって、プロセスを能率的にかつ容易に変更できる。
【図面の簡単な説明】
【図1】第1の実施の形態のワークフロー管理システムの機能単位の相互関係を概略的に示すブロック図である。
【図2】図1の各機能単位を1台のホスト計算機で動作させた場合を例として、各機能単位によるハードウェア資源の利用形態を概略的に示す図である。
【図3】図1のワークフロー管理システムの具体的な機能構成を概略的に示した図である。
【図4】図3のワークフロー管理システムの各機能単位を動作させるネットワークシステムの一例を示す図である。
【図5】具体的なワークフロー処理に対するプロセス定義スクリプトの一例である。
【図6】ソースプログラムコードとして生成されたオブジェクト定義コードの一部を示した図である。
【図7】ソースプログラムコードとして生成されたフロー定義コードの一部を示した図である。
【図8】第2の実施の形態のワークフロー管理システムを動作させるネットワークシステムの各機能単位を模式的かつ概略的に示すブロック図である。
【図9】従来のワークフロー管理システムの構成を示すブロック図である。
【符号の説明】
11、41:ワークフロー管理システム
F13:識別手段
D13:識別プログラム
F15:オブジェクト定義コード生成手段
D15:オブジェクト定義コード生成プログラム
F17:フロー定義コード生成手段
D17:フロー定義コード生成プログラム
F19:ワークフローエンジンコード生成手段
D19:ワークフローエンジンコード生成プログラム
21:プログラム格納部
D22:基本機能提供プログラム
D23:プロセス定義情報
D23a:オブジェクト定義情報
D23b:フロー定義情報
24:起票者
D25a、D47a:オブジェクト定義コード
D25b、D47b:フロー定義コード
D27:ワークフローエンジンコード
F27a、F27b:ワークフローエンジンサブクラス
D27a、D27b:ワークフローエンジンサブクラスコード
D27s:ワークフローエンジンスーパークラスコード
D27t:その他のスーパークラスコード
F28:コードジェネレータ
31a、31b:処理者
D43:プロセス定義スクリプト
D43a:オブジェクト定義スクリプト
D43b:フロー定義スクリプト
F45:スクリプト識別手段
D52:クラスライブラリ
D53a、D53b:ワークリスト
F55a、F55b:ワークリストハンドラ
D57:クライアントアプリケーション
F63:宛名変換手段
D63:宛名変換プログラム
D65:組織/役割データ
F67a、F67b、F67t:通信機能
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a workflow management system, a code generator used in the workflow management system, and a method for changing a process of workflow processing.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, a workflow management system is used for efficiently performing information processing consisting of a series of processes and a plurality of processes, that is, workflow processing, in a network system to which a plurality of terminal computers are connected. Data relating to the workflow processing is moved as a package between the computers in a predetermined order, and is processed by each computer. Each processor refers to and rewrites data by operating each of these computers. An example of such a workflow management system is disclosed in Document I (Nikkei Computer, 1997.9.1 pages 204-217).
[0003]
FIG. 9 is a diagram schematically showing the workflow management system disclosed in Document I divided into blocks for each function. In FIG. 9, the data is indicated by a rounded rectangle, and the functional means (application or the like) is indicated by a rectangular rectangle. As shown in FIG. 9, the workflow management system 201 includes a workflow engine A203, a process definition tool A205, a work list handler A207, and a monitoring tool A209. In a widely used client / server system, a workflow engine A203 that controls workflow processing operates on the workflow server 204, and each processor operates a client computer to execute a process (activity) in charge.
[0004]
The process definition tool A 205 is a functional module for defining the processing contents of each process and the order of activities. The process definition tool A205 generates process definition data D211 when a workflow process is newly started. The process definition data D211 includes data relating to processing contents in each activity and the order of the activities as integral data. Further, the process definition data D211 may include data relating to control conditions such as a workflow process end condition. A general process definition tool A205 has a graphical user interface (GUI) environment. Therefore, the processor can easily define the process (the order of the activities and the processing contents in each activity) by using the pointer by operating the mouse.
[0005]
The workflow engine A 203 is a functional module that controls workflow processing. More specifically, the workflow engine A 203 interprets the process definition data D211 and adds a work item indicating the processing content to the work list D213 based on the interpretation. The work list D213 is a data area for storing work items to be processed by each processor, and is provided for each processor.
[0006]
Each processor executes an activity using the client application A 215 or the like according to the work item indicated by the work list handler A 207. For activities that do not require human processing, the activation application A217 activated by the workflow engine A203 executes the activities. As shown in FIG. 9, the client application A215 or the startup application A217 may use application data D219.
[0007]
The work list handler A207 gives each processor an instruction regarding the processing contents by showing the work items to be processed with reference to the work list D213 to each processor. When the processor finishes the work, the work list handler A207 deletes the work item from the work list D213. The workflow engine A 203 recognizes the end of the activity by deleting the work item, and adds the work item to the work list D 213 of the next processor.
[0008]
The monitoring tool A209 is a functional module that confirms the progress of workflow processing by monitoring the workflow engine A203. With the monitoring tool A209, the supervisor or each processor can refer to the progress or end result of the workflow processing as necessary.
[0009]
The workflow control data D221 is used to identify the workflow engines that are responsible for each workflow process when performing a plurality of workflow processes in parallel. The workflow related data D223 includes various information related to the workflow processing. The workflow-related data D223 is, for example, price data of purchased items, and is used when the processor to be in charge changes depending on the price range.
[0010]
As shown in FIG. 9, the workflow engine A 203 controls the processing in each activity based on the process definition data D 211, whereby the workflow processing is performed. Generally speaking, workflow processing is classified into two types of business, repetitive regular business and ad hoc atypical business. The routine work includes a business trip cost slip, equipment purchase slip or budget application, and the non-standard work includes data circulation, technical document creation, or software development. In order to improve the efficiency of work, a workflow management system that can be applied to these various work is required.
[0011]
Typically speaking, in the workflow processing of a routine work, one process definition data is often used because the order of activities and the processing contents in each activity hardly change. On the other hand, in the workflow processing of an atypical business, since the order of activities and the processing contents in each activity are not constant, process definition data is often generated every time workflow processing is performed.
[0012]
[Problems to be solved by the invention]
However, in the conventional workflow management system, it is necessary to modify the entire process definition data in order to change the processing content or processing order of each activity in either a routine business or an atypical business. For example, when changing the approver in the equipment purchase slip, which is a routine work, the process definition data used so far must be corrected. In addition, when it is desired to change the circulation destination of the material in the circulation of materials generated in ad hoc, the process definition data must be corrected before starting the circulation of the material.
[0013]
In order to easily change the processing order of such activities, in the workflow management system 201 of FIG. 9, the workflow engine A 203 refers to the organization / role data D225. The organization / role data D225 is data in which a general destination name indicating a position in the organization such as a section manager or a department manager is associated with a specific destination name such as the name of a processor. In this case, only by defining the general destination name in the process definition data D211, the workflow engine A203 can determine the specific destination name from the general destination name by referring to the organization / role data D225. For this reason, even when a processor in a position along the approval route is changed to another processor due to personnel changes or the like, the destination is dynamically recognized, so there is no need to change the destination name of the approval route.
[0014]
Although the introduction of such organization / role data may make the change unnecessary, in the workflow processing in which the processing order is not defined by the job title, it is still necessary to correct the processing order of the activity from the process definition data.
[0015]
Therefore, in both workflow processing of routine work and non-routine work, when changing the processing contents in one activity or changing the processing order of activities, process definition data is modified or process definition data Create a new. As described above, in the conventional workflow processing, the process-related change involves redefinition of the process definition data, which is inefficient and cannot be easily performed (first problem).
[0016]
Normally, when a new workflow process is started, process definition data is newly created. At this time, if the types of work to which the workflow processing is applied are diverse, the process definition data necessarily has various contents. Since the workflow engine must be able to interpret and execute these process definition data, it needs to have many basic functions for executing various workflow processes in advance. Therefore, the configuration of the workflow engine becomes complicated, and the occupied memory of the workflow engine code that functions as the workflow engine inevitably increases (second problem).
[0017]
Therefore, a workflow management system that can solve at least the first problem and preferably can solve the second problem has been desired.
[0018]
[Means for Solving the Problems]
Therefore, the workflow management system of the invention according to this application is a network system having a plurality of computers, and performs workflow processing consisting of a series of a plurality of steps based on process definition information regarding the processing contents in each step and the order of those steps. In the workflow management system for each process,
Identification means for identifying object definition information related to processing contents in each process and flow definition information related to the order of processes from the process definition information described above,
A program storage unit storing a plurality of programs that provide basic functions used in the above-described workflow processing;
An object definition that interprets the object definition information described above, reads a program corresponding to the interpretation from the program storage unit, and generates an object definition code that is a code related to processing contents in each process based on the read program Code generation means;
A flow definition code generating unit that interprets the flow definition information described above and reads a program corresponding to the interpretation from the program storage unit, and generates a flow definition code that is a code related to the order of each read process;
A workflow engine that controls workflow processing by interpreting the flow definition code and the object definition code.
[0019]
According to this configuration of the workflow management system, when defining a process for workflow processing, the drafter defines the process for starting the workflow processing. The process definition information input by the drafter is separated into a part relating to the flow definition and a part relating to the object definition by the identifying means. After this separation, the former part is encoded by the flow definition code generation means and generated as a flow definition code, and the latter part is encoded by the object definition code generation means and generated as an object definition code. Therefore, when the workflow process is performed, it is not necessary to modify the process definition data itself even if the process (the processing contents and the order of the activities in each activity) is changed. In other words, if you want to change only the processing contents in each activity, you need to modify only the object definition code. If you want to change the order of activities (change of the person who performs the activity), modify only the flow definition code. That's fine.
[0020]
In implementing the present invention, more preferably, the object definition information and the flow definition information described above are interpreted, and a program corresponding to the interpretation is read from the program storage unit, so that the read program is stored. A workflow engine code generation means for generating a workflow engine code based on the workflow engine code may be further provided, and the workflow engine code may function by the workflow engine code.
[0021]
As a result, it is possible to generate a workflow engine code having only the minimum necessary configuration for realizing the functions defined in the flow definition information and the object definition information. Therefore, the memory occupied by the workflow engine code can be reduced. The workflow engine code means program code that, when executed by the CPU, causes the CPU to virtually exist and function in the CPU.
[0022]
In implementing the present invention, it is preferable to further include definition code storage means for storing the object definition code and the flow definition code in the state of a high-level language code. Thereby, when making a correction for the flow definition or the object definition, the person who makes the correction can add, delete or modify the code while understanding each definition code.
[0023]
In carrying out the present invention, preferably, the above-described workflow engine has a hierarchical structure in which functions are inherited from an upper hierarchy to a plurality of lower hierarchies, and the workflow engines of individual lower hierarchies access to each other. It should have a function. Thereby, the lower-level workflow engine can be distributed to the host computers in the network system. As described above, when a hierarchical structure is provided to the workflow engine and a communication function is provided in each lower-level workflow engine, the lower-level workflow engine can exist in a distributed manner in any host computer in the network system. Therefore, the efficiency and stability of the network system by load distribution can be realized.
[0024]
Further, in the workflow management system in which the lower-level workflow engines are distributed as described above, when a general destination name is defined in advance in the above flow definition code, a specific destination name is generated from the general destination name. It is desirable to further include address conversion means, and this address conversion means has a communication function for mutual access to the workflow engine.
[0025]
Conventionally, in order to perform address conversion, the address conversion means has to be provided in the same host computer as the host computer in which the workflow engine exists. However, since the address conversion means is provided with a communication function, the address conversion means can mutually access the lower-level workflow engine even when the lower-level workflow engines are distributed as described above. Therefore, the address conversion means can be provided in a host computer different from the lower-level workflow engine.
[0026]
In addition, the code generator of the invention according to this application is a network system having a plurality of computers, and when performing workflow processing consisting of a series of a plurality of steps, from the process definition information regarding the processing contents in each step and the order of those steps, A code generator that generates code that can be interpreted by the workflow engine,
Identification means for identifying object definition information related to processing contents in each process and flow definition information related to the order of processes from the process definition information described above,
Object definition code generation means for generating an object definition code that can be interpreted by the workflow engine from the object definition information described above,
And a flow definition code generating means for generating a flow definition code that can be interpreted by the workflow engine from the above flow definition information.
[0027]
According to this code generator configuration, the identification means separates the process definition information into object definition information and flow definition information, and then generates an object definition code from the object definition information and generates a flow definition code from the flow definition information. To do. Therefore, the object definition code is corrected when only the processing content in each process is to be changed, and the flow definition code is corrected when only the processing order of the process is to be changed. Therefore, the process can be changed efficiently and easily. The object definition code and the flow definition code are generated as, for example, a Java language or C ++ source program code as a high-level language, that is, an object definition source program code and a flow definition source program code. At this time, when these object definition code and flow definition code are compiled, they become executable program code that can be interpreted by the workflow engine.
[0028]
In addition, in the invention of the method for changing the process of the workflow processing according to this application, before performing the workflow processing consisting of a series of a plurality of steps, from the process definition information regarding the processing contents of each step and the processing order of the steps, Identifying object definition information related to processing contents and flow definition information related to process processing order, generating object definition code that can be interpreted by workflow engine from object definition information, and flow definition that can be interpreted by workflow engine from flow definition information For workflow processing that generates code, when changing the process of the workflow processing, only the object definition code is modified when only the processing content of each process is changed, and the flow is performed when only the processing order of the process is changed. Only the definition code is modified That.
[0029]
According to this process change method, either the object definition code or the flow definition code that exists independently of each other can be modified, regardless of whether you want to change only the processing contents in each step or only change the processing order of the steps. It can respond by doing. Therefore, the process can be changed efficiently and easily.
[0030]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment of a workflow management system of the present invention will be described with reference to the drawings. In addition, each block diagram used for this description represents each component in a block to such an extent that these inventions can be understood, and has shown only the schematic functional relationship. In addition, in each figure, the same constituent components are denoted by the same reference numerals and redundant description thereof may be omitted. In each figure, a rectangular rectangle indicates a functional unit, and a rounded rectangle indicates data.
[0031]
(First embodiment)
In the workflow management system, it is necessary to define a workflow process and then execute the workflow process. Therefore, in the first embodiment, a form for defining the process of the workflow management system will be described, then a form for executing the workflow process of the workflow management system will be described, and then a method for changing the process of the workflow process will be described. explain.
[0032]
FIG. 1 is a block diagram schematically showing the interrelationships of main functional units in the workflow management system according to the first embodiment. However, each functional unit in FIG. 1 virtually exists in the central processing unit when the central processing unit as a hardware resource executes a program corresponding to the functional unit. In the following, squares of functional units virtually realized in the central processing unit are shown as squares, and data information formed in the data area of the storage device is shown as rounded rectangles. FIG. 2 is a diagram schematically showing the usage form of hardware resources by each functional unit, taking as an example the case where each functional unit in FIG. 1 is operated by one host computer.
[0033]
Hereinafter, with reference to FIG. 1 and FIG. 2, a form for defining the process of the workflow management system of the embodiment will be described. However, the workflow management system of the embodiment is provided with a workflow engine code generation means.
[0034]
As is well known, a workflow management system executes a workflow process by performing a workflow process including a series of a plurality of activities for each activity in a network system having a plurality of host computers.
[0035]
The workflow management system 11 according to the first embodiment shown in FIG. 1 includes an identification unit F13, an object definition code generation unit F15, a flow definition code generation unit F17, a workflow engine code generation unit F19, and a program storage unit 21. And have. Here, these functional units F13, F15, F17, and F19 are configured to operate as virtual functional means in the central processing unit (CPU) c1 of the host computer h1 in FIG.
[0036]
The host computer h1 shown in FIG. 2 includes a storage device m1, such as a hard disk or an optical disk, a CPU c1, and an input device i1 for man-machine interface. The CPU c1 does not show a control unit for performing necessary control including the timing and start or stop of the operation of the storage device m1, the input device i1, each of the functional units F13, F15, F17, and F19 described above. Contains. The storage device m1 of the host computer h1 has an identification program D13 for realizing the function of the identification means F13, an object definition code generation program D15 for realizing the function of the object definition code generation means F15, and a flow definition code generation means F17. A flow definition code generation program D17 that realizes the above function and a workflow engine code generation program D19 that realizes the function of the workflow engine code generation means F19 are stored.
[0037]
First, in defining the workflow process, the drafter 24 operates the input device i1 of the host computer h1 to store the process definition information D23 in the storage device m1. At this time, the drafter 24 inputs the process definition information D23 from the input device i1 of the host computer h1 by, for example, script input from the keyboard or GUI operation from the pointer device. As a result, the process definition information D23 is stored in the storage device m1 of the host computer h1. However, the process definition information D23 includes data relating to processing contents of each activity, that is, object definition information D23a, and data relating to the order of activities, that is, flow definition information D23b.
[0038]
When the process definition information D23 is input, the identification unit F13 reads the process definition information D23 stored in the storage device m1, and identifies the object definition information D23a and the flow definition information D23b from the process definition information D23. . Thereafter, the identified object definition information D23a and flow definition information D23b are stored in the storage device m1. Note that the identification unit F13 operates on the CPU c1 as a virtual functional unit by the CPU c1 reading and executing the identification program D13 stored in the storage device m1.
[0039]
The program storage unit 21 stores a plurality of basic function providing programs D22 that provide basic functions used for workflow processing. The program storage unit 21 is formed in a data area in the storage device m1 of the host computer h1, for example.
[0040]
For example, the basic function providing program D22 includes a plurality of programs in which basic functions used for workflow processing are classified for each function. In this way, when the basic functions are divided for each function, only necessary functions can be read without reading unnecessary functions. Therefore, the occupied memory of the object definition code D25a, the flow definition code D25b, and the workflow engine code D27 generated from the basic function providing program D22 can be reduced.
[0041]
The object definition code generation unit F15 interprets the object definition information D23a and reads the basic function providing program D22 according to the interpretation from the program storage unit 21, thereby defining the object definition based on the read basic function providing program D22. A code D25a is generated. At this time, specifically, the object definition code generation means F15 functions as follows in the host computer h1.
[0042]
That is, the CPU c1 of the host computer h1 reads and executes the object definition code generation program D15 stored in the storage device m1. As a result, the object definition code generation means F15 is activated. The object definition code generation means F15 reads the object definition information D23a from the storage device m1, and determines whether or not the basic function providing program D22 is necessary for generating the object definition code D25a based on the object definition information D23a. The provided program D22 is read. Thereafter, the object definition code generation means F15 generates the object definition code D25a by combining, for example, the read basic function providing program D22 and the object definition information D23a. For example, at this time, the object definition code generation means F15 may read the plurality of basic function providing programs D22 and generate the object definition code D25a. The generated object definition code D25a is stored in the storage device m1 as a source program including a basic source program that defines at least common processing contents in each activity.
[0043]
The flow definition code generation unit F17 interprets the flow definition information D23b and reads the basic function providing program D22 corresponding to the interpretation from the program storage unit 21, thereby defining the flow definition based on the read basic function providing program D22. A code D25b is generated. At this time, specifically, the flow definition code generation means F17 functions as follows in the host computer h1.
[0044]
That is, the CPU c1 of the host computer h1 reads and executes the flow definition code generation program D17 stored in the storage device m1. As a result, the flow definition code generation means F17 is activated. The flow definition code generation unit F17 reads the flow definition information D23b from the storage device m1, and determines whether the basic function providing program D22 necessary for generating the flow definition code D25b is based on the flow definition information D23b. The provided program D22 is read. Thereafter, the flow definition code generation unit F17 generates the flow definition code D25b by combining, for example, the read basic function providing program D22 and the flow definition information D23b. For example, at this time, the flow definition code generation unit F17 may read the plurality of basic function providing programs D22 and generate the flow definition code D25b. The generated flow definition code D25b is stored in the storage device m1 as a source program including at least a source program that defines the order of activities.
[0045]
The workflow engine code generation means F19 interprets the identified object definition information D23a and flow definition information D23b and reads the basic function providing program D22 according to the interpretation from the program storage unit 21, thereby reading the read basic function. A workflow engine code D27 is generated based on the provided program D22. At this time, specifically, the workflow engine code generation means F19 functions as follows in the host computer h1.
[0046]
That is, when the CPU c1 of the host computer h1 reads and executes the workflow engine code generation program D19 stored in the storage device m1, the workflow engine code generation means F19 is activated. The activated workflow engine code generation means F19 reads the object definition information D23a and the flow definition information D23b from the storage device m1, and also provides a basic function providing program necessary for generating the workflow engine code D27 based on the definition information D23a and D23b. It is determined whether it is D22 or not, and the basic function providing program D22 is read out. Thereafter, the workflow engine code generation means F19 generates the workflow engine code D27 from the read basic function providing program D22. For example, at this time, the workflow engine code generation means F19 generates a workflow engine code D27 by combining a plurality of basic function providing programs D22. The generated workflow engine code D27 interprets the object definition code D15 and the flow definition code D17 (however, includes the meaning of “reference” in Java programming) and controls workflow processing based on this interpretation. Is stored in the storage device m1 as a source program.
[0047]
When actually executing the workflow processing, for example, the CPU c1 of the host computer h1 reads out and executes the workflow engine code D27 stored in the storage device m1, thereby starting the workflow engine as one functional unit. Then, the control operation of the workflow process is performed.
[0048]
The identification unit F13, the object definition code generation unit F15, and the flow definition code generation unit F17 can be recognized as one functional unit called a code generator F28. The code generator F28 is a process that can be interpreted by the workflow engine from the process definition information regarding the processing contents in each activity and the order of the activities when performing workflow processing including a series of activities in a network system having a plurality of host computers. Generate code for. In particular, the code generator F28 distinguishes and generates an object definition code D25a and a flow definition code D25b from the process definition information D23. Therefore, if the workflow engine is configured to be able to interpret the object definition code D25a and the flow definition code D25b for a general workflow management system, only the code generator F28 portion can be applied.
[0049]
Here, the case where a specific workflow process is executed will be described as an example in more detail for each functional unit described above.
[0050]
Here, the workflow management system is constructed using object-oriented programming (OOP). As is well known, Java language, C ++ language, etc. are suitable for OOP. When OOP is used, the above-described workflow engine is defined as a workflow engine having a hierarchical structure including a higher hierarchy (superclass) having only basic functions to a lower hierarchy (subclass) having specific and individual functions. it can. At this time, the object definition code and the flow definition code are objects referenced by the workflow engine.
[0051]
FIG. 3 is a diagram schematically showing a specific functional configuration of the workflow management system of FIG. 1, and a workflow when a workflow engine having a class structure, that is, a hierarchical structure is used instead of the workflow engine shown in FIG. It is a block diagram which shows roughly the mutual relationship of the main functional units about a management system. Each functional unit in FIG. 3 is a functional unit that virtually exists in the CPU when the CPU as the hardware resource executes a program corresponding to the functional unit. However, for the sake of convenience, in FIG. 3, the workflow engine subclasses F27a and F27b are shown as virtual functional units that operate on the CPUs of the host computers h2 and h3, respectively.
[0052]
FIG. 4 is a diagram illustrating an example of a network system that operates each functional unit of the workflow management system of FIG. FIG. 4 shows a network system in which three host computers h1, h2, and h3 are connected. As shown in FIG. 4, each of the host computers h1, h2, and h3 includes CPUs c1, c2, and c3, storage devices m1, m2, and m3 such as hard disks and optical disks, and man-machine interface input devices i1, i2, and i3. With. Although not shown, each host computer h1, h2, and h3 generally has a display device or the like. As already described, the CPUs c1, c2, and c3 have a control unit for driving each functional unit. Further, driver software for driving each hardware resource, general OS software, and the like may be operating on the CPUs c1, c2, and c3. FIG. 4 merely shows an example of a computer in which each component of the workflow management system can exist.
[0053]
Here, as a specific example of the workflow process, a workflow process including two activities is performed. That is, as shown in FIGS. 3 and 4, in this workflow processing, the drafter 24 first operates the host computer h1 to define the workflow processing process, and then the processor 31a operates the host computer h2. The processor 31b then operates the host computer h3 to execute the activity.
[0054]
The workflow engine shown in FIGS. 3 and 4 has a plurality of hierarchical structures from an upper hierarchy to a lower hierarchy. That is, the code for causing the workflow engine to function has a two-level hierarchical structure of a higher-level workflow engine code (workflow engine superclass code) D27s and a lower-level workflow engine code (workflow engine subclass code) D27a and D27b. ing.
[0055]
However, here, the workflow engine code generation means F19 generates the workflow engine subclass codes D27a and D27b which are source program codes. The workflow engine subclass code D27a causes the workflow engine subclass F27a to function, and the workflow engine subclass code D27b allows the workflow engine subclass F27b to function.
[0056]
When a workflow engine having a hierarchical structure is used as described above, it is preferable to generate only a workflow engine code in a lower hierarchy.
[0057]
As is well known, the workflow engine subclasses F27a and F27b can perform functional inheritance (inheritance) from the workflow engine superclass (shown as codes instead of functional units in the drawing) D27s. Therefore, if the basic function is defined in the workflow engine superclass code D27s, the basic function can be inherited in the workflow engine subclasses F27a and F27b. Therefore, in the workflow engine subclass codes D27a and D27b, only functions different from the basic functions need be defined.
[0058]
As described above, the workflow engine code generation means F19 is based on the OOP, and is the lower-level workflow engine code D27a and D27b that functionally inherits from the higher-level workflow engine code D27s that defines the basic function, and It is preferable to generate lower-level workflow engine codes D27a and D27b in which specific specific functions are defined. Thereby, the description of the entire source program code that functions as the workflow engine can be simplified, so that the workflow engine code can be easily generated. At the same time, the occupied memory in the storage device for the workflow engine code can be reduced. As shown in FIG. 3, the class library D52 including the workflow engine super class code D27s is provided in the program storage unit 21, for example.
[0059]
If the workflow engine code having a hierarchical structure extending from the superclass to the subclass can be accessed by setting the communication function to the workflow engine subclass codes D27a and D27b, the workflow engine subclasses D27a and D27b are respectively connected to the network. It can be distributed to any host computer in the system. Therefore, the efficiency and stability of the network system can be improved by load balancing.
[0060]
Here, as shown in FIG. 4, the workflow engine subclass codes D27a and D27b generated by the host computer h1 are distributed to the host computers h2 and h3, respectively. As described above, the workflow engine subclass code D27a shown in FIG. 4 operates on the host computer h2 and functions as the workflow engine subclass F27a shown in FIG. 3, and the workflow engine subclass code D27b shown in FIG. 4 operates on the host computer h3. As a workflow engine subclass F27b. As shown in FIGS. 3 and 4, the processor 31a performs an activity by operating the host computer h2. Thereafter, the processor 31b performs another activity by operating the host computer h3. Thus, when generating the workflow engine code, it is preferable to define different workflow engine subclasses for each processor host computer. As a result, the processor can be easily identified, so that it is easy to define the workflow process.
[0061]
Here, in order to generate a lower-level workflow engine code for each processor as described above, the following process definition information is generated. That is, in FIG. 3, for example, the process definition script D43 is used as the process definition information described above. At this time, the drafter 24 operates the input device i1 of the host computer h1, for example, and inputs the process definition script D43. The process definition script D43 includes an object definition script D43a and a flow definition script D43b.
[0062]
At this time, if OS software or editor software is operated on the CPU c1 of the host computer h1, a process definition script D43 as data is stored in the storage device m1. The process definition script D43 is data in which information related to the process definition of the workflow process is described with a simple internal code. However, the internal code here is a code that can be recognized by the script identifying means F45.
[0063]
FIG. 5 is an example of a process definition script for specific workflow processing. The process definition script shown in FIG. 5 includes an object definition script D43a and a flow definition script D43b.
[0064]
Further, in order to identify these scripts D43a and D43b from each other, different identifiers are added to the scripts D43a and D43b. In the example illustrated in FIG. 5, the identifiers “engines” and “flow” indicate the flow definition script D43b, and the identifier “do” indicates the object definition script D43a.
[0065]
The identifier “engines” specifies the workflow engine subclass name. Here, since different workflow engine subclass codes are generated for the processors 31a and 31b, the processors 31a and 31b that execute the activities are defined by the workflow engine subclass names. For example, as shown in FIG. 5, a workflow engine subclass F27a (loanTeller) is defined for the processor 31a, and a workflow engine subclass F27b (loanDecision) is defined for the processor 31b.
[0066]
The identifier flow defines the processing order of activities by sequentially specifying workflow engine subclass names. That is, in FIG. 3, activities are executed in the order of workflow engine subclasses F27a (loanTeller) and F27b (loanDecision).
[0067]
The identifier do defines the processing content in each activity. That is, as shown in FIG. 5, a process content “method start” is defined in the workflow engine subclass F27a (loanTeller), and a process content “method decideLoan” is defined in the workflow engine subclass F27b (loanDecision).
[0068]
As shown in FIG. 3, such a process definition script D43 is read into the script identification means F45 operating on the CPU c1 of the host computer h1. At this time, the script identification unit F45 separates the process definition script D43 into the object definition script D43a and the flow definition script D43b based on the identifier included in the process definition script D43. Thereafter, the script identification unit F45 stores the object definition script D43a and the flow definition script D43b separated into the host computer h1 in the storage device m1. The script identification means F45 is a virtual functional unit that functions when the CPU c1 reads and executes a script identification program (not shown) stored in the storage device m1 of the host computer h1 shown in FIG. It is.
[0069]
Specifically, the program storage unit 21 has a basic function providing program D22 as follows. That is, the program storage unit 21 is, for example,
(1) A basic function providing program D22 that realizes a function for starting a new workflow process;
(2) A basic function providing program D22 for realizing a function of confirming the progress status of the workflow process being executed,
(3) A basic function providing program D22 that realizes a function of canceling workflow processing;
(4) A basic function providing program D22 that realizes a function of confirming the end of all activities in the workflow processing;
(5) A basic function providing program D22 that realizes a function of discarding information on the canceled or terminated workflow processing;
(6) A basic function providing program D22 for realizing a function of adding a work item to a work list provided for each processor;
(7) A basic function providing program D22 that realizes a function of recognizing the end of an activity by deleting a work item in the work list;
Have
[0070]
As shown in FIG. 4, since the workflow engine classes having a hierarchical structure are distributed in the host computers h1, h2, and h3, the program storage unit 21 has (8) workflow engine subclasses. It is preferable to have a basic function providing program D22 that realizes a communication function for communicating with other workflow engines. In addition, the program storage unit 21 may include a basic function providing program D22 that automatically processes an activity by an activation application for an activity that does not require (9) human processing. As shown in FIG. 4, the program storage unit 21 is provided as a data area of the storage device m1 of the host computer h1, for example.
[0071]
In order to perform OOP in the Java language, it is desirable that the program storage unit 21 has a class library 52 that defines classes that can be used for workflow processing such as a super class of the workflow engine. In FIG. 3, the class library D52 includes a workflow engine superclass code D27s (DWorkflowEngine) and other superclass code D27t (LoanApp2).
[0072]
The workflow engine code generation means F19 receives the basic function providing program D22 (1) to (9) as described above from the program storage unit 21 of the storage device m1, the object definition script D43a and the flow definition script stored in the storage device m1. After reading D43b, the basic function providing program D22 of (1) to (9) that has been read is combined and the workflow engine subclass code D27a (LoanTeller) functions as the workflow engine subclass F27a (LoanTeller) and F27b (LoanDecision) And D27b (LoanDecision) are generated.
[0073]
At this time, the workflow engine code generation means F19 interprets the object definition script D43a and the flow definition script D43b related to the workflow processing, thereby providing workflow engine subclass codes D27a (LoanTeller) and D27b having only basic functions necessary for the workflow processing. (LoanDecision) is generated. That is, the workflow engine code generation unit F19 reads only basic functions necessary for workflow processing defined by the object definition script D43a and the flow definition script D43b, and does not read unnecessary functions. For example, a combination of some of the basic functions (1) to (9) read from the program definition unit F45 and the object definition script D43a read from the program storage unit 21, is combined with the workflow engine subclass code D27a (LoanTeller). And D27b (LoanDecision) are generated. Therefore, the workflow engine subclass codes D27a (loanTeller) and D27b (LoanDecision) have only the minimum necessary configuration, and therefore the occupied memory becomes small. More specifically, for example, a conventional workflow engine must be able to process an activity with an arbitrary number of steps, but the workflow engine of the embodiment only needs to be able to process two activities, so there are extra classes and methods. The code omits the definition.
[0074]
The object definition code generation means F15 reads the basic function providing program D22 as described above and the object definition script D43a accumulated in the storage device m1 from the program storage unit 21 of the storage device m1, and then reads the read basic information. The function providing program D22 and the object definition script D43a are combined to generate the object definition code D47a.
[0075]
The flow definition code generation unit F17 reads the basic function providing program D22 as described above and the flow definition script D43b accumulated in the storage device m1 from the program storage unit 21 of the storage device m1, and then reads the read basic information. The function providing program D22 and the flow definition script D43b are combined to generate the flow definition code D47b.
[0076]
6 and 7 are diagrams showing part of the object definition code D47a and the flow definition code D47b generated as the source program code in the Java language by the object definition code generation means F15 and the flow definition code generation means F17.
[0077]
The code on the first and second lines of the source program code shown in FIG. 6 defines a subclass code D27a (loanDecision) for the superclass code D27s (DWorkflowEngine) of the workflow engine. The code on the third to seventh lines declares exception processing for the workflow engine subclass code D27b (loanDecision). The code on the 8th to 11th lines defines a method decideloan indicating the processing content in the workflow engine subclass code D27b (loanDecision). The code on the 12th to 24th lines defines a method that is executed first when the workflow engine subclass code D27b (loanDecision) is started.
[0078]
The subclass LoanFlow2 of the other super class code D27t (LoanApp2) necessary for the workflow processing is defined by the codes in the first and second lines of the source program code shown in FIG. The codes on the 3rd to 7th lines initialize and define names of other superclass code D27t (LoanFlow2). The code on the 8th to 26th lines registers workflow engine subclass codes D27a (loanTeller) and D27b (loanDecision) used for loanFlow2. The code on the 27th to 31st lines creates a table with the names of workflow engine subclass codes D27a (loanTeller) and D27b (loanDecision). The codes on the 32nd to 34th lines create a table of workflow processing names. The code on the 35th to 37th lines creates a time limit table for workflow processing. The code on the 38th to 40th lines creates a table for determining the end of the workflow process.
[0079]
Further, when actually performing workflow processing, the workflow engine subclasses F27a (loanTeller) and F27b (LoanDecision) shown in FIG. 3 are driven to refer to the classes and methods of the object definition code D47a and the flow definition code D47b. , Control the workflow process.
[0080]
Further, when actually performing the workflow process, the object definition code D47a and the flow definition code D47b must describe a definition related to the process. These definition codes D47a and D47b may be generated in one step or may be generated in a plurality of steps. For example, the code generator F28 may generate only the basic definition code and complete the definition code by adding a specific definition code to the basic definition code. In other words, when the object definition code D47a and the flow definition code D47b are generated in a plurality of steps, first, a code that defines processing contents common to each activity is generated as an object definition basic code, and an object definition extension code is generated. An object definition code may be generated by adding a code that defines processing content unique to each activity to the object definition basic code. Specifically, the object definition code D47a in FIG. 6 is completed as an object definition code when a method specific to each activity is added as an object definition extension code to the blocks in the 8th to 9th lines. Thus, after the object definition code generation means F15 generates the object definition basic code, it is preferable to add the object definition extension code to the object definition basic code. This simplifies the individual object definition code.
[0081]
For convenience of explanation, identification means, workflow engine code generation means, object definition code generation means, and flow definition code generation means, which are virtual functional units, exist in the CPU of a specific same host computer. Each functional unit can exist in the CPU of any host computer. Further, the program storage unit 21, the object definition code D47a, and the flow definition code D47b may exist in the storage device of any host computer.
[0082]
By defining the workflow process by the process definition script in the above procedure, the workflow engine subclass codes D27a (LoanTeller) and D27b (LoanDecision), the object definition code D47a, and the flow definition code D47b can be generated. . However, at the start of workflow processing, the workflow engine subclass codes D27a (LoanTeller) and D27b (LoanDecision) generated by the host computer h1 are distributed to the host computer h2 and the host computer h3, respectively.
[0083]
Similarly to the conventional workflow management system, the work host D53a and D53b and the work list handlers F55a and F55b are provided on the same host computer as the workflow engine subclasses F27a (loanTeller) and F27b (LoanDecision) shown in FIG. It has been. The work lists D53a and D53b are provided for each processor 31a and 31b.
[0084]
Each host computer h2 and h3 performs the following processing. That is, first, each processor 31a refers to the work item shown in the work list D53a by the workflow engine subclass F27a (loanTeller). Thereby, the processor 31a recognizes the activity to be processed. Then, the processor 31a executes the activity using the client application D57 or the like. When the work included in the activity ends, the work list handler F55a deletes the work item from the work list D53a. Thereby, the workflow engine subclass F27a (loanTeller) detects the end of the activity. Thereafter, the workflow engine F27a (loanTeller) sends the data processed in the activity to the next workflow engine F27b (loanDecision).
[0085]
Each processor 31b refers to the work item shown in the work list D53b by the workflow engine subclass F27b (loanDecision). The processor 31b recognizes the activity to be processed. Then, the processor 31b executes the activity using the client application D57 or the like. When the activity ends, the processor 31b operates the work list handler F55b to delete the work item from the work list D53b. Thereby, the workflow engine subclass F27b (loanDecision) detects the end of the activity. At the same time, the workflow engine F27b (loanDecision) detects the end of all activities of the workflow process, and notifies the end of the workflow process and the result to the processor 31a, for example.
[0086]
Next, a method for changing the process of workflow processing will be described using the above-described workflow management system as an application example.
[0087]
The process of the workflow management system according to the embodiment is changed by rewriting the object definition code D25a (D47a) or the flow definition code D25b (D47b). Therefore, it is not necessary to rewrite the process definition data itself as in the conventional workflow management system. That is, according to the workflow management system of the embodiment, only the object definition code D25a is corrected when only the processing content of each activity is changed, and only the flow definition code D25b is changed when only the activity order is changed. You just have to fix it.
[0088]
More specifically, for example, in the workflow processing according to the flow definition code of FIG. 7, if the processor is to be changed, the workflow engine subclass (loanDecision) described in the flow definition code is renamed to another workflow engine subclass. Just do it. Further, for example, in the workflow processing according to the object definition code of FIG. 6, when the processing content of the workflow engine subclass (loanDecision) is to be changed, the method decideLoan indicating the processing content of the object definition code may be modified. In this way, since one modification of the object definition code or the flow definition code does not affect the other modification, the process can be easily changed.
[0089]
In order to correct the object definition code or the flow definition code, the workflow management system described above stores definition code storage means (not shown) that stores the object definition code and the flow definition code in a high-level language code state. ).
[0090]
The object definition code and the flow definition code shown in FIGS. 6 and 7 are generated before starting the workflow process. These definition codes are source programs in this embodiment. These definition codes are compiled into an operable object program. For example, when a Java language source program is compiled, the source program is converted into a byte code that operates independently of the platform, and becomes an executable program. Since it is difficult to rewrite the compiled bytecode data itself, a state before compilation, that is, a source program code in Java language, for example, is stored. Thus, when changing the processing contents or processing order in each activity, a new object definition code or flow definition code can be created by correcting a part of the Java language source program code. If a new definition code is compiled and converted into byte code and then replaced with the byte code data before correction, the process definition can be corrected.
[0091]
(Second Embodiment)
In the following second embodiment, an embodiment in which address conversion means is provided in the workflow management system of the first embodiment will be described. However, here, a mode in which a workflow engine having a hierarchical structure is provided will be described. In the workflow management system described in the first embodiment, the activity processing order is statically defined in the flow definition code. In other words, a specific destination is shown in the code indicating the processor of the activity, and when there is a change in destination due to personnel changes or the like, that is, a change in the order of activities, it is necessary to rewrite the flow definition code.
[0092]
By the way, it is known that when the address conversion means disclosed in Document I or the like is used, the processing order can be dynamically defined, so that the process definition data need not be corrected. However, in the workflow management system disclosed in Document I, the workflow engine operates on a server, and the address conversion unit operates on the same server as the workflow engine. This increases the burden on the server including the address conversion means. Further, when the server is actually down, there is a problem that the workflow processing is interrupted.
[0093]
FIG. 8 is a block diagram schematically and schematically showing each functional unit of the workflow management system that operates the workflow management system according to the second embodiment. However, FIG. 8 does not show the same functional units as those in FIG. 4, and only the differences from FIG. 4, that is, workflow engine subclasses F27a and F27b and address conversion means F67 are shown.
[0094]
As shown in FIG. 8, the workflow management system according to the second embodiment includes address conversion means F63. Here, when the CPU c4 of the host computer h4 reads and executes the address conversion program D63 of the storage device m4, the address conversion means F63 operates on the CPU c4 as a virtual function means.
[0095]
The workflow engine shown in FIG. 8 is programmed by OOP and has a class structure that inherits functions from a superclass to a plurality of subclasses F27a and F27b. Since the individual workflow engine subclasses F27a and F27b exist in a distributed manner for each processor, they have communication functions F67a and F67b for accessing each other.
[0096]
The address conversion means F63 of the second embodiment is particularly characterized in that it includes a communication function F67t. Therefore, the address conversion unit F63 and the plurality of workflow engine subclasses F27a and F27b can access each other by communication.
[0097]
As is well known, the address conversion means F63 is a functional module that converts a general destination name indicating a position in the organization such as a section manager or a department manager into a specific destination name such as a processor name. The address conversion means F63 refers to the organization / role data D65 as in the conventional configuration. For example, when performing workflow processing for approval of equipment purchase, since the approval route is often determined by job title, a destination name is designated by job title in advance. Therefore, even if a processor in a position along the approval route is changed to another processor due to personnel changes or the like, the destination is dynamically determined, so there is no need to change the approval route, that is, the destination name.
[0098]
Here, a flow of determining a specific destination name from a general destination name by the address conversion means 63 will be described with reference to FIG.
[0099]
When the processor of the activity defined in the flow definition code is described with a general destination name, the workflow engine subclass F27a first checks the name of the workflow engine subclass that started the workflow processing, that is, the processor. Next, the workflow engine subclass F27a transmits the general destination name and the initiator name to the address conversion unit F63 by performing network communication with the address conversion unit F63 via the communication functions F67a and F67t.
[0100]
At this time, the address conversion means 63 recognizes the role (belonging department or job title) in the organization of the initiator from the name of the initiator of the workflow process being executed, and the next from the role of the initiator and the general destination name. Find the name of the processor responsible for the activity. Then, the workflow engine subclass name is obtained from the next processor name, and the workflow engine subclass name that should process the next activity is transmitted to the workflow engine subclass F27a. Thereafter, the workflow engine subclass F27b that should process the next activity is activated.
[0101]
As described above, in the second embodiment, the workflow engine is distributed to different host computers h3 and h4 as a plurality of workflow engine subclasses F27a and F27b having a hierarchical structure as shown in FIG. The conversion unit F63 has a communication function. That is, the workflow engine subclass F27a operates on the host computer h2, the workflow engine subclass F27b operates on the host computer h3, and the address conversion means F63 operates on the host computer h4. As described above, even if the address conversion unit F63 and the workflow engine subclasses F27a and F27b exist in different host computers, the address conversion unit F63 has the communication function F67t. Therefore, the address conversion unit F63 includes the workflow engine subclasses F27a and F27b. Can communicate with each other. Therefore, the address conversion means F63 can be moved to an arbitrary host computer. That is, it is not necessary to provide the address conversion means F63 on the same host as the workflow engine as in the prior art.
[0102]
Therefore, the burden on the host computer including the address conversion means can be reduced and the possibility of system down can be reduced. Even when the host computer including the address conversion means goes down, the workflow process can be continued by moving the address conversion means to another host computer.
[0103]
【The invention's effect】
  As is apparent from the above description, according to the workflow management system of the present invention, when defining the process of the workflow processing, the process definition information input by the drafter includes the part related to the flow definition and the object definition by the identification means. Are separated by the flow definition code generation means and the object definition code generation means. Therefore, when the workflow process is performed, it is not necessary to modify the process definition data itself even when the processing content and the order of activities in each activity are changed. In other words, if you want to change only the processing contents in each activity, you need to modify only the object definition code. If you want to change the order of activities (change of the person who performs the activity), modify only the flow definition code. That's fine. Therefore, the process can be changed efficiently and easily.
  Furthermore, according to the workflow management system of the present invention, the program storage unit stores a plurality of programs that provide basic functions used for workflow processing, classified for each function. Therefore, only necessary functions can be read without reading unnecessary functions. Therefore, the memory occupied by the object definition code, flow definition code, and workflow engine code generated from the basic function providing program can be reduced.
Furthermore, according to the workflow management system of the present invention, for example, when generating the object definition code and the flow definition code in a plurality of steps, the drafter first inputs the processing content common to each activity, Next, what is necessary is just to input the processing content peculiar to each activity. As a result, the workflow management system generates a code that defines processing content common to each activity as an object definition basic code, and generates a code that defines processing content unique to each activity as an object definition extension code. Then, the workflow management system adds the generated object definition extension code to the object definition basic code. Thereby, the workflow management system can generate the object definition code. Therefore, according to the workflow management system of the present invention, when the object definition code and the flow definition code are generated in a plurality of steps, the drafter has a process content common to each activity and a process content unique to each activity. The object definition code can be generated simply by entering.
[0104]
Further, according to the code generator of the present invention, after the identification means separates the process definition information into the object definition information and the flow definition information, the object definition code is generated from the object definition information, and the flow definition code is generated from the flow definition information. Is generated. Therefore, the object definition code is corrected when only the processing content in each process is to be changed, and the flow definition code is corrected when only the processing order of the process is to be changed. Therefore, the process can be changed efficiently and easily.
[0105]
Further, according to the invention of the method for changing a process of workflow processing, only the processing content of each process is changed to change the process of workflow processing for generating an object definition code and a flow definition code from process definition information. In this case, only the object definition code is modified. When only the process processing order is changed, only the flow definition code is modified. Therefore, according to this process changing method, either of the object definition code or the flow definition code that exists independently of each other, regardless of whether it is desired to change only the processing contents in each step or only the processing order of the steps. This can be dealt with by correcting Therefore, the process can be changed efficiently and easily.
[Brief description of the drawings]
FIG. 1 is a block diagram schematically showing a mutual relationship between functional units of a workflow management system according to a first embodiment.
FIG. 2 is a diagram schematically showing a usage form of hardware resources by each functional unit, taking as an example a case where each functional unit in FIG. 1 is operated by one host computer;
FIG. 3 is a diagram schematically showing a specific functional configuration of the workflow management system of FIG. 1;
4 is a diagram illustrating an example of a network system that operates each functional unit of the workflow management system of FIG. 3;
FIG. 5 is an example of a process definition script for specific workflow processing.
FIG. 6 is a diagram showing a part of object definition code generated as source program code.
FIG. 7 is a diagram showing a part of a flow definition code generated as source program code.
FIG. 8 is a block diagram schematically and schematically showing each functional unit of a network system that operates the workflow management system according to the second embodiment.
FIG. 9 is a block diagram showing a configuration of a conventional workflow management system.
[Explanation of symbols]
11, 41: Workflow management system
F13: Identification means
D13: Identification program
F15: Object definition code generation means
D15: Object definition code generation program
F17: Flow definition code generation means
D17: Flow definition code generation program
F19: Workflow engine code generation means
D19: Workflow engine code generation program
21: Program storage unit
D22: Basic function providing program
D23: Process definition information
D23a: Object definition information
D23b: Flow definition information
24: The drafter
D25a, D47a: Object definition code
D25b, D47b: Flow definition code
D27: Workflow engine code
F27a, F27b: Workflow engine subclass
D27a, D27b: Workflow engine subclass code
D27s: Workflow engine super class code
D27t: Other super class code
F28: Code generator
31a, 31b: processor
D43: Process definition script
D43a: Object definition script
D43b: Flow definition script
F45: Script identification means
D52: Class library
D53a, D53b: Work list
F55a, F55b: Worklist handler
D57: Client application
F63: Address conversion means
D63: Address conversion program
D65: Organization / role data
F67a, F67b, F67t: Communication function

Claims (4)

複数の計算機を有するネットワークシステムで、一連かつ複数の工程からなるワークフロー処理を、各工程における処理内容およびそれら工程の順序に関するプロセス定義情報に基づいて、各工程毎に行うワークフロー管理システムにおいて、
前記プロセス定義情報から、各工程における処理内容に関するオブジェクト定義情報と、工程の順序に関するフロー定義情報とを識別する識別手段と、
前記ワークフロー処理に用いる基本的な機能を提供する複数のプログラムを各機能毎に区分して格納してあるプログラム格納部と、
識別された前記オブジェクト定義情報を解釈して該解釈に応じた前記プログラムを前記プログラム格納部から読み出すことにより、該読み出されたプログラムに基づいて各工程における処理内容に関するコードであるオブジェクト定義コードを生成するオブジェクト定義コード生成手段と、
前記フロー定義情報を解釈して該解釈に応じた前記プログラムを前記プログラム格納部から読み出すことにより、該読み出されたプログラムに基づいて各工程の順序に関するコードであるフロー定義コードを生成するフロー定義コード生成手段と、
前記オブジェクト定義コード生成手段によって生成された前記オブジェクト定義コードおよび前記フロー定義コード生成手段によって生成された前記フロー定義コードを、高水準言語のコードで保存する定義コード保存手段と、
前記定義コード保存手段から前記高水準言語のコードで保存された前記オブジェクト定義コードおよび前記フロー定義コードを読み出して解釈し、該解釈に応じた前記プログラムを前記プログラム格納部から読み出すことにより、該読み出されたプログラムに基づいてワークフローエンジンコードを生成するワークフローエンジンコード生成手段と、
前記ワークフローエンジンコード生成手段により生成された前記ワークフローエンジンコードにより、前記ワークフロー処理を制御するワークフローエンジンと
を具えることを特徴とするワークフロー管理システム。
In a workflow management system that performs workflow processing consisting of a series of processes in a network system having a plurality of computers for each process based on process definition information in each process and the order of those processes,
Identification means for identifying object definition information related to processing contents in each step and flow definition information related to the order of steps from the process definition information;
A program storage unit that stores a plurality of programs that provide basic functions used in the workflow processing, divided for each function ;
By interpreting the identified object definition information and reading out the program corresponding to the interpretation from the program storage unit, an object definition code which is a code related to processing contents in each step based on the read program An object definition code generation means for generating;
A flow definition that interprets the flow definition information and reads the program according to the interpretation from the program storage unit to generate a flow definition code that is a code related to the order of each process based on the read program Code generation means;
Definition code storage means for storing the object definition code generated by the object definition code generation means and the flow definition code generated by the flow definition code generation means in a high-level language code;
Reading the object definition code and the flow definition code stored in the high-level language code from the definition code storage means and interpreting them, and reading the program according to the interpretation from the program storage unit, Workflow engine code generation means for generating a workflow engine code based on the issued program;
A workflow management system comprising: a workflow engine that controls the workflow processing based on the workflow engine code generated by the workflow engine code generation means .
請求項1に記載のワークフロー管理システムにおいて、The workflow management system according to claim 1,
前記ワークフローエンジンコード生成手段は、  The workflow engine code generation means includes
生成した前記ワークフローエンジンコードをバイトコードに変換して、該変換したバイトコードをソースプログラムとして前記定義コード保存手段に保存するとともに、  Converting the generated workflow engine code into byte code, storing the converted byte code as a source program in the definition code storage means,
前記定義コード保存手段に前記高水準言語のコードで保存された前記オブジェクト定義コード或いは前記フロー定義コードが修正された場合に、前記定義コード保存手段から該修正された定義コードを読み出して、該修正された定義コードに基づいて新たなオブジェクト定義コード或いはフロー定義コードを作成し、該作成した新たなオブジェクト定義コード或いはフロー定義コードをバイトコードに変換して、該変換したバイトコードを、前記定義コード保存手段に保存された修正前のソースプログラムのバイトコードと置換する  When the object definition code or the flow definition code stored in the high-level language code is modified in the definition code storage unit, the modified definition code is read from the definition code storage unit and the modification is performed. A new object definition code or flow definition code is created based on the defined definition code, the created new object definition code or flow definition code is converted into a byte code, and the converted byte code is converted into the definition code. Replace with the source code bytecode stored in the storage before modification
ことを特徴とするワークフロー管理システム。A workflow management system characterized by this.
請求項1または2に記載のワークフロー管理システムにおいて、
前記ワークフローエンジンが上位階層から複数の下位階層に機能を継承する階層構造を有し、かつ、個々の前記下位階層のワークフローエンジンは相互にアクセスする通信機能を有することを特徴とするワークフロー管理システム。
In the workflow management system according to claim 1 or 2 ,
A workflow management system, wherein the workflow engine has a hierarchical structure in which functions are inherited from an upper hierarchy to a plurality of lower hierarchies, and each of the workflow engines in the lower hierarchy has a communication function for accessing each other.
請求項に記載のワークフロー管理システムにおいて、
前記フロー定義コードに一般的な宛先名を予め定義する場合、該一般的宛先名から具体的宛先名を生成する宛名変換手段を更に具えており、および、
前記宛名変換手段が、前記下位階層のワークフローエンジンと相互にアクセスする通信機能を有することを特徴とするワークフロー管理システム。
The workflow management system according to claim 3 ,
In the case where a general destination name is defined in advance in the flow definition code, further comprising address conversion means for generating a specific destination name from the general destination name, and
The workflow management system, wherein the address conversion means has a communication function for mutual access to the workflow engine in the lower hierarchy.
JP17952099A 1999-06-25 1999-06-25 Workflow management system Expired - Fee Related JP3767666B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17952099A JP3767666B2 (en) 1999-06-25 1999-06-25 Workflow management system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17952099A JP3767666B2 (en) 1999-06-25 1999-06-25 Workflow management system

Publications (2)

Publication Number Publication Date
JP2001005680A JP2001005680A (en) 2001-01-12
JP3767666B2 true JP3767666B2 (en) 2006-04-19

Family

ID=16067221

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17952099A Expired - Fee Related JP3767666B2 (en) 1999-06-25 1999-06-25 Workflow management system

Country Status (1)

Country Link
JP (1) JP3767666B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102893279A (en) * 2010-12-21 2013-01-23 Ips株式会社 Database, data-management server, and data-management program

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1573483A4 (en) 2002-10-17 2006-10-11 Knowledge It Corp Virtual knowledge management system
US7565640B2 (en) * 2004-10-01 2009-07-21 Microsoft Corporation Framework for seamlessly authoring and editing workflows at design and runtime
JP5048537B2 (en) * 2008-01-29 2012-10-17 株式会社野村総合研究所 Workflow processing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102893279A (en) * 2010-12-21 2013-01-23 Ips株式会社 Database, data-management server, and data-management program

Also Published As

Publication number Publication date
JP2001005680A (en) 2001-01-12

Similar Documents

Publication Publication Date Title
US6298353B1 (en) Checking serialization compatibility between versions of java classes
US6968540B2 (en) Software instrumentation method and apparatus
JP6592009B2 (en) Structure identification of dynamically generated pattern base classes
US6260187B1 (en) System for modifying object oriented code
US6381738B1 (en) Method for optimizing creation and destruction of objects in computer programs
US5675804A (en) System and method for enabling a compiled computer program to invoke an interpretive computer program
US8434099B2 (en) Efficient linking and loading for late binding and platform retargeting
US9690604B2 (en) Language-based model for asynchronous operations
JP4562918B2 (en) Compiling program generation for an interpretive runtime environment
US5872977A (en) Object-oriented method and apparatus for creating a makefile
US6314445B1 (en) Native function calling
US20030033441A1 (en) Highly componentized system architecture with a demand-loading namespace and programming model
US9417931B2 (en) Unified metadata for external components
EP0778521B1 (en) System and method for runtime optimization of private variable function calls in a secure interpreter
JP2003526827A (en) System and method for compressing software code
JPH05216692A (en) Method and system for controlling program execution
JP2000347871A (en) Automatic stub/adapter generator
WO1999004346A1 (en) Method and apparatus for enforcement of behavior of application processing systems without modifying application processing systems
JP7394211B2 (en) Methods, devices, equipment, and media for parallel execution of smart contracts
JPH0635709A (en) Object class specifying device, widget and realizing method thereof
US8200938B2 (en) Computer system and method providing a memory buffer for use with native and platform-independent software code
EP0784264B1 (en) A computer-implemented process for determining a minimum code set for an executable application in a data processing system
US20040083467A1 (en) System and method for executing intermediate code
US7219341B2 (en) Code analysis for selective runtime data processing
EP1280051A1 (en) Information processing method and system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060124

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120210

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130210

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees