(57)【特許請求の範囲】
【請求項１】
少なくとも一つの遷移対象物、当該遷移対象物と関連付けられた複数のステータス、当該複数のステータスの各々と関連付けられた、当該遷移対象物の状態遷移を引き起こす少なくとも一つの主体、当該主体に関連付けられた、前記主体が引き起こすイベント、および、当該イベントと一意的に関連付けられた、遷移対象物の次のステータスの項目を含む、ルーティング定義構造体を利用して、その状態が遷移する遷移対象物の一連の状態遷移を定義してフローを表現し、当該遷移対象物のフロー中の状態を遷移させるフロー構築支援システムであって、
前記ルーティング定義構造体における、前記遷移対象物、ステータス、主体、イベントおよび次のステータスの項目うち、必要な項目に値を与えるとともに、前記遷移対象物の現在のステータスを設定する構造体定義手段と、
少なくとも、主体およびイベントの値を含む状態遷移コマンドの受理に応答して、前記遷移対象物の現在のステータスから、前記ルーティング定義構造体の関連付けを辿ることにより、当該遷移対象物の次のステータスを取得する状態遷移手段と、
前記遷移対象物の現在のステータスを更新するステータス更新手段と、を備え、
前記状態遷移手段が、ルーティング定義構造体中のステータスのうち、現在のステータスと一致するものをカレントとして設定し、当該カレントとして設定されたステータスに関連付けられた主体のうち、前記イベントを引き起こした主体を検索し、検索により見出された主体にカレントを移動し、カレントとして設定された主体に関連付けられたイベントのうち、引き起こされたイベントを検索し、検索により見出されたイベントにカレントを移動し、前記カレントとして設定されたイベントに一意的に関連付けられた次のステータスを特定するように構成されたことを特徴とするフロー構築支援システム。
【請求項２】
前記状態遷移手段が、前記主体を検索した結果、主体が見出されない場合に、当該カレントのステータスを関連付けている上位のステータスを検索し、検索により見出された上位のステータスに関連付けられた主体を検索するように構成されたことを特徴とする請求項１に記載のフロー構築支援システム。
【請求項３】
前記ルーティング定義構造体が、上位から下位に向かって、遷移対象物、ステータス、主体、イベントおよび次のステータスの順に配置されたツリー構造を有することを特徴とする請求項１または２に記載のフロー構築支援システム。
【請求項４】
前記ルーティング定義構造体が、上記関連付けを保持した、遷移対象物、ステータス、主体、イベントおよび次のステータスの項目からなるテーブルであることを特徴とする請求項１または２に記載のフロー構築支援システム。
【請求項５】
前記ルーティング定義構造体において、前記ステータスの下位に、ステータスが配置可能であることを特徴とする請求項１ないし４の何れか一項に記載のフロー構築支援システム。
【請求項６】
少なくとも一つの遷移対象物、当該遷移対象物と関連付けられた複数のステータス、当該複数のステータスの各々と関連付けられた、当該遷移対象物の状態遷移を引き起こす少なくとも一つの主体、当該主体に関連付けられた、前記主体が引き起こすイベント、および、当該イベントと一意的に関連付けられた、遷移対象物の次のステータスの項目を含む、ルーティング定義構造体を利用して、遷移対象物の一連の状態遷移を定義してフローを表現し、当該遷移対象物のフロー中の状態を遷移させるアクティビティを、コンピュータに実行させるフロー構築支援プログラムであって、
前記ルーティング定義構造体における、前記遷移対象物、ステータス、主体、イベントおよび次のステータスの項目うち、必要な項目に値を与えるステップと、
当該遷移対象物の現在のステータスを保持するステップと、
少なくとも、主体およびイベントの値を含む状態遷移コマンドの受理に応答して、前記遷移対象物の現在のステータスから、前記ルーティング定義構造体の関連付けを辿ることにより、当該遷移対象物の次のステータスを取得するステップと、
前記遷移対象物の現在のステータスを更新するステップと、をコンピュータに実行させ、
前記次のステータスを取得するステップが、
前記ルーティング定義構造体中のステータスのうち、現在のステータスと一致するものをカレントとして設定するステップと、
前記カレントとして設定されたステータスに関連付けられた主体のうち、前記イベントを引き起こした主体を検索するステップと、
検索により見出された主体にカレントを移動するステップと、
前記カレントとして設定された主体に関連付けられたイベントのうち、引き起こされたイベントを検索するステップと、
検索により見出されたイベントにカレントを移動するステップと、
前記カレントとして設定されたイベントに一意的に関連付けられた次のステータスを特定するステップと、を有することを特徴とするフロー構築支援プログラム。
【請求項７】
前記ルーティング定義構造体において、必要な項目に値を与えるステップが、
値設定対象となるカレントを指定するステップと、
カレントに値を与えるステップと、を有することを特徴とする請求項６に記載のフロー構築支援プログラム。
【請求項８】
前記主体を検索するステップが、
主体が見出されない場合に、当該カレントのステータスを関連付けている上位のステータスを検索するステップと、
前記検索により見出された上位のステータスに関連付けられた主体を検索するステップと、を有することを特徴とする請求項６または７に記載のフロー構築支援プログラム。
【発明の詳細な説明】
【０００１】
【産業上の技術分野】
本発明は、ものの流れ、つまり、フローを伴うシステムを構築する際に、当該システム構築を支援する手法に関する。
【０００２】
【従来の技術】
フローを伴うシステムを構築する際には、システムの特定に応じて、個別のルーティングエンジンを構築するのが通常の開発手法となっている。たとえば、特開平１０−１１１８８８号には、どの部門を通過して業務処理を行うかを示す主ワークフローおよび各部門内の業務処理の流れを定めるサブワークフローを定義して、部門内の業務処理の変更についてはサブワークフローの変更で足りるように構成されたシステムが開示されている。また、特開平１０−２６９３０２号には、複数のワークフロー・パッケージが相互に参照可能な相互参照テーブルを設け、部分的な処理手順の変更については相互参照テーブルの変更によって対処し、ワークフロー・パッケージの情報処理手順を示すシナリオ等を含む制御情報をデータベースに記憶し、必要に応じてデータベース中の制御情報を変更するように構成されたシステムが開示されている。
【０００３】
【課題を解決するための手段】
これらシステムにおいては、業務処理の部分的な変更について、過大な労力を伴うことなく対応できる。しかしながら、複雑な構造（たとえば、主ワークフローおよびサブワークフローを用いていること）をとっていることから、抜本的な業務処理の変更に対して、そのフローを構築するために極めて多くの労力を必要とする。
また、上記システムにおいては、業務処理の制御は可能であるが、これを他の用途、たとえば、人事における採用フロー、伝票管理フロー等に転用することは極めて困難である。
【０００４】
本発明は、種々の遷移対象物のフローを単純な構造にて表現でき、かつ、その変更などに対して柔軟なシステムを提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明の目的は、その状態が遷移する遷移対象物の一連の状態遷移を定義してフローを表現し、当該遷移対象物のフロー中の状態を遷移させるフロー構築支援方法であって、少なくとも一つの遷移対象物、当該遷移対象物と関連付けられた複数のステータス、当該複数のステータスの各々と関連付けられた、当該遷移対象物の状態遷移を引き起こす少なくとも一つの主体、当該主体に関連付けられた、前記主体が引き起こすイベント、および、当該イベントと一意的に関連付けられた、遷移対象物の次のステータスの項目を含む、ルーティグ定義構造体を保持するステップと、前記ルーティング定義構造体における、前記遷移対象物、ステータス、主体、イベントおよび次のステータスの項目うち、必要な項目に値を与えるステップと、当該遷移対象物の現在のステータスを保持するステップと、少なくとも、主体およびイベントの値を含む状態遷移コマンドの受理に応答して、前記遷移対象物の現在のステータスから、前記ルーティグ構造体の関連付けを辿ることにより、当該遷移対象物の次のステータスを取得するステップと、前記遷移対象物の現在のステータスを更新するステップとを備えたことを特徴とするフロー構築支援方法により達成される。
【０００６】
本発明によれば、汎用のルーティング定義構造体において、実際の遷移対象物（たとえば、文書、伝票、採用応募者など）の状態遷移にしたがって、値を設定することで、特定の遷移対象物に関するフローを表現することが可能となる。
また、その変更においても、ルーティング定義構造体中の所定の項目を指定し、その値を変更することにより実現できる。さらに、新規な遷移対象物に関するフローが必要な場合に、これが、存在する遷移対象物に関するフローと同一或いは類似する場合には、これをコピーし或いはこれに加えて必要な部分に変更を加えることで、必要なフローを定義することが可能となる。
【０００７】
好ましい実施態様においては、前記ルーティング定義構造体が、上位から下位に向かって、遷移対象物、ステータス、主体、イベントおよび次のステータスの順に配置されたツリー構造を有する。たとえば、遷移対象物に複数のステータスがあり、かつ、各々のステータスに複数の主体等が存在する場合であっても、ルーティング定義構造体の構造を複雑化することを防止できる。
無論、ルーティング定義構造体は、関連付けを保持した、遷移対象物、ステータス、主体、イベントおよび次のステータスの項目からなるテーブルであっても良い。
【０００８】
より好ましい実施態様においては、ルーティング定義構造体において、前記ステータスの下位に、ステータスが配置可能である。これにより、複雑な状態遷移、たとえば、文書の稟議中に、いくつかの段階がある場合などを表現することが可能となる。
【０００９】
本発明の好ましい実施態様においては、ルーティング定義構造体において、必要な項目に値を与えるステップが、値設定対象となるカレントを指定するステップと、カレントに値を与えるステップとを備えている。
本発明の別の好ましい実施態様において、次のステータスを取得するステップは、ルーティング定義構造体中のステータスのうち、現在のステータスと一致するものをカレントとして設定するステップと、前記カレントとして設定されたステータスに関連付けられた主体のうち、前記イベントを引き起こした主体を検索するステップと、検索により見出された主体にカレントを移動するステップと、カレントとして設定された主体に関連付けられたイベントのうち、引き起こされたイベントを検索するステップと、検索により見出されたイベントにカレントを移動するステップと、前記カレントとして設定されたイベントに一意的に関連付けられた次のステータスを特定するステップとを有する。
【００１０】
さらに、前記主体を検索するステップにおいて、主体が見出されない場合に、当該カレントのステータスを関連付けている上位のステータスを検索するステップと、検索により見出された上位のステータスに関連付けられた主体を検索するステップとを有するのが望ましい。
【００１１】
また、本発明の目的は、少なくとも一つの遷移対象物、当該遷移対象物と関連付けられた複数のステータス、当該複数のステータスの各々と関連付けられた、当該遷移対象物の状態遷移を引き起こす少なくとも一つの主体、当該主体に関連付けられた、前記主体が引き起こすイベント、および、当該イベントと一意的に関連付けられた、遷移対象物の次のステータスの項目を含む、ルーティグ定義構造体を利用して、その状態が遷移する遷移対象物の一連の状態遷移を定義してフローを表現し、当該遷移対象物のフロー中の状態を遷移させるフロー構築支援システムであって、前記ルーティング定義構造体における、前記遷移対象物、ステータス、主体、イベントおよび次のステータスの項目うち、必要な項目に値を与えるとともに、前記遷移対象物の現在のステータスを設定する構造体定義手段と、少なくとも、主体およびイベントの値を含む状態遷移コマンドの受理に応答して、前記遷移対象物の現在のステータスから、前記ルーティグ構造体の関連付けを辿ることにより、当該遷移対象物の次のステータスを取得する状態遷移手段と、前記遷移対象物の現在のステータスを更新するステータス更新手段とを備えたことを特徴とするフロー構築支援システムによっても達成される。
【００１２】
さらに、本発明の目的は、上記フロー構築支援システムにおいて利用されるルーティング定義構造体によっても達成される。この構造体は、ツリー構造であっても良いし、テーブルであっても良い。
すなわち、本発明によれば、ルーティングエンジンとは別途に、フロー定義構造体を用意し、この構造体において項目に値を与えることで、当該ルーティングエンジンを、特定の遷移対象物のためのものにカスタマイズすることが可能となる。
【００１３】
また、本発明の目的は、少なくとも一つの遷移対象物、当該遷移対象物と関連付けられた複数のステータス、当該複数のステータスの各々と関連付けられた、当該遷移対象物の状態遷移を引き起こす少なくとも一つの主体、当該主体に関連付けられた、前記主体が引き起こすイベント、および、当該イベントと一意的に関連付けられた、遷移対象物の次のステータスの項目を含む、ルーティグ定義構造体を利用して、遷移対象物の一連の状態遷移を定義してフローを表現し、当該遷移対象物のフロー中の状態を遷移させるアクティビティを、コンピュータに実行させるフロー構築支援プログラムであって、前記ルーティング定義構造体における、前記遷移対象物、ステータス、主体、イベントおよび次のステータスの項目うち、必要な項目に値を与えるステップと、当該遷移対象物の現在のステータスを保持するステップと、少なくとも、主体およびイベントの値を含む状態遷移コマンドの受理に応答して、前記遷移対象物の現在のステータスから、前記ルーティグ構造体の関連付けを辿ることにより、当該遷移対象物の次のステータスを取得するステップと、前記遷移対象物の現在のステータスを更新するステップとをコンピュータに実行させるフロー構築支援プログラムによっても達成される。
【００１４】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施の形態につき説明を加える。図１は、本発明の実施の形態にかかるフロー構築支援システムの構成を示すブロックダイヤグラムである。図１に示すように、本実施の形態にかかるフロー構築支援システム１０は、キーボードやマウスなどの入力装置１４と、ＣＲＴやＬＣＤなどの表示装置１６と、ユーザインタフェース１８と、ユーザの入力装置１４により投入されたコマンドに応答して、必要な処理を実行する処理装置２０と、種々のデータを記憶するデータベース２２とを備えている。処理装置２０は、ものの流れ（フロー）を表現するツリーを定義し、或いは、定義されたツリーに投入されたコマンドに対して所定の処理を実行するツリー定義部２４と、ユーザの入力したコマンドを受け付けて必要な処理を実行するコマンド受付処理部２６と、入力されたコマンドのうち、ツリーを構築するためのコマンドである定義コマンドを解析して、必要な情報をツリー定義部２４に与える定義コマンド解析部２８と、入力されたコマンドのうち、ツリーにおける各種状態を定義し或いは変更するためのコマンドである状態コマンドを解釈して、必要な状態をツリー定義部２４に与える状態コマンド解析部３０とを有している。
【００１５】
このようなフロー構築システム１０は、図２に示すように、入力装置１４、表示装置１６、ハードディスク装置２２、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ４３などの可搬記憶媒体４３をアクセスする可搬記憶媒体ドライバ４２、ＲＯＭ４４、ＲＡＭ４６および外部ネットワークとの通信を制御する通信Ｉ／Ｆ４８を備えたパーソナルコンピュータにより実現することができる。
【００１６】
このように構成されたツリー構築支援システム１０にて構築されるフローを表現するツリーなどにつき説明を加える。図３は、本実施の形態にかかるフロー構築の原理を説明するための状態遷移図である。図３（ａ）に示すように、ものの流れには、フローするもの（本明細書において、「遷移対象物」と称する）、たとえば、文書や求人の応募者が存在し、遷移対象物の状態およびその状態を引き起こすイベントが存在する。たとえば、初期状態として状態１（符号３０２参照）や状態２（符号３０３参照）、或いは、遷移対象物が位置している状態３（符号３０１参照）などが定義される。図３（ａ）においては、このような遷移対象物の状態をノード３０１〜３０６として表している。なお、本明細書において、「状態」を場合によって「ステータス」と称する。
【００１７】
また、その間の遷移、たとえば、状態１においてある主体Ａがあるイベントである動作１を行うことにより、状態２に遷移し、状態２においては、主体Ｂがある動作２を行うことにより、状態２（符号３０４参照）に遷移する一方、主体Ｃがある動作３を行うことにより、状態３（符号３０１参照）に遷移するようになっている。図３（ａ）においては、ノード３０１〜３０６を結ぶリンクとして表している。リンクにおける矢印がイベントが生じて遷移する方向を示している。
【００１８】
図３（ｂ）は、上記状態遷移図を表にして表したものである。図３（ｂ）に示すように、上記状態、イベントおよび状態の遷移は、状態（符号３３１参照）、イベントを引き起こす主体（符号３４１参照）、イベントの動作（符号３５１参照）および次の状態（符号３６１）という項目を含む。さらに、これに加えて現在の状態が把握されていれば良い。たとえば、符号３１１にて示す欄は、状態１（図３（ａ）の符号３０２参照）では、主体Ａが動作１をなすことにより、状態２に変わりうることを示している。符号３１２にて示す欄は、状態２（図３（ａ）の符号３０３参照）では、主体Ｂが動作２をなすことにより、状態４に遷移し、或いは、主体Ｃが動作３をなすことにより、状態３に遷移することを意味している。他の欄３１３、３１４の記述も、同様に、その状態から、ある主体がある動作をなすことにより、次の状態に遷移することを意味している。
【００１９】
図４は、本実施の形態にて利用されるツリー構造を示す図である。本実施の形態においては、上記状態遷移図や表にて表される状態、イベントおよび状態の遷移等を、一定のツリー構造にて表している。さらに、本実施の形態においては、実際のフローに合致するようにツリーを作成し、ツリー中を遷移対象物が移動させて、当該遷移対象物の状態等を把握できるようにしている。
【００２０】
図４において、フローするもの（遷移対象物）には、当該遷移対象物の現在の状態が定義されるようになっている。また、フローするもの（遷移対象物）の下位レベルには、状態が定義される（符号４１１参照）。これは、図３（ｂ）における項目３３１に対応する。さらに、状態の下位レベル（符号４２１参照）には、イベントを引き起こす主体が定義される。さらにその下位には、上位に位置する主体が引き起こすイベント（動作）が定義される（符号４３１参照）。さらにその下位には、イベントが引き起こされることにより、遷移対象物が遷移する次の状態が定義される（符号４４１参照）。
【００２１】
図４において、「状態１」、「Ａ」、「動作１」および「状態２」からなるトラック（符号４０１）は、図３（ｂ）の欄３１１に対応する。また、「状態２」、「Ｂ」、「動作２」および「状態４」からなるトラック（符号４０２−１）並びに「状態２」、「Ｃ」、「動作３」および「動作３」からなるトラック（符号４０２−２）は、図３（ｂ）の欄３１２に対応する。同様に、トラック４０３は、図３（ｂ）の欄３１３に対応し、トラック４０４−１および４０４−２は、図３（ｂ）の欄３１４に対応する。このように、フローするもの（遷移対象物）に、当該遷移対象物の現在の状態を関連付けて定義するとともに、上位から下位に向かって、状態、イベントの主体、イベントの内容、次の状態を定義したツリーを得ることで、種々のフローを表現することが可能となる。
【００２２】
図５は、本実施の形態において利用される汎用のツリー構造体を示す図である。すなわち、本実施の形態においては、以下に述べる項目を所定の順序で配置したツリー構造体（ルーティング定義構造体）を用いて、各項目に所定の値（名称や数値）を割り当てることで、特定の用途に利用できる、定義されたツリーを作成するようになっている。
【００２３】
上記ツリー構造体（ルーティング定義構造体）においては、幾つかの分岐点を有するフロー全体を川にたとえ、これを「ｒｉｖｅｒ（リバー）」と称する。また、イベント（ｅｖｅｎｔ）によってルートが決定されていくオブジェクトを、起きた波（イベントを引き起こす主体）の方向に自ずと流れていくゴム製のアヒル（rubber duckie）に喩えて、「ｄｕｃｋｉｅ（ダッキー）」と称する。また、上記イベントを引き起こす主体は、波に喩えて、これを「ｗａｖｅ（ウェイブ）」と称している。
【００２４】
図５に示すように、「ｒｉｖｅｒ（リバー）」の下位に、遷移対象物である「ｄｕｃｋｉｅ（ダッキー）」が位置している。「ｒｉｖｅｒ（リバー）」の下位には、必要な数の「ｄｕｃｋｉｅ」を定義することができる。
この「ｄｕｃｋｉｅ（ダッキー）」に関連付けられて、「ｎｏｗ（ナウ）」つまりダッキーの現在のステータス（状態）、および、起こりうる種々の「ｓｔａｔｕｓ（ステータス）」が、その下位に配置される。「ｓｔａｔｕｓ（ステータス）」は、「ｄｕｃｋｉｅ（ダッキー）」に対して複数配置される。これは、「ｄｕｃｋｉｅ（ダッキー）」のステータス（状態）が遷移するには、少なくとも複数の「ｓｔａｔｕｓ（ステータス）」が必要だからである。
【００２５】
「ｓｔａｔｕｓ（ステータス）」の下位には、基本的には、当該ステータスにおいて引き起こされるイベントを生じさせる「ｗａｖｅ（ウェイブ）」が配置される。また、「ｗａｖｅ」のほか、当該ステータス内のステータスが配置できるようにもなっている。これについては、後に詳述する。「ｓｔａｔｕｓ（ステータス）」の下位にある「ｗａｖｅ（ウェイブ）」や「ｓｔａｔｕｓ（ステータス）」は複数であっても良い。
【００２６】
「ｗａｖｅ（ウェイブ）」の下位には、「ｗａｖｅ（ウェイブ）」が引き起こす「ｅｖｅｎｔ（イベント）」が配置され、各「ｅｖｅｎｔ（イベント）」には、これにより遷移する次のステータス（状態）である「ｎｅｘｔ（ネクスト）」が関連付けられている。「ｗａｖｅ（ウェイブ）」の下位に配置される「ｅｖｅｎｔ（イベント）」は複数存在しても良い。その一方、「ｅｖｅｎｔ（イベント）」と「ｎｅｘｔ（ネクスト）」とは一対一の関係を持っている。
【００２７】
このように、「ｒｉｖｅｒ（リバー）」において、ある「ｄｕｃｋｉｅ（ダッキー）」に関する一連のツリー５０１が定義され得る。このような一連のツリー構造は、ある「ｒｉｖｅｒ（リバー）」に対して複数あっても良い（符号５０２参照）。複数の「ｄｕｃｋｉｅ（ダッキー）」が定義される例についても後述する。
【００２８】
本実施の形態においては、図５に示すルーティング定義構造体において、「ｄｕｃｋｉｅ」、「ｓｔａｔｕｓ」、「ｗａｖｅ」、「ｅｖｅｎｔ」、「ｎｅｘｔ」などに実際のフローにおける種々の対象物や事例を割り当てて、実際のフローに合致したツリーを定義して、これに基づき種々の処理を実行することで、遷移対象物のフローを把握できるようになっている。
【００２９】
本実施の形態において、このようなルーティング構造体に値を割り当てることによるツリーの定義、および、定義されたツリーを利用したフローにおける遷移対象物の状態遷移の処理等につき以下に説明を加える。図６は、本実施の形態におけるフロー構築支援システム１０の処理を概略的に示すフローチャートである。図６に示すように、フロー構築支援システム１０においては、まず、ユーザが入力装置１４を操作して入力するコマンドにしたがって、ルーティング定義構造体に値が割り当てられ、実際のフローに沿って遷移対象物の状態が遷移する様子が定義される（ステップ６０１）。これらは、処理部２０のコマンド受付処理部２６、定義コマンド解析部２８およびツリー定義部２４にて実行される。次いで、遷移対象物のスタート時のステータスが設定されると（ステップ６０２）、イベントにより遷移対象物のステータスを遷移できる状態となる。
【００３０】
ユーザが入力装置１４を操作して所定のイベントを示すコマンドを入力すると、コマンド受付処理部２６を経て、コマンドが状態コマンド解析部３０に与えられ、さらに、ツリー定義部２４に伝達される（ステップ６０３）。ツリー定義部２４は、与えられたコマンドにしたがって、定義されたツリーを参照して、遷移対象物のステータスを遷移させる処理を実行する（ステップ６０４）。その後に、遷移対象物の、新たなステータスが取得され、表示装置１６の画面上などに表示される（ステップ６０５）。ステップ６０３〜６０５の処理は、処理終了を示すコマンドが与えられるまで繰り返される（ステップ６０６参照）。
図７は、本実施の形態にて用いられるコマンドの例を示す図である。ここで、図７（ａ）に示すものは、主としてツリーを構築するために利用するものであり、図７（ｂ）に示すものは、主として遷移対象物の状態を変更する際に利用される。無論、図７（ａ）に示すものが遷移対象物の状態を変更するためにも利用されるし、その逆もあり得る。
【００３１】
ここで、カレントとは、ツリー中の要素のうち、処理の対象となる要素をいう。図７（ａ）に示すように、本実施の形態においては、ツリーを構築するために、カレントに要素（たとえば、「ｄｕｃｋｉｅ」、「ｓｔａｔｕｓ」など）を追加する「Ａｄｄ」コマンド、カレントの要素を削除する「Ｄｅｌｅｔｅ」コマンド、カレントに値を設定する「Ｓｅｔ」コマンド、カレントの値を取得する「Ｇｅｔ」コマンド、カレントの下位を検索する「Ｆｉｎｄ」コマンド、カレントを上位に移動させる「Ｕｐ」コマンド、カレントを下位に移動させる「Ｄｏｗｎ」コマンドが利用されている（符号７００参照）。また、図７（ｂ）に示すように、上記コマンドのほか、スタート状態を通知する「Ｓｔａｒｔ」コマンド、イベントを通知する「Ｓａｙ」コマンド、現在の状態を取得する「Ｎｏｗ」コマンドを利用することができる（符号７１０参照）。
【００３２】
コマンドには、それぞれ、必要なパラメータが規定されている。たとえば、「Ａｄｄ」コマンドには、パラメータとして、オブジェクトの名称（ｎａｍｅ）およびその値を付加する。たとえば、「Ａｄｄ（ｓｔａｔｕｓ，“状態１”）」というコマンドにより、カレントに「状態１」というステータスを追加することができる。或いは、「Ｆｉｎｄ」コマンドにおいても、オブジェクトの名称およびその値がパラメータとして付加される。たとえば、「Ｆｉｎｄ（ｗａｖｅ，“Ａ”）」というコマンドにより、ツリー上で、カレントより下位にある「Ａ」という「ｗａｖｅ（ウェイブ）」を検索することができる。同様に、「Ｄｏｗｎ」コマンドにおいても、オブジェクトの名称およびその値がパラメータとして付加される。
【００３３】
「Ｓｔａｒｔ」コマンド、「Ｓａｙ」コマンドおよび「Ｎｏｗ」コマンドについても、図７（ｂ）に示すようなパラメータが付加される。なお、正常にコマンドが実行されたか否かを判断するための戻り値が、コマンド実行の際に与えられるようになっている。
【００３４】
ユーザは表示装置１６に表示された、ツリーを示す図形を含むような画像を参照して、所望の位置に所望の情報を入力することができる。ここでは、ユーザインタフェース１８が、ユーザの入力装置１４の操作によるツリー中の位置の指定に応答して、カレントを特定し、かつ、ユーザの入力した情報に基づき、上記ツリー定義コマンドをコマンド受付処理部２６に発行する。コマンド受付処理部２６は、与えられたコマンドが定義コマンドである場合には、これを定義コマンド解析部２８に伝達する。定義コマンド解析部２８は、カレントを特定して、コマンドにしたがってカレントに特定のオブジェクトを加えるなどの処理を施す。これにより、ツリー定義部２４中のツリーが順次形成される。
【００３５】
図８は、図６のステップ６０１の処理の例を示すフローチャートである。たとえば、初期的には、図６（ａ）に示すように、「Ａｄｄ」コマンドによりカレントに要素を追加し（ステップ８０１）、「Ｓｅｔ」コマンドによりカレントに値を設定し（ステップ８０２）、「Ｄｏｗｎ」コマンドによりカレントをツリーの下位に移動させる（ステップ８０３）を繰り返すことにより、ツリー中の「ｄｕｃｋｉｅ」、「ｗａｖｅ」、「ｅｖｅｎｔ」および「ｎｅｘｔ」からなる一連の流れを形成することができる。
【００３６】
また、図６（ｂ）に示すように、たとえば、「Ｆｉｎｄ」コマンドを利用してツリーの下位を検索して（ステップ８１１）、「Ｄｏｗｎ」コマンドにより検索された位置にカレントを移動し（ステップ８１２）、「Ｓｅｔ」コマンドによりカレントに新たに値を設定し（ステップ８１３）、或いは、「Ｄｅｌｅｔｅ」コマンドによりカレントの値を削除する（ステップ８１４）ことにより、ツリーを更新することもできる。このようにして、新たに形成され或いは更新されたツリーは、データベース２２中に記憶され、必要に応じて、ツリー定義部２２により読み出されて、「ｄｕｃｋｉｅ」のステータス遷移の処理などの対象となる。
【００３７】
たとえば、ユーザが表示装置１６の画面上に表示された画像を参照しながら、入力装置１４を操作して、選択した「ｄｕｃｋｉｅ」に対して、主体である「ｗａｖｅ」がどのような「ｅｖｅｎｔ」を生じさせたかを入力する。入力された情報はユーザインタフェースを介してコマンド受付処理部２０に伝達される。
コマンド受付処理部２０は、「Ｓａｙ」コマンドを入力された情報に対応するパラメータとともに状態コマンド解析部３０に与える。状態コマンド解析部３０は、ツリー定義部２４中のツリーを参照して、以下に説明する処理を実行することにより、「ｄｕｃｋｉｅ」のステータスを遷移することができる。
【００３８】
図９は、ステータス遷移処理をより詳細に示すフローチャートである。図９に示すように、まず、ツリー中の現在位置を示すカレントに、処理対象の「ｄｕｃｋｉｅ」の現在位置がセットされる（ステップ９０１）。これは、ツリー中のオブジェクトである「ｎｏｗ（ナウ）」を参照すればよい。次いで、状態コマンド解析部３０は、ツリーを参照して、「ｅｖｅｎｔ（イベント）」を生じさせた主体「ｗａｖｅ（ウェイブ）」を、カレントの下位から検索する（ステップ９０２）。「ｅｖｅｎｔ（イベント）を生じさせた主体が見出された場合には（ステップ９０３でイエス(Yes)）、カレントを、見出された「ｗａｖｅ（ウェイブ）」の位置に移動させる（ステップ９０４）。
【００３９】
次いで、状態コマンド解析部３０は、ツリーを参照して、生じた「ｅｖｅｎｔ（イベント）」をカレントの下位から検索する（ステップ９０８）。「ｅｖｅｎｔ（イベント）」が存在する場合には、カレントを、見出された「ｅｖｅｎｔ（イベント）」に移動する（ステップ９０９）。ツリーにおいて、「ｅｖｅｎｔ（イベント）」の下位には、「ｅｖｅｎｔ（イベント）」が生じた結果である次のステータスである「ｎｅｘｔ（ネクスト）」が配置されている。したがって、当該「ｎｅｘｔ（ネクスト）」を参照することにより、次のステータスを得ることが可能となる（ステップ９１０）。したがって、状態コマンド解析部３０は、ツリー中の現在のステータスである「ｎｏｗ」に、得られた次のステータスをセットする（ステップ９１１）。ツリー定義部２４は、これをデータベース２２に記憶することによりツリーを更新する。なお、ツリーにおいてカレントの下位に「ｅｖｅｎｔ（イベント）」が存在しない場合には（ステップ９０８でノー(No)）、処理が終了する。
【００４０】
カレントの下位に主体である「ｗａｖｅ（ウェイブ）」が存在しなかった場合（ステップ９０３でノー(No)）には、状態コマンド解析部３０は、ツリーにおいてカレントの上位に「ｓｔａｔｕｓ（ステータス）」があるか否かを判断し、存在する場合（ステップ９０５でイエス(Yes)）には、当該「ｓｔａｔｕｓ（ステータス）」の下位を検索して（ステップ９０６）、さらに、主体である「ｗａｖｅ（ウェイブ）」が存在しているか否かを判断する（ステップ９０３）。その一方、上位に「ｓｔａｔｕｓ（ステータス）」が存在していない場合には、処理が終了する。
【００４１】
このようにして、「Ｓａｙ」コマンドが与えられることにより、遷移対象物である「ｄｕｃｋｉｅ」の「ｓｔａｔｕｓ（ステータス）」を変更することができる。
このようなツリーの構築およびツリー中の遷移対象物の状態遷移を利用した例につき以下に説明を加える。
【００４２】
［第１の例］
第１の例では、文書フローを考える。図１０は、文書回議の状態遷移の例を示す図である。ここでは、まず、ステータスとして、「文書作成（符号１００１）」、「稟議中（符号１００３）」、「決裁（符号１０２２）」、「却下（符号１０２１）」などが定義されている。
たとえば、文書が作成されると、これが「申請」というイベント（符号１００２）により、稟議中というステータスとなる。さらに、本実施の形態においては、「稟議中」というステータス中に、さらに細かいステータスである「回議順１（符号１０１１参照）」、「回議順２（符号１０１２参照）」などが定義できるようになっている。これらのステータスの間は「承認」というイベントにて結ばれている。これは、実際の稟議においては、幾多の段階にわたる「承認」が必要であることを表している。
【００４３】
図１１および図１２は、これをツリーにて表した図である。このツリーは、実際の文書のフローにしたがってユーザが、ツリー中のオブジェクトに名称や値を割り当てることにより形成することができる。
図１１および図１２に示すように、ここでは、「ｄｕｃｋｉｅ」には、ある「文書」が該当する。文書については、「作成中」という「ｓｔａｔｕｓ（ステータス）」、「作成中」から「ｗａｖｅ」である「申請者」が「申請」という「ｅｖｅｎｔ（イベント）」を生じさせることにより、文書が「稟議中」というステータスに遷移することがわかる。
【００４４】
また、図１０に応答して、「稟議中」という「ｓｔａｔｕｓ（ステータス）」には（符号１１０１参照）、「ｗａｖｅ」である「申請者」が「取下げ」という「ｅｖｅｎｔ（イベント）」を生じさせるほか、他のステータス、「回議順１（符号１１０２参照）」および「回議順２（符号１２０１参照）」など複数の「ｓｔａｔｕｓ（ステータス）」が配置される。
【００４５】
さらに、この例では、「回議順２」という「ｓｔａｔｕｓ（ステータス）」に関して、複数の「ｓｔａｔｕｓ（ステータス）」、たとえば、符号１２０２参照が配置されている。ここでは、「回議順２」において、協議者である主体ＣおよびＤに関して、「Ｃ、Ｄともに未承認」、「Ｃのみ未承認」および「Ｄのみ未承認」という「ｓｔａｔｕｓ（ステータス）」が定義され、夫々の場合に、他の主体が生じさせる「ｅｖｅｎｔ（イベント）」により文書の「ｓｔａｔｕｓ」が決められるようになっている。図１１および図１２に示すフローでは、回議順１においては、協議者Ａおよび協議者Ｂの双方の承認により回議順２に進めることになっており、その一方、回議順２においては協議者Ｃ或いは協議者Ｄの何れかの承認により回議順３に進むことができるようになっている。
【００４６】
このように構築されたフローに関して、図９に示す処理にしたがって、遷移対象物である「文書１（ｄｕｃｋｉｅ）」の「ｓｔａｔｕｓ（ステータス）」を遷移させる例につき説明する。初期的には、「ｄｕｃｋｉｅ」の現在のステータスを示す「ｎｏｗ」は、「作成中」となっている。ここで、コマンド「Ｓａｙ（“文書１”，“申請者”，“申請”）」が与えられると、カレントとして、フローにおける「作成中」がセットされ（ステップ９０１）、状態コマンド解析部３０が、主体である「申請者」を、当該「作成中」の下位から検索する（ステップ９０２）。
【００４７】
「作成者」の下位には、「申請者」という「ｗａｖｅ」が存在するため、状態コマンド解析部３０は、ここにカレントを移動し（ステップ９０４）、その下位から「申請」という「ｅｖｅｎｔ」を検索する（ステップ９０６）。「申請者」の下位には「申請」という「ｅｖｅｎｔ」が存在し、「申請」の下位にある「ｎｅｘｔ」である「稟議中」が「文書１」の次のステータスとなる（ステップ９１０）。したがって、新たに「稟議中」というステータスが、「文書１」の現在のステータスを示す「ｎｏｗ」に設定される。
たとえば、ユーザが「文書１」の状態を知りたい場合には、所定の入力をなすことにより、「Ｎｏｗ」コマンドが発行され、「文書１」が「稟議中」であることが、ユーザインタフェース１８を介して、これが表示装置１６の画像中に示されることになる。
【００４８】
実際に「文書１」は稟議において、「回議順１」にて、協議者Ａおよび協議者Ｂによる承認が求められる。協議者Ａが承認した場合には、ユーザが「文書１」について協議者Ａが承認したことを示す情報を、入力装置１４を操作して与える。これにより、「Ｓａｙ（“文書Ａ”，“協議者Ａ”，“承認”）」というコマンドが状態コマンド解析部３０に伝達され、図９に示す処理が実行される。ここでも、現在のステータスを参照して「稟議中」にカレントが置かれ、その下位にある「ｗａｖｅ」の「協議者Ａ」が見出され、かつ、その下位にある「承認」という「ｅｖｅｎｔ」が特定される。これにより、現在のステータスが「Ａのみ承認済み」に変更される。
【００４９】
このようにして、実際の文書の状態が変更した際に、ユーザが、これを示す情報をフロー構築支援システム１０に与えると、フロー構築支援システム１０が所定の処理を実行して、フローの新たな状態を算出し、これを記憶しておくことができる。また、ユーザの指示に応じて当該文書の現在の状態を出力することができる。これにより、ユーザは文書の状態を適切に把握することが可能となる。
【００５０】
［第２の例］
第２の例では、採用フローを考える。図１３は、新卒者の状態遷移の例を示す図である。「新卒者」のステータスとして、「エントリー（符号１３０１）」、「セミナー（符号１３０４）」、「合格（符号１３０５）」、「辞退（符号１３０６）」、「不合格（符号１３０７）」などが定義されている。たとえば、「新卒者」が案内送付する（符号１３０２）ことで「セミナー」を受講できる状態となる。これを送付しなければ（符号１３０３）、「不合格」となる。
【００５１】
図１４は、図１３に示す状態遷移をツリーにて表した図である。さらに、図１５は、「中途採用者」のフローをツリーにて表した図である。すなわち、システム全体には、「新卒者」という「ｄｕｃｋｉｅ」（符号１４０１参照）と、「中途採用者」という「ｄｕｃｋｉｅ」（符号１５０１参照）とが存在し、それぞれ異なるツリー構造をとっている（符号１４０２、１５０２参照）。
このように、採用フローにおいて、遷移対象物である「ｄｕｃｋｉｅ」を複数設けて、これらの下位に、それぞれ異なるツリーを構築することも可能である。「ｄｕｅｋｉｅ」のステータスの変更等は、図９に示す処理により実現されることは、第１の例と同様である。
【００５２】
このようなツリーを形成して、コマンドを投入することで遷移対象物である「新卒者」や「中途採用者」という「ｄｕｃｋｉｅ」の状態を変化させることなど、所定の動作をさせることにより、採用支援システムを構築することができる。この採用支援システムにおいては、新卒者のステータスに基づき、各種案内や試験結果を送信すること、面接の日時や人数を調整すること、リクルータへの連絡や面接結果の報告等を把握すること、各状態における人数をカウントし結果を表示することなどが可能となる。
【００５３】
［第３の例］
第３の例では、ソフトウェア等の開発におけるデバッグのフローを考える。図１６は、デバッグにおける状態遷移の例を示す図である。ここでは、「バグ」のステータスとして、いまだ発見されていない状態を示す「潜在バグ（符号１５０１）」、バグが発見されて修正があって最終的に動作確認がなされた状態を示す「確認済み（符号１５１０）」、これらの間にある種々の状態が定義されている。たとえば、「潜在バグ」が発見される（符号１５０２）ことで、このバグが「未対応」という状態に変化する。
【００５４】
図１７は、図１６に示す状態遷移をツリーにて表した図である。ここでは、「バグ」という「ｄｕｃｋｉｅ」が存在し、デバッグ作業の段階ごとに種々の「ｓｔａｔｕｓ」、たとえば、「未対応」、「仕様検討中」、「対応済」などが定義される。「ｄｕｃｋｉｅ」のステータス変更は、図９の処理により実現できることは、第１の例と同様である。
このようなツリーを形成して、コマンドを投入することで、遷移対象物である「バグ」という「ｄｕｃｋｉｅ」の状態を変化させるなど、所定の動作をさせることにより、デバッグ支援システムを構築することができる。このデバッグ支援システムにおいては、バグの報告や修正の報告に応答して担当者宛てにメールにて通知すること、バグの発見数や対応の数などを統計して進捗状況を把握し或いは問題発生箇所の特定に役立てること、仕様検討項目を一覧表示し、顧客との打ち合わせに供することなどが可能となる。
【００５５】
本実施の形態によれば、遷移対象物である「ｄｕｃｋｉｅ」の下位に、その状態を示す「ｓｔａｔｕｓ（ステータス）」、当該ステータスにおいてある「ｅｖｅｎｔ（イベント）」を生じさせる主体である「ｗａｖｅ（ウェイブ）」、生じた「ｅｖｅｎｔ（イベント）」、イベントが生じた結果、変更される「ｄｕｅｋｉｅ」の新たなステータスである「ｎｅｘｔ」からなるルーティング定義構造体に、対応する名称や値を割り当てて、特定の事象を表現したツリーを定義している。これには、当該定義されたツリーにおいて、種々の定義コマンドにより、具体的な名称や値を、指定されたカレントに与えることにより実現できる。したがって、種々の遷移対象物について、そのフローを定義することが可能となる。つまり、フローの設定によって、文書稟議システム、採用支援システムなど種々のシステムとしての機能を果たすことが可能となる。
【００５６】
また、本実施の形態によれば、遷移対象物である「ｄｕｃｋｉｅ」のステータスの変更を示すコマンドの入力により、処理が実行されて、「ｄｕｃｋｉｅ」の新たなステータスを取得できる。また、現在の「ｄｕｃｋｉｅ」の状態を取得することにより、遷移対象物がフローにおいてどのような状態であるかを容易に把握することが可能となる。
【００５７】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
たとえば、前記実施の形態においては、文書フロー、採用フロー、デバッグフローについて本発明を適用して、ツリーを構築したが、これに限定されるものではなく、任意の遷移対象物の状態が遷移するようなものに本発明を適用できることは明らかである。
【００５８】
また、前記実施の形態においては、フローを表現するために、基本的には、上位から下位に向かって、遷移対象物、ステータス、主体、イベントおよび次のステータスという順序のツリー構造のルーティング定義構造体を利用しているが、これに限定されるものではない。たとえば、遷移対象物に関連付けた、ステータス、当該ステータスに関連付けられたステータスや主体、主体に関連付けられたイベント、イベントに関連付けられた次のステータスを定義できるものであれば、表形式のルーティング定義構造体を利用しても良い。
【００５９】
さらに、前記実施の形態において、フロー定義或いは状態遷移のためのコマンドにより、フローを定義し、或いは、遷移対象物の状態を変化させている。これは、ユーザが直接コマンドを入力するようなものであっても良いし、或いは、ユーザはフローを表現した画像を参照して、所定の情報を入力し、これに基づき、システムにおいて、入力された情報に基づき、カレントの指定やコマンドの生成をなすように構成しても良いことは言うまでもない。
なお、本明細書において、一つの手段の機能が、二つ以上の物理的手段により実現されても、若しくは、二つ以上の手段の機能が、一つの物理的手段により実現されてもよい。
【００６０】
【発明の効果】
本発明によれば、種々の遷移対象物のフローを単純な構造にて表現でき、かつ、その変更などに対して柔軟なシステムを提供することが可能となる。
【図面の簡単な説明】
【図１】  図１は、本発明の実施の形態にかかるフロー構築支援システムの構成を示すブロックダイヤグラムである。
【図２】  図２は、本実施の形態にかかるフロー構築支援システムのハードウェア構成例を示すブロックダイヤグラムである。
【図３】  図３は、本実施の形態にかかるフロー構築の原理を説明するための状態遷移図である。
【図４】  図４は、本実施の形態にて利用されるツリー構造を示す図である。
【図５】  図５は、本実施の形態において利用されるツリーの構造を示す図である。
【図６】  図６は、本実施の形態におけるフロー構築支援システムの処理を概略的に示すフローチャートである。
【図７】  図７は、本実施の形態にて用いられるコマンドの例を示す図である。
【図８】  図８は、本実施の形態において、図６のステップ６０１の処理例を示すフローチャートである。
【図９】  図９は、本実施の形態にかかるステータス変更処理をより詳細に示すフローチャートである。
【図１０】  図１０は、文書回議の状態遷移の例を示す図である。
【図１１】  図１１は、本実施の形態にしたがって、図１０に示す状態遷移をツリーにて表した図である。
【図１２】  図１２は、本実施の形態にしたがって、図１０に示す状態遷移をツリーにて表した図である。
【図１３】  図１３は、新卒者の状態遷移の例を示す図である。
【図１４】  図１４は、本実施の形態にしたがって、図１３に示す状態遷移をツリーにて表した図である。
【図１５】  図１５は、本実施の形態にしたがって、図１４の変形例として、中途採用者の状態遷移をツリーにて表した図である。
【図１６】  図１６は、デバッグにおける状態遷移の例を示す図である。
【図１７】  図１７は、本実施の形態にしたがって、図１６に示す状態遷移をツリーにて表した図である。
【符号の説明】
１０      フロー構築支援システム
１４      入力装置
１６      表示装置
１８      ユーザインタフェース
２０      処理装置
２２      データベース
２４      ツリー定義部
２６      コマンド受付処理部
２８      定義コマンド解析部
３０      状態コマンド解析部
【図１】
0004620890.tif 000002
【図２】
0004620890.tif 000003
【図３】
0004620890.tif 000004
【図４】
0004620890.tif 000005
【図５】
0004620890.tif 000006
【図６】
0004620890.tif 000007
【図７】
0004620890.tif 000008
【図８】
0004620890.tif 000009
【図９】
0004620890.tif 000010
【図１０】
0004620890.tif 000011
【図１１】
0004620890.tif 000012
【図１２】
0004620890.tif 000013
【図１３】
0004620890.tif 000014
【図１４】
0004620890.tif 000015
【図１５】
0004620890.tif 000016
【図１６】
0004620890.tif 000017
【図１７】
0004620890.tif 000018