(57)【特許請求の範囲】
【請求項１】
業務を構成する活動、分岐・結合、活動および分岐・結合実行の順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義で実行可能な活動列に含まれる２つ以上の活動からなる第一の活動列、並びに、第一の活動列の全要素または一部要素からなる第二の活動列を入力する手段と、
前記入力された業務プロセス定義が、該業務プロセス定義で実行可能な活動ノード列で、前記第一の活動列の全要素を実行するものすべてとして定義される活動ノード列集合の各要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものが、前記活動ノード列集合に含まれない活動ノード列で実行されることが無い、という条件を満足するか否かを判定する手段と、
前記条件を満足する場合、活動ノード列集合の要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものを出力する手段と、
を備えたことを特徴とする業務プロセス定義変換装置。
【請求項２】
前記入力された業務プロセス定義が請求項１記載の条件を満足しない場合において、前記入力された業務プロセス定義を変換する手段であって、
（１）変換後の業務プロセス定義が請求項１記載の条件を満たし、
（２）変換後の業務プロセス定義で実行可能な活動列の集合は、前記入力された業務プロセス定義で実行可能な活動列の集合と同一であり、
（３）前記入力された業務プロセス定義で実行可能な活動列で実行される分岐および結合は、前記活動列と同一の活動列で変換後の業務プロセス定義で実行可能なものでも実行されるが、それ以外の分岐または結合は実行されないものであり、
（４）前記入力された業務プロセス定義で実行可能な活動列で実行される分岐が実行済の活動の結果を利用する場合、前記分岐に対応する変換後の業務プロセス定義中の分岐は、前記分岐が結果を利用した活動と同一の活動が実行された後に実行される、
各条件（１）〜（４）の全てを満足するよう前記入力された業務プロセス定義を変換するものと、
前記変換された業務プロセス定義で実行可能な活動ノード列で前記第一の活動列の全要素を実行するものに含まれる活動ノードで、前記第二の活動列の要素を実行するものと、前記変換された業務プロセス定義とを出力する手段と、
を更に備えたことを特徴とする請求項１記載の業務プロセス定義変換装置。
【請求項３】
前記入力された業務プロセス定義を構成するすべての分岐・結合が排他的分岐・排他的結合である場合において、
前記入力された業務プロセス定義において前記第二の活動列に含まれる活動を実行する第二の活動ノードと、前記第一の活動列に含まれる活動のうち第二の活動ノードを含む活動ノード列の一部でのみ実行されるものを実行する第一の活動ノードとを引数として、活動ノード列における前記第一の活動ノードと前記第二の活動ノードの前後位置を判断する手段と、
前記判断において、活動ノード列で第一の活動ノードが第二の活動ノードよりも後に出現する場合に、
（１）処理対象の業務プロセス定義において第二の活動ノードから第一の活動ノードに至るノード列に含まれる排他的分岐で、その分岐を開始端とするシーケンスフローの一部が第一の活動ノードに到達できず、かつ、そのノード列において第二の活動ノードとの間に位置するノード数が最小のものを操作対象分岐として特定し、
（２）第二の活動ノードから操作対象分岐に至るノードおよびノードを開始端とするシーケンスフローからなる部分グラフ（操作対象分岐および操作対象分岐を終了端とするシーケンスフローを除く）を操作対象グラフとして特定し、
（３）操作対象分岐を開始端とするシーケンスフローごとに、操作対象グラフのコピーを生成し、そのシーケンスフローの開始端を操作対象グラフコピーの末尾ノードに変更し、
（４）操作対象グラフ中のノードを終了端とする元のシーケンスフローごとに、操作対象分岐のコピーを生成し、元のシーケンスフローの終了端を操作対象分岐コピーに変更し、操作対象分岐コピーを開始端とするシーケンスフローを生成し、その終了端を、元のシーケンスフローの終了端であった元の操作対象グラフ中のノードをコピーして生成された、操作対象グラフコピー中のノードとし、
（５）元の操作対象分岐、元の操作対象グラフ、及び両者を接続するシーケンスフローを削除する、
各操作（１）〜（５）を順次実行する手段と、
前記判断において、活動ノード列で第一の活動ノードが第二の活動ノードよりも前に出現する場合に、
（６）処理対象の業務プロセス定義において第一の活動ノードから第二の活動ノードに至るノード列に含まれる排他的結合で、その結合を終了端とするシーケンスフローの一部に第一の活動ノードから到達できず、かつ、そのノード列において第二の活動ノードとの間に位置するノード数が最小のものを操作対象結合として特定し、
（７）操作対象結合から第二の活動ノードに至るノードおよびノードを終了端とするシーケンスフロー（操作対象結合および操作対象結合を開始端とするシーケンスフローは除く）からなる部分グラフを操作対象グラフとして特定し、
（８）操作対象結合を終了端とするシーケンスフローごとに、操作対象グラフのコピーを生成し、そのシーケンスフローの終了端を操作対象グラフコピーの先頭ノードに変更し、
（９）操作対象グラフ中のノードを開始端とする元のシーケンスフローごとに、操作対象結合のコピーを生成し、元のシーケンスフローの開始端を操作対象結合コピーに変更し、操作対象結合コピーを終了端とするシーケンスフローを生成し、その開始端を、元のシーケンスフローの開始端であった元の操作対象グラフ中のノードをコピーして生成された、操作対象グラフコピー中のノードとし、
（１０）元の操作対象結合、操作対象グラフ、及び両者を接続するシーケンスフローを削除する、
各操作（６）〜（１０）を順次実行する手段と、
を備えたことを特徴とする請求項２記載の業務プロセス定義変換装置。
【請求項４】
業務プロセス定義および活動ノードの集合を出力する手段であって、
（１）処理対象の業務プロセス定義を入力された業務プロセス定義とし、
（２）処理対象の業務プロセス定義で第二の活動列を構成する活動を実行する活動ノードのうち本処理ですでに出力されたもの及び（３）で処理対象から除外されたものを除くものと定義される第二の活動ノードが、入力された業務プロセス定義で第二の活動ノードを含むすべての活動ノード列が第一の活動列に含まれるすべての活動を実行する、という条件を満たすか判定し、満たすすべての活動ノードを出力し、
（３）（２）における条件を満たさない第二の活動ノードが無い場合、処理対象の業務プロセス定義を出力して処理を終了すると共に、（２）における条件を満たさない第二の活動ノードがある場合、その活動ノードが、入力された業務プロセス定義で第二の活動ノードを含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動を実行しない、という条件を満たすか判定し、満たすすべての活動ノードを処理対象から除外し、
（４）（３）における条件を満たさない第二の活動ノードが無い場合、処理対象の業務プロセス定義を出力して処理を終了し、（３）における条件を満たさない第二の活動ノードがある場合、その活動ノードを対象にして、
（４−１）第一の活動列を構成する活動のうち第二の活動ノードを含む活動ノード列の一部のみで実行されるものを特定し、その活動ノード列でその活動を実行する活動ノードとして定義される第一の活動ノードを特定し、
（４−２）活動ノード列で第一の活動ノードが第二の活動ノードよりも後に出現する場合、処理対象の業務プロセス定義に対して請求項３記載の操作（１）〜（５）を実行し、
（４−３）活動ノード列で第一の活動ノードが第二の活動ノードよりも前に出現する場合、処理対象の業務プロセス定義に対して請求項３記載の操作（６）〜（１０）を実行する、
各処理を順次実行し、
（５）処理対象の業務プロセス定義を変換後の業務プロセス定義として、（２）に処理を戻す、
一連の処理を実行することにより、業務プロセス定義・活動ノードの集合を出力する手段、
を備えたことを特徴とする請求項１、２または３記載の業務プロセス定義変換装置。
【請求項５】
第二の活動ノードに対応して特定された第一の活動ノードのうち、第二の活動ノードとの間に位置するノード数の少ないものから順に、請求項３記載の操作（１）〜（５）または操作（６）〜（１０）を実行することを特徴とする請求項３または４記載の業務プロセス定義変換装置。
【請求項６】
請求項３記載の操作（１）〜（５）における操作対象グラフが、請求項３で定義された操作対象グラフを構成するノードに加え、そのノードを開始端とするすべてのシーケンスフローの終了端が、操作対象グラフに含まれるノードである、という条件を満たす０個以上のノード、及びそのノードを開始端とするシーケンスフローから構成され、
請求項３記載の操作（６）〜（１０）における操作対象グラフが、請求項３で定義された操作対象グラフを構成するノードに加え、そのノードを終了端とするすべてのシーケンスフローの開始端が、操作対象グラフに含まれるノードである、という条件を満たす０個以上のノード、及びそのノードを終了端とするシーケンスフローから構成される、
ことを特徴とする請求項３、４または５記載の業務プロセス定義変換装置。
【請求項７】
業務プロセス定義を入力する手段であって、その業務プロセスが、
（１）すべての分岐に対してその分岐を経由するすべての活動ノード列のみが経由する結合が存在し、
（２）すべての結合に対してその結合を経由するすべての活動ノード列のみが経由する分岐が存在する、
という条件を満たす手段と、
入力されたフォーク分岐を含む業務プロセス定義をフォーク分岐を含まない業務プロセス定義に変換する手段であって、
（３）排他分岐領域を含まないフォーク分岐領域を活動ノードで代替する操作を、１回以上任意回数実行し、
（４）排他分岐領域を含むフォーク分岐領域を、そのフォーク分岐領域中の排他分岐領域をその排他分岐領域中の各分岐先の部分グラフに置き換えたものを、各分岐先の部分グラフとする排他分岐領域に置換する操作を、０回以上任意回数実行する、
という条件を満たす手段と、
請求項１、２、３、４、５または６記載の処理を実行した後に、
（５）フォーク分岐領域を代替した活動ノードを、対応するフォーク分岐領域に置換し、
（６）出力される活動ノードにフォーク分岐領域を代替した活動ノードが含まれる場合、フォーク分岐領域を代替した活動ノードを、対応するフォーク分岐領域中の活動ノードで入力された第二の活動列に含まれる活動を実行するものに置換する手段と、
を備えたことを特徴とする請求項１、２、３、４、５または６記載の業務プロセス定義変換装置。
【請求項８】
業務を構成する活動、分岐・結合、および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力する手段と、
前記入力された業務プロセス定義に含まれるシーケンスフローのうち、該シーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するものを出力する手段と、
を備えたことを特徴とする業務プロセス定義変換装置。
【請求項９】
業務を構成する活動、分岐・結合、および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力する手段と、
前記入力された業務プロセス定義に含まれる業務先頭の活動から業務末尾の活動に至るシーケンスフロー列ごとに、その列に含まれるシーケンスフローのうち、そのシーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するシーケンスフローを特定する手段と、
前記特定されたシーケンスフローのうち、そのシーケンスフローを含むすべてのシーケンスフロー列で特定されたものを出力する手段と、
を備えたことを特徴とする業務プロセス定義変換装置。
【請求項１０】
前記活動の順序関係に関する制約は、
活動で発生し得る誤りであるリスクと、活動の一環として誤りを発見して対処する行為の記述である発見的コントロールまたは誤りを未然に防止する行為の記述である予防的コントロールとの間の順序関係に関する制約として表現され、
前記リスクと前記発見的および/または予防的コントロールの順序関係に関する制約、およびリスク・コントロールと前記活動との対応関係から特定される、
ことを特徴とする請求項８または９記載の業務プロセス定義変換装置。
【請求項１１】
業務を構成する活動、分岐・結合、活動および分岐・結合実行の順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義で実行可能な活動列に含まれる２つ以上の活動からなる第一の活動列、並びに、第一の活動列の全要素または一部要素からなる第二の活動列を入力するステップと、
前記入力された業務プロセス定義が、該業務プロセス定義で実行可能な活動ノード列で、前記第一の活動列の全要素を実行するものすべてとして定義される活動ノード列集合の各要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものが、前記活動ノード列集合に含まれない活動ノード列で実行されることが無い、という条件を満足するか否かを判定するステップと、
前記条件を満足する場合、活動ノード列集合の要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものを出力するステップと、
を備えたことを特徴とする業務プロセス定義変換プログラム。
【請求項１２】
業務を構成する活動、分岐・結合、および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力するステップと、
前記入力された業務プロセス定義に含まれるシーケンスフローのうち、該シーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するものを出力するステップと、
を備えたことを特徴とする業務プロセス定義変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、業務を構成する活動分岐・結合、活動・分岐・結合実行の順序関係（シーケンスフロー）を含む業務プロセス定義、および業務プロセス定義を構成する各活動の実行の順序関係に関する制約を対象とした管理技術、特に、業務プロセス定義を変更するとき、目的に合致した変更を可能にするように業務プロセス定義を変換すると共に、その変更が前記制約に適合していることを保証するよう支援する業務プロセス定義変換装置およびプログラムに関する。
【背景技術】
【０００２】
企業などで行われる業務を対象にして業務プロセス定義を作成し、この定義に記述された順序に基づいて業務を構成する活動を順次実行することが広く行われている。業務プロセス定義の例を図１に示す。図１の業務プロセス定義は、活動（正方形で表示）、排他的分岐（ひし形で表示）、排他的結合（ひし形で表示）をノードとし、活動・分岐・結合実行の前後関係（シーケンスフロー）をアークとする有向グラフとして表現されている。また、各活動には識別のための名前（“ａ”など）が付与されている。なお、活動の名前と実行する作業の対応関係の例が表で示されている。この業務プロセス定義に適合する業務は、以下のいずれかとして実現される。
【０００３】
（１）活動ａ、活動ｂ、活動ｄ、活動ｆを順次実行する。
（２）活動ａ、活動ｂ、活動ｅ、活動ｆを順次実行する。
（３）活動ａ、活動ｃ、活動ｄ、活動ｆを順次実行する。
（４）活動ａ、活動ｃ、活動ｅ、活動ｆを順次実行する。
【０００４】
図１のような業務プロセス定義では、同ーの活動や分岐・結合が複数の位置に配置される場合がある。以下、業務プロセス定義における活動や分岐・結合の位置に関わらず、その活動や分岐・結合の内容にのみ着目する場合は、たとえば活動ａなどと記述し、業務プロセス定義における活動や分岐・結合の位置の違いを明示したい場合には、たとえば活動ａではなく活動ノードａなどと記述する。特に、業務プロセス定義のシーケンスフローに番号が付与されている場合は、シーケンスフ口一番号を用いて活動ノードの位置を明示するため、たとえば活動ノードａ（｛１｝，｛２｝）などと記述する。ここで、括弧内の第一要素は活動ノードａを終了端とするシーケンスフローの集合であり、括弧内の第二要素は活動ノードａを開始端とするシーケンスフローの集合である。
【０００５】
なお、本説明書で対象とする業務プロセス定義では、どのノードからもシーケンスフローや他のノードをたどってそのノードに再び到達できないものとする。
【０００６】
図１の業務プロセス定義を計算機プログラムで利用する場合のデータ構造の例を図２Ａに示す。図２のデータ構造は、ノードに関する情報とアークに関する情報からなる。また、図１の業務プロセス定義を計算機プログラムで利用する場合のデータ構造のもう一つの例を図２Ｂに示す。図２Ｂのデータ構造は、活動や分岐・結合の情報、ノードの情報、および、アークに関する情報からなる。図２Ｂのデータ構造では、たとえば後述する図５の業務プロセス定義のように、同じ名前の活動や分岐・結合が業務プロセス定義上の複数の位置に出現する場合でも、これらの活動や分岐・結合に関する情報を一元的に保持できる利点がある。
【０００７】
業務プロセス定義のもう一つの例を図３に示す。図１の業務プロセス定義では、すべての排他的分岐（たとえば排他的分岐ノードＡ）に対し、その分岐を経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的結合（たとえば排他的結合ノードＢ）が存在する。また、すべての排他的結合に対し、その結合を経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的分岐が存在する（つまり、排他的分岐ノードＡを経由したすべての活動ノードのみが排他的結合ノードＢを経由する）。しかし、図３の業務プロセス定義では、たとえば排他的分岐ノードＣを経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的結合は存在しない。また、排他的結合ノードＥを経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的分岐は存在しない。
【０００８】
業務プロセス定義のもう一つの例を図４に示す。図４の業務プロセス定義では、図１の業務プロセス定義で用いた活動、排他的分岐、排他的結合、シーケンスフローに加え、フォーク分岐（斜線入りのひし形で表示）とフォーク結合（斜線入りのひし形で表示）が用いられている。この業務プロセス定義に適合する業務は、以下のいずれかとして実現される。
【０００９】
（１）活動ａ、活動ｂを順次実行した後に活動ｆと活動ｈを並行して実行し、その後に活動ｉを実行する。
（２）活動ａ、活動ｂを順次実行した後に活動ｇと活動ｈを並行して実行し、その後に活動ｉを実行する。
（３）活動ａ、活動ｃを順次実行した後に活動ｆと活動ｈを並行して実行し、その後に活動ｉを実行する。
（４）活動ａ、活動ｃを順次実行した後に活動ｇと活動ｈを並行して実行し、その後に活動ｉを実行する。
【００１０】
業務プロセス定義中の分岐が、その分岐の前に実行される活動に関する情報（たとえば、活動で生成された情報）を利用する場合がある。そのような業務プロセス定義の例を図５に示す。図５の業務プロセス定義では、図４の業務プロセス定義の分岐Ｅが条件付き分岐（破線のひし形として表記）に変更され、分岐先の決定時に活動ｂまたは活動ｃの結果が利用されることが吹き出しで示されている。このような分岐を含む業務プロセス定義では、その分岐で利用される情報を生成する活動がその分岐よりも前に実行されなければならない。
【００１１】
また、業務プロセス定義に対し、定義を構成する活動の間の順序関係に関する制約が設定される場合がある。たとえば、財務報告に関わる内部統制に用いられる業務プロセス定義では、活動ごとに以下の情報が設定されることが一般的である。
【００１２】
（１）活動を実行するときに発生し得る誤り（リスク）
（２）リスクに記述された誤りの発生を未然に防ぐための行為（予防的コントロール）
（３）リスクに記述された誤りが発生した場合にその誤りを発見して適切に対処する行為（発見的コントロール）
【００１３】
これらの情報の設定に関連して、ここで業務プロセス定義の例、図６、図７および図８を考える。図６に示した業務プロセス定義に適合する業務は、以下のいずれかとして実現される。
【００１４】
（１）活動ａ、活動ｂ、活動ｅを順次実行する。
（２）活動ａ、活動ｃ、活動ｄ、活動ｅを順次実行する。
【００１５】
ここで、図６の業務プロセス定義では、すべての排他的分岐（たとえば排他的分岐ノードＡ）に対し、その分岐を経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的結合（たとえば排他的結合ノードＢ）が存在する。また、すべての排他的結合に対し、その分岐を経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的分岐が存在する。一方、図７の業務プロセス定義では、たとえば排他的分岐ノードＢを経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的結合は存在しない。また、排他的結合ノードＣを経由するすべての活動ノード列が経由し、それ以外の活動ノード列が経由しない排他的分岐は存在しない。
【００１６】
図８の業務プロセス定義では、図６の業務プロセス定義で用いた活動、シーケンスフローに加え、フォーク分岐（破線のひし形として表記）とフォーク結合（破線のひし形として表記）が用いられている。この業務プロセス定義に適合する業務は、以下のように実現される。
【００１７】
（１）活動ａを実行した後に活動ｂと、活動ｃと活動ｄからなる活動列とを並行して実行し、その後に活動ｅを実行する。
【００１８】
図６の業務プロセス定義を計算機プログラムで利用する場合のデータ構造の例を図９Ａに示す。図９Ａのデータ構造は、ノードに関する情報と、アークに関する情報からなる。また、図６の業務プロセス定義を計算機プログラムで利用する場合のデータ構造のもう一つの例を図９Ｂに示す。図９Ｂのデータ構造は、活動や分岐・結合の情報、ノードの情報、および、アークに関する情報からなる。図９Ｂのデータ構造では、同じ名前の活動や分岐・結合が業務プロセス定義上の複数の位置に出現する場合でも、これらの活動や分岐・結合に関する情報を一元的に保持できる。
【００１９】
次に、図６〜図８に示したような業務プロセス定義に対し、定義を構成する活動の間の順序関係に関する制約が設定される場合を考える。
【００２０】
このような制約情報が設定された業務プロセス定義の例を図１０〜図１２に示す。図１０の業務プロセス定義では、活動ａに「支払方法を間違える」というリスクＲ１が設定され、このリスクに対する発見的コントロールとして活動ｂに発見的コントロールＣ１「決済前に支払方法が正しいか確認する」が、活動ｅに発見的コントロールＣ２「作業開始前に支払処理が完了しているか確認する」がそれぞれ設定されている。この例からわかるように、単一のリスクに対して複数のコントロールを対応付けることが可能である。逆に、単一のコントロールを複数のリスクに対応付けることも可能である。これらの情報を計算機プログラムで利用する場合のデータ構造の例を図１３に示す。図１３に示すとおり、これらの情報は、各情報に関する情報の集合と、情報の実行順序に関する情報の集合として表現できる。
【００２１】
ある活動で発生し得るリスクを未然に防ぐための予防的コントロールは、その活動が実行されるより前に実行される活動になければ効果を発揮しない。同様に、ある活動上で発生し得るリスクに対処するための発見的コントロールは、その活動が実行されるより後に実行される活動になければ効果を発揮しない。これらのことから、リスクとコントロールの対応関係は、それぞれが対応付けられている活動の間の順序関係に関する制約とみなすことができる。
【００２２】
このようなリスクとコントロールの対応関係は、実行可能な活動列ごとに、発生し得るリスクに対して適切なコントロールが対応付けられるよう、対象業務に関する豊富な知識や経験を持つ専門家によって設定されるのが一般的である。このようにして作成された業務プロセス定義を変更する場合には、変更の影響を必要最小限に抑え、より多くの活動列を継続して利用できるようにすることが重要である。
【００２３】
これまでに説明したような業務プロセス定義は、業務上の必要性から適宜変更をする必要が生じる。このような変更を支援するための方法として、特開２００３−２２８６４７号公報（特許文献１）記載の「ビジネスプロセス定義最適化支援装置及び、方法」および特開２００６−１９５８９２号公報（特許文献２）記載の「フロー処理プログラム、装置およびフロー順序変更方法」が開示されている。
【００２４】
前者は、業務プロセス定義の構造解析結果に基づいて不必要と思われる条件分岐や活動を検出し、業務プロセス定義の改善を支援するものである。後者は、業務プロセス定義の内容により、業務を構成する各活動の処理順序を入れ替えて、全体処理の時間短縮、エラーリカバリ一等の対策を容易にすることが可能な処理プログラム、装置および活動順序変更方法を提供するものである。
【００２５】
【特許文献１】特開２００３−２２８６４７号公報
【特許文献２】特開２００６−１９５８９２号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
ところで、業務プロセス定義で実行可能な活動列の一部のみに活動を追加し、他の活動列には変更を加えたくない場合がある。たとえば、図１で示した業務プロセス定義で実行可能な活動列｛ａ，ｂ，ｄ，ｆ｝の一部である活動ｄの直後のみに活動ｘ（“バッテリー残量を確認し、必要があればＡＣ電源を探してノートＰＣを充電する”）を追加し、他の活動列には活動ｘを追加したくない場合である。たとえば図１の活動ｄの直後に活動ｘを追加すると、活動列｛ａ，ｂ，ｄ，ｆ｝だけでなく、活動列｛ａ，ｃ，ｄ，ｆ｝中の活動ｄの直後にも活動ｘが追加されてしまうので、目的を達成できない。このように、分岐や結合を含む業務プロセス定義では、特定の活動列のみに活動を追加できないことがある。
【００２７】
また、上記のような制約を伴う業務プロセス定義に対し、制約への適合性を損なうことなく活動の順序関係を変更したい場合がある。たとえば、財務報告に関わる内部統制における業務プロセス定義の運用では、業務プロセス定義を構成する活動が不変であれば、上記のリスク・コントロールの対応関係に基づく制約は変更不要と考えられるが、定義を作成・運用する過程で活動の順序関係を変更することが考えられる。
【００２８】
しかし、上で示した従来の技術では、業務プロセス定義で実行可能な一部の活動列の全部または一部の前後のみに活動を追加し、他の活動列には変更を加えずにすむように業務プロセス定義を変換する方法は示されていない。
【００２９】
また、上で示した技術では、業務プロセス定義に対して制約への適合性を損なうことなく活動の順序関係を変更したい場合に対処する方法は示されていない。たとえば「ビジネスプロセス定義最適化支援装置及び方法」は、業務プロセス定義の最適化が目的であり、活動の順序関係の自由な変更を支援するものではない。また「フロー処理プログラム、装置およびフロー順序変更方法」は、制約に基づいて業務プロセス定義を一意に変更するものであり、活動の順序関係の自由な変更を支援するものではない。
【００３０】
本発明はこのような背景に鑑みてなされたもので、その目的は、業務を構成する活動の定義、活動の実行の分岐および結合、前記活動・分岐・結合実行の順序関係に関する記述（シーケンスフロー）を含む業務プロセス定義を対象とし、その定義に適合する活動列の集合を変更することなく、特定の活動列のみに対して前後に活動を追加することを可能とするように変換することにより、業務プロセス定義の変更を支援する装置および手法を提供することである。
本発明の別の目的は、前記業務プロセス定義上の特定の活動列のみに対して前後に活動を追加する場合において、リスクとそのコントロール間の制約などの、活動列上の実行順位の制約への適合性を損なわないようにすることである。
【課題を解決するための手段】
【００３１】
請求項１に記載の発明は、業務を構成する活動、分岐・結合、活動および分岐・結合実行の順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義で実行可能な活動列に含まれる２つ以上の活動からなる第一の活動列、並びに、第一の活動列の全要素または一部要素からなる第二の活動列を入力する手段と、前記入力された業務プロセス定義が、該業務プロセス定義で実行可能な活動ノード列で、前記第一の活動列の全要素を実行するものすべてとして定義される活動ノード列集合の各要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものが、前記活動ノード列集合に含まれない活動ノード列で実行されることが無い、という条件を満足するか否かを判定する手段と、前記条件を満足する場合、活動ノード列集合の要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものを出力する手段と、を備えたことを特徴とするプロセス定義変換装置である。
【００３２】
請求項２に記載の発明は、請求項１記載の業務プロセス定義変換装置であって、前記入力された業務プロセス定義が請求項１記載の条件を満足しない場合において、前記入力された業務プロセス定義を変換する手段であって、（１）変換後の業務プロセス定義が請求項１記載の条件を満たし、（２）変換後の業務プロセス定義で実行可能な活動列の集合は、前記入力された業務プロセス定義で実行可能な活動列の集合と同一であり、（３）前記入力された業務プロセス定義で実行可能な活動列で実行される分岐および結合は、前記活動列と同一の活動列で変換後の業務プロセス定義で実行可能なものでも実行されるが、それ以外の分岐または結合は実行されないものであり、（４）前記入力された業務プロセス定義で実行可能な活動列で実行される分岐が実行済の活動の結果を利用する場合、前記分岐に対応する変換後の業務プロセス定義中の分岐は、前記分岐が結果を利用した活動と同一の活動が実行された後に実行される、各条件（１）〜（４）の全てを満足するよう前記入力された業務プロセス定義を変換するものと、前記変換された業務プロセス定義で実行可能な活動ノード列で前記第一の活動列の全要素を実行するものに含まれる活動ノードで、前記第二の活動列の要素を実行するものと、前記変換された業務プロセス定義とを出力する手段と、を更に備えたことを特徴とする。
【００３３】
請求項３に記載の発明は、請求項２記載の業務プロセス定義変換装置であって、前記入力された業務プロセス定義を構成するすべての分岐・結合が排他的分岐・排他的結合である場合において、前記入力された業務プロセス定義において前記第二の活動列に含まれる活動を実行する第二の活動ノードと、前記第一の活動列に含まれる活動のうち第二の活動ノードを含む活動ノード列の一部でのみ実行されるものを実行する第一の活動ノードとを引数として、活動ノード列における前記第一の活動ノードと前記第二の活動ノードの前後位置を判断する手段と、前記判断において、活動ノード列で第一の活動ノードが第二の活動ノードよりも後に出現する場合に、（１）処理対象の業務プロセス定義において第二の活動ノードから第一の活動ノードに至るノード列に含まれる排他的分岐で、その分岐を開始端とするシーケンスフローの一部が第一の活動ノードに到達できず、かつ、そのノード列において第二の活動ノードとの間に位置するノード数が最小のものを操作対象分岐として特定し、（２）第二の活動ノードから操作対象分岐に至るノードからなる部分グラフを操作対象グラフとして特定し、（３）操作対象分岐を開始端とするシーケンスフローごとに、操作対象グラフのコピーを生成し、そのシーケンスフローの開始端を操作対象グラフコピーの末尾ノードに変更し、（４）操作対象グラフ中のノードを終了端とする元のシーケンスフローごとに、操作対象分岐のコピーを生成し、元のシーケンスフローの終了端を操作対象分岐コピーに変更し、操作対象分岐コピーを開始端とするシーケンスフローを生成し、その終了端を、元のシーケンスフローの終了端であった元の操作対象グラフ中のノードをコピーして生成された、操作対象グラフコピー中のノードとし、（５）元の操作対象分岐、元の操作対象グラフ、及び両者を接続するシーケンスフローを削除する、各操作（１）〜（５）を順次実行する手段と、前記判断において、活動ノード列で第一の活動ノードが第二の活動ノードよりも前に出現する場合に、（６）処理対象の業務プロセス定義において第一の活動ノードから第二の活動ノードに至るノード列に含まれる排他的結合で、その結合を終了端とするシーケンスフローの一部に第一の活動ノードから到達できず、かつ、そのノード列において第二の活動ノードとの間に位置するノード数が最小のものを操作対象結合として特定し、（７）操作対象結合から第二の活動ノードに至るノードからなる部分グラフを操作対象グラフとして特定し、（８）操作対象結合を終了端とするシーケンスフローごとに、操作対象グラフのコピーを生成し、そのシーケンスフローの終了端を操作対象グラフコピーの先頭ノードに変更し、（９）操作対象グラフ中のノードを開始端とする元のシーケンスフローごとに、操作対象結合のコピーを生成し、元のシーケンスフローの開始端を操作対象結合コピーに変更し、操作対象結合コピーを終了端とするシーケンスフローを生成し、その開始端を、元のシーケンスフローの開始端であった元の操作対象グラフ中のノードをコピーして生成された、操作対象グラフコピー中のノードとし、（１０）元の操作対象結合、操作対象グラフ、及び両者を接続するシーケンスフローを削除する、各操作（６）〜（１０）を順次実行する手段と、を備えたことを特徴とする。
【００３４】
請求項４に記載の発明は、請求項１、２または３記載の業務プロセス定義変換装置であって、業務プロセス定義および活動ノードの集合を出力する手段であって、（１）処理対象の業務プロセス定義を入力された業務プロセス定義とし、（２）処理対象の業務プロセス定義で第二の活動列を構成する活動を実行する活動ノードのうち本処理ですでに出力されたもの及び（３）で処理対象から除外されたものを除くものと定義される第二の活動ノードが、入力された業務プロセス定義で第二の活動ノードを含むすべての活動ノード列が第一の活動列に含まれるすべての活動を実行する、という条件を満たすか判定し、満たすすべての活動ノードを出力し、（３）（２）における条件を満たさない第二の活動ノードが無い場合、処理対象の業務プロセス定義を出力して処理を終了すると共に、（２）における条件を満たさない第二の活動ノードがある場合、その活動ノードが、入力された業務プロセス定義で第二の活動ノードを含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動を実行しない、という条件を満たすか判定し、満たすすべての活動ノードを処理対象から除外し、（４）（３）における条件を満たさない第二の活動ノードが無い場合、処理対象の業務プロセス定義を出力して処理を終了し、（３）における条件を満たさない第二の活動ノードがある場合、その活動ノードを対象にして、（４−１）第一の活動列を構成する活動のうち第二の活動ノードを含む活動ノード列の一部のみで実行されるものを特定し、その活動ノード列でその活動を実行する活動ノードとして定義される第一の活動ノードを特定し、（４−２）活動ノード列で第一の活動ノードが第二の活動ノードよりも後に出現する場合、処理対象の業務プロセス定義に対して請求項３記載の操作（１）〜（５）を実行し、（４−３）活動ノード列で第一の活動ノードが第二の活動ノードよりも前に出現する場合、処理対象の業務プロセス定義に対して請求項３記載の操作（６）〜（１０）を実行する、各処理を順次実行し、（５）処理対象の業務プロセス定義を変換後の業務プロセス定義として、（２）に処理を戻す、一連の処理を実行することにより、業務プロセス定義・活動ノードの集合を出力する手段、を備えたことを特徴とする。
【００３５】
請求項５に記載の発明は、請求項３または４記載の業務プロセス定義変換装置であって、第二の活動ノードに対応して特定された第一の活動ノードのうち、第二の活動ノードとの間に位置するノード数の少ないものから順に、請求項３記載の操作（１）〜（５）または操作（６）〜（１０）を実行することを特徴とする。
【００３６】
請求項６に記載の発明は、請求項３、４または５記載の業務プロセス定義変換装置であって、請求項３記載の操作（１）〜（５）における操作対象グラフが、請求項３で定義された操作対象グラフを構成するノードに加え、そのノードを開始端とするすべてのシーケンスフローの終了端が、操作対象グラフに含まれるノードである、という条件を満たす０個以上のノード、およびそのノードを開始端とするシーケンスフローから構成され、請求項３記載の操作（６）〜（１０）における操作対象グラフが、請求項３で定義された操作対象グラフを構成するノードに加え、そのノードを終了端とするすべてのシーケンスフローの開始端が、操作対象グラフに含まれるノードである、という条件を満たす０個以上のノード、およびそのノードを終了端とするシーケンスフローから構成される、ことを特徴とする。
【００３７】
請求項７に記載の発明は、請求項１、２、３、４、５または６記載の業務プロセス定義変換装置であって、業務プロセス定義を入力する手段であって、その業務プロセスが、（１）すべての分岐に対してその分岐を経由するすべての活動ノード列のみが経由する結合が存在し、（２）すべての結合に対してその結合を経由するすべての活動ノード列のみが経由する分岐が存在する、という条件を満たす手段と、入力されたフォーク分岐を含む業務プロセス定義をフォーク分岐を含まない業務プロセス定義に変換する手段であって、（３）排他分岐領域を含まないフォーク分岐領域を活動ノードで代替する操作を、１回以上任意回数実行し、（４）排他分岐領域を含むフォーク分岐領域を、そのフォーク分岐領域中の排他分岐領域をその排他分岐領域中の各分岐先の部分グラフに置き換えたものを、各分岐先の部分グラフとする排他分岐領域に置換する操作を、０回以上任意回数実行する、という条件を満たす手段と、請求項１、２、３、４、５または６記載の処理を実行した後に、（５）フォーク分岐領域を代替した活動ノードを、対応するフォーク分岐領域に置換し、（６）出力される活動ノードにフォーク分岐領域を代替した活動ノードが含まれる場合、フォーク分岐領域を代替した活動ノードを、対応するフォーク分岐領域中の活動ノードで入力された第二の活動列に含まれる活動を実行するものに置換する手段と、を備えたことを特徴とする。
【００３８】
なお、ここで「排他分岐領域」とは、排他分岐から対応する排他結合に至る全経路上のすべてのノードおよびシーケンスフローからなる部分グラフとして定義され、また、「フォーク分岐領域」とは、フォーク分岐から対応するフォーク結合に至る全経路上のすべてのノードおよびシーケンスフローからなる部分グラフとして定義される。
【００３９】
請求項８に記載の発明は、業務を構成する活動および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力する手段と、前記入力された業務プロセス定義に含まれるシーケンスフローのうち、該シーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するものを出力する手段と、を備えたことを特徴とする業務プロセス定義変換装置である。
【００４０】
請求項９に記載の発明は、業務を構成する活動および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力する手段と、前記入力された業務プロセス定義に含まれる業務先頭の活動から業務末尾の活動に至るシーケンスフロー列ごとに、その列に含まれるシーケンスフローのうち、そのシーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するシーケンスフローを特定する手段と、前記特定されたシーケンスフローのうち、そのシーケンスフローを含むすべてのシーケンスフロー列で特定されたものを出力する手段と、を備えたことを特徴とする業務プロセス定義変換装置である。
【００４１】
請求項１０に記載の発明は、請求項８または９記載の業務プロセス定義変換装置であって、前記活動の順序関係に関する制約は、活動で発生し得る誤りであるリスクと、活動の一環として誤りを発見して対処する行為の記述である発見的コントロールまたは誤りを未然に防止する行為の記述である予防的コントロールとの間の順序関係に関する制約として表現され、前記リスクと前記発見的および／または予防的コントロールの順序関係に関する制約、およびリスク・コントロールと前記活動との対応関係から特定される、ことを特徴とする。
【００４２】
請求項１１に記載の発明は、業務を構成する活動、分岐・結合、活動および分岐・結合実行の順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義で実行可能な活動列に含まれる２つ以上の活動からなる第一の活動列、並びに、第一の活動列の全要素または一部要素からなる第二の活動列を入力するステップと、前記入力された業務プロセス定義が、該業務プロセス定義で実行可能な活動ノード列で、前記第一の活動列の全要素を実行するものすべてとして定義される活動ノード列集合の各要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものが、前記活動ノード列集合に含まれない活動ノード列で実行されることが無い、という条件を満足するか否かを判定するステップと、前記条件を満足する場合、活動ノード列集合の要素である活動ノード列中の活動ノードで、前記第二の活動列の要素を実行するものを出力するステップと、を備えたことを特徴とする業務プロセス定義変換プログラムである。
【００４３】
請求項１２に記載の発明は、業務を構成する活動および前記活動の直接的な実行順序関係を示すシーケンスフローを含む業務プロセス定義、前記業務プロセス定義を構成する活動の順序関係に関する制約、並びに、位置変更対象の活動を入力するステップと、前記入力された業務プロセス定義に含まれるシーケンスフローのうち、該シーケンスフロー上に前記入力された活動が移動される場合に、移動後の業務プロセス定義が前記入力された制約のうち前記入力された活動に関するものすべてに適合するものを出力するステップと、を備えたことを特徴とする業務プロセス定義変換プログラムである。
【発明の効果】
【００４４】
以上の説明から明らかなように、本発明の業務プロセス定義変換装置によれば、業務プロセス定義に適合する活動列の集合を変更せず、特定の活動群を含む活動列のみに対して活動を追加することを可能とするようにその業務プロセス定義を変換できるので、業務プロセス定義で実行可能な活動列のうち特定の活動群を含む活動列のみに活動を追加するといった業務プロセス定義の変更を支援できる。
また本発明によれば、前記業務プロセス定義上の特定の活動列のみに対して前後に活動を追加する場合において、その定義に含まれる分岐で他の活動の情報を利用するものが前記他の活動より後に実行されることが保証されるので、活動列上の実行順位の制約への適合性を損なわないようにすることができる。
【発明を実施するための最良の形態】
【００４５】
以下、図面を参照しながら、本発明の業務プロセス定義変換装置の詳細について説明する。
【００４６】
（第一の実施の形態）
図１４〜図４４は、本発明の第一の実施の形態に係る。本実施の形態は、業務プロセス定義における活動列に含まれる特定の活動のみに対して前後に活動を追加することを可能とするように変換する業務プロセス定義変換装置を提供する。
【００４７】
（変換結果の概要）
最初に、図１４〜図１７を用いて、本発明の実施の形態に係る業務プロセス定義変換装置による処理の結果の概要を説明する。ここでは、本業務プロセス定義変換装置に対して、図１４の業務プロセス定義と第一の活動列として活動ｂおよび活動ｆからなる活動列が入力された場合を考える。なお、図１４の業務プロセス定義に含まれる各分岐には他の活動で生成される情報を利用した条件は記述されないものとする。
【００４８】
このとき、活動ｂを実行する活動列および活動ｆを実行する活動列はそれぞれ以下の通りとなる。
【００４９】
［活動ｂを実行する活動列］
｛ａ，ｂ，ｄ，ｆ，ｉ｝、｛ａ，ｂ，ｄ，ｇ，ｉ｝、｛ａ，ｂ，ｄ，ｈ，ｉ｝、｛ａ，ｂ，ｅ，ｆ，ｉ｝、｛ａ，ｂ，ｅ，ｇ，ｉ｝、｛ａ，ｂ，ｅ，ｈ，ｉ｝
［活動ｆを実行する活動列］
｛ａ，ｂ，ｄ，ｆ，ｉ｝、｛ａ，ｂ，ｅ，ｆ，ｉ｝、｛ａ，ｃ，ｄ，ｆ，ｉ｝、｛ａ，ｃ，ｅ，ｆ，ｉ｝
【００５０】
ここで、活動ｂを実行する６つの活動列のうち、活動ｆも実行するものは２つであり、他の４つは活動ｆを実行しない。また、活動ｆを実行する４つの活動列のうち、活動ｂも実行するものは２つであり、他の２つは活動ｂを実行しない。このため、活動ｂおよび活動ｆをともに含む活動列のみに対して活動を追加しようとしても、図１４の業務プロセス定義のままでは目的を達成できない。図１４の業務プロセス定義を図１５から図１７の業務プロセス定義のいずれかに変換することにより、活動ｂおよび活動ｆを含む活動列のみに対して活動を追加することが可能となる。
【００５１】
まず図１５の業務プロセス定義は、第二の活動列として活動ｆのみからなる活動列が入力された場合の変換結果である。図１５の業務プロセス定義では、実線の円で固まれた活動ノードｆを実行する活動列は｛ａ，ｂ，ｄ，ｆ，ｉ｝、｛ａ，ｂ，ｅ，ｆ，ｉ｝の２つであり、ともに活動ｂを含む。このため、前記活動ノードｆの直前または直後（太い矢印で示されたシーケンスフロー上）に活動を追加すれば、その活動は活動ｂおよび活動ｆをともに含む活動列のみで実行される。
【００５２】
図１６の業務プロセス定義は、第二の活動列として活動ｂのみからなる活動列が入力された場合の変換結果である。図１６の業務プロセス定義では、実線の円で固まれた活動ノードｂを実行する活動列は｛ａ，ｂ，ｄ，ｆ，ｉ｝、｛ａ，ｂ，ｅ，ｆ，ｉ｝の２つであり、ともに活動ｆを含む。このため、前記活動ノードｂの直前または直後（太い矢印で示されたシーケンスフロー上）に活動を追加すれば、その活動は活動ｂおよび活動ｆをともに含む活動列のみで実行される。
【００５３】
図１７の業務プロセス定義は、第二の活動列として活動ｂと活動ｆからなる活動列が入力された場合の変換結果である。図１７の業務プロセス定義では、実線の円で固まれた活動ノードｂを実行する活動列、および、実線の円で固まれた活動ノードｆを実行する活動列はともに｛ａ，ｂ，ｄ，ｆ，ｉ｝、｛ａ，ｂ，ｅ，ｆ，ｉ｝の２つのみであり、これらはともに活動ｂおよび活動ｆを含む。このため、太い矢印で示されたいずれのシーケンスフロー上に活動を追加しても、その活動は活動ｂおよび活動ｆをともに含む活動列のみで実行される。
【００５４】
次に、図１４の業務プロセス定義の分岐Ｅに次の活動を決定するための条件が記述されており、その条件が先行して実行される活動の結果を利用している場合を考える。先の図５はこのような業務プロセス定義を示したものである。本発明の第一の業務プロセス定義変換装置に図５の業務プロセス定義と活動ｂおよび活動ｆからなる活動列が第一の活動列として入力される場合、図１８の業務プロセス定義が変換結果として出力される。
【００５５】
（第一の実施の形態の構成）
次に、第一の実施の形態の構成について説明する。
【００５６】
図１９は、本実施の形態に係る業務プロセス定義編集システムの構成図である。図１９に示すとおり、本システム１２０は業務プロセス定義編集部１２１と業務プロセス定義変換部１２２から構成される。業務プロセス定義編集部１２１は利用者の指示に応じて業務プロセス定義のグラフィック表現（たとえば図１のような表現）を表示する。そして活動、分岐、結合、シーケンスフローの追加・削除や、活動・分岐・結合とシーケンスフローの接続・分割などの指示に応じてグラフィック表現を変更し、利用者からの保存指示に応じてグラフィック表現の内容をデータ表現（たとえば図２のような表現）に反映させる。また、利用者から、業務プロセス定義に含まれる活動群からなる活動列（第一の活動列、以下「活動列１」）、前記活動群の部分集合からなる活動列（第二の活動列、以下「活動列２」）、および業務プロセス定義変換指示を受け付け、業務プロセス定義のグラフィック表現をデータ表現に反映させた上でそのデータ表現と二種類の活動列（活動列１、活動列２）を業務プロセス定義変換部１２２に入力する。これにより、業務プロセス定義変換部１２２に対して以下の変換が指示される。
【００５７】
（１）業務プロセス定義で実行可能な活動列のうち、活動列１に含まれるすべての活動を実行する活動列のみで実行される活動ノードで、その名前の活動が活動列２に含まれるものをすべて特定せよ。
（２）そのような活動ノードが入力の業務プロセス定義に存在しなければ、業務プロセス定義を変換してそのような活動ノードを生成した上で特定せよ。
【００５８】
そして、業務プロセス定義編集部１２１は、業務プロセス定義変換部１２２から出力された業務プロセス定義のデータ表現および活動ノードの集合を受理してそのデータ表現で自らのデータ表現を更新し、グラフィック表現に反映させる。また、受理した活動ノードの集合の各要素をグラフィック表現上で他の活動ノードと区別できるようにして利用者に示す。
【００５９】
業務プロセス定義変換部１２２の基本的な処理の流れの例を図２０Ａおよび図２０Ｂに示す。また、業務プロセス定義中のフォーク分岐をフォーク分岐代替活動に置換する処理の詳細な流れの例（図２０におけるステップＳ２００２の処理）を図２１に示す。また、図２０の処理で実行される操作１および操作２の詳細な流れの例をそれぞれ図２２、図２３に示し、図２１の処理で実行される操作３の詳細な処理の流れの例を図２４に示す。
【００６０】
なお、以下の説明で用いる業務プロセス例の一部ではシーケンスフローに識別のための番号を付与しているが、本実施例の業務プロセス定義変換部１２２は、シーケンスフローと番号の対応関係によらず同一の結果を得ることができる。
【００６１】
（第一の実施の形態の動作）
（業務プロセス定義の変換例１）
以下、業務プロセス定義変換部１２２に、以下の業務プロセス定義、活動列１、活動列２が入力された場合の業務プロセス定義の変換過程を示す。
【００６２】
（１）業務プロセス定義：図１４の業務プロセス定義
（２）活動列１：｛活動ｂ，活動ｆ｝
（３）活動列２：｛活動ｂ｝
【００６３】
図２０において、業務プロセス定義変換部１２２が起動すると、ステップＳ２００１で変数Ａに、入力された業務プロセス定義が代入された後、ステップＳ２００２で、変数Ａの値である業務プロセス定義中のフォーク分岐を、フォーク分岐代替活動に置換する処理が実行される。この処理の詳細な流れの例が図２１に記載されているが、図１４の業務プロセス定義にはフォーク分岐が含まれないので、ここでは処理内容の説明を省略する。
【００６４】
ステップＳ２００３とステップＳ２００４で変数群が初期化された後に、ステップＳ２００５で、変数Ａの業務プロセス定義（図１４の業務プロセス定義）中の活動ノードで、入力された第二の活動列中の活動（ここでは活動ｂ）を実行する活動ノードのうち、変数Ｂ（この時点では空）及び変数Ｃ（この時点では空）に含まれないものを特定して変数Ｄに代入する。ここでは、図１４の活動ノードｂが変数Ｄに代入される。
【００６５】
次にステップＳ２００６で、変数Ｄ中の活動ノード（活動ノードｂ）が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｂに、満たさないすべての活動ノードを変数Ｅに代入する。
【００６６】
（条件）変数Ａの業務プロセス定義（図１４の業務プロセス定義）でその活動ノードを含むすべての活動ノード列が、第一の活動列に含まれるすべての活動を実行する。
【００６７】
ここでは、図１４の業務プロセス定義で活動ノードｂを含む活動ノード列として以下の６つの活動ノード列が特定される。
【００６８】
（１）｛活動ノードａ，活動ノードｂ，活動ノードｄ，活動ノードｆ、活動ノードｉ｝
（２）｛活動ノードａ，活動ノードｂ，活動ノードｄ，活動ノードｇ，活動ノードｉ｝
（３）｛活動ノードａ，活動ノードｂ，活動ノードｄ，活動ノードｈ，活動ノードｉ｝
（４）｛活動ノードａ，活動ノードｂ，活動ノードｅ，活動ノードｆ，活動ノードｉ｝
（５）｛活動ノードａ，活動ノードｂ，活動ノードｅ，活動ノードｇ，活動ノードｉ｝
（６）｛活動ノードａ，活動ノードｂ，活動ノードｅ，活動ノードｈ，活動ノードｉ｝
【００６９】
これらの活動ノード列のうち、第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行するのは、１つめの活動ノード列と４つめの活動ノード列のみである。したがって、活動ノードｂは上記条件を満たしておらず、変数Ｅに代入される。ステップＳ２００７では変数Ｅが空であるか判定されるが、変数ＥにはステップＳ２００６で活動ノードｂが代入されており空ではないため、処理はステップＳ２００８に進む。
【００７０】
ステップＳ２００８では、変数Ｅ中の活動ノード（活動ノードｂ）が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｃに、満たさないすべての活動ノードを変数Ｆに代入する。
【００７１】
（条件）変数Ａの業務プロセス定義（図１４の業務プロセス定義）でその活動ノードを含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動を実行しない。
【００７２】
すでに示したとおり、活動ノードｂを含む活動ノード列で第一の活動列に含まれるすべての活動を実行するものが２つあるので、活動ノードｂは上記条件を満たしておらず、変数Ｆに代入される。ステップＳ２００９では変数Ｆが空であるか判定されるが、変数ＦにはＳ２００８で活動ノードｂが代入されており空ではないため、処理はステップＳ２０１０に進む。
【００７３】
ステップＳ２０１０では変数Ｇに、変数Ｆの値の先頭要素が代入される。ここでは変数Ｆの唯一の要素である活動ノードｂが変数Ｇに代入される。次いでステップＳ２０１１では、第一の活動列を構成する活動のうち変数Ｇの値の活動ノードを含む活動ノード列の一部のみで実行されるものが変数Ｈに代入される。ここでは、第一の活動列を構成する活動（活動ｂ、活動ｆ）のうち、上で示した６つの活動ノード列の一部のみで実行される活動ｆが変数Ｈに代入される。そして、変数Ｉには、変数Ｇの値（活動ノードｂ）を含む活動ノード列で、変数Ｈに代入された活動を実行する活動ノードを、変数Ｇの値（活動ノードｂ）との問のノード数の小さいものから並べたリストが代入される。ここでは、変数Ｉに活動ノードｆのみからなるリストが代入される。ステップＳ２０１２では、変数Ｉの先頭要素が変数Ｊに代入される。ここでは、変数Ｉの唯一の要素である活動ノードｆが変数Ｊに代入される。
【００７４】
ステップＳ２０１３では、変数Ｇの値（活動ノードｂ）および変数Ｊの値（活動ノードｆ）を含む活動ノード列で変数Ｊの値が変数Ｇの値より後に出現するか判定される。ここでは、活動ノードｆは活動ノードｂの後に出現するので、処理はステップＳ２０１４に進む。
【００７５】
ステップＳ２０１４では、（変数Ｊの値，変数Ｇの値）の組を引数として変数Ａの値である業務プロセス定義（図１４の業務プロセス定義）に操作１が実行され、その結果（図２８の業務プロセス定義）が変数Ａに代入される。
【００７６】
操作１の詳細な処理の流れは図２２に示されている。まずステップＳ２２０１では、変数Ａにおいて変数Ｇの値（活動ノードｂ）から変数Ｊの値（活動ノードｆ）に至るノード列に含まれる排他的分岐で、その分岐を開始端とするシーケンスフローの一部が第一の活動ノードに到達できず、かつ、そのノード列において変数Ｇの値（活動ノードｂ）との間に位置するノード数が最小のものを特定し、変数Ｋに代入する。ここでは、活動ノードｂから活動ノードｆに至るノード列に含まれる３つの排他的分岐（分岐ノードＣ、分岐ノードＥ、分岐ノードＦ）のうち、その分岐を開始端とするシーケンスフローの一部が第一の活動ノードに到達できないものは２つ（分岐ノードＥ、分岐ノードＦ）であり、そのうち活動ノードｂとの間に位置するノード数が最小のものは分岐ノードＥであるため、変数Ｋには分岐ノードＥが代入される。次いでステップＳ２２０２では、変数Ａの業務プロセス定義において変数Ｇの値（活動ノードｂ）から変数Ｋの値（分岐ノードＥ）に至るノードおよびノードを開始端とするシーケンスフローからなる部分グラフ（変数Ｋの値および変数Ｋの値を終了端とするシーケンスフローは除く）が変数Ｌに代入される。ここで変数Ｌに代入される部分グラフを図２５に示す。
【００７７】
次いでステップＳ２２０３では、変数Ｋの値（分岐ノードＥ）を開始端とするシーケンスフローごとに変数Ｌの値（図２５の部分グラフ）のコピーを生成し、そのシーケンスフローの開始端を変数Ｌのコピーの末尾ノードに変更する。ステップＳ２２０３終了時点での業務プロセス定義を図２６に示す。図２６では、変数Ｌの値のコピーの背景に斜線を付している。
【００７８】
さらにステップＳ２２０４では、変数Ｌ中のノードを終了端とするシーケンスフロー（元のシーケンスフロー）ごとに変数Ｋの値（分岐ノードＥ）のコピーを生成し、元のシーケンスフローの終了端を変数Ｋの値のコピーに変更する。また、変数Ｋの値のコピーを開始端とするシーケンスフローを生成し、その終了端を、元のシーケンスフローの終了端であった変数Ｌの値中のノードをコピーして生成された、変数Ｌの値のコピー中のノードに設定する。ステップＳ２２０４終了時点での業務プロセス定義を図２７に示す。最後にステップＳ２２０５で変数Ｋの値と変数Ｌの値、および、変数Ｋの値と変数Ｌの値を接続するシーケンスフローを削除し、処理を終了する。ステップＳ２２０５終了時点での業務プロセス定義を図２８に示す。なお、図２８の業務プロセス定義では同ーの活動や分岐・結合に対応する活動ノードや分岐・結合ノードが複数存在するので、これ以降は業務プロセス定義中のシーケンスフローに番号を付与し、活動ノードや分岐・結合ノードをたとえば活動ノードａ（｛｝，｛１｝）などと表記することとする。
【００７９】
処理は図２０に戻り、ステップＳ２０１８では変数Ｊの値（活動ノードｆ）が変数Ｉの末尾要素か否か判定される。ここでは活動ノードｆが変数Ｉの唯一の要素なので、処理はステップＳ２０１９に進み、変数Ｇの値（活動ノードｂ）が変数Ｆの末尾要素か否か判定される。活動ノードｂも変数Ｆの唯一の要素なので、処理はステップＳ２００４に戻る。
【００８０】
ステップＳ２００４で変数群が初期化された後、ステップＳ２００５では変数Ａの値の業務プロセス定義（図２８の業務プロセス定義）中の活動ノードで、入力された第二の活動列中の活動（活動ｂ）を実行する活動ノードのうち、変数Ｂおよび変数Ｃに含まれないものを変数Ｄに代入する。ここでは、活動ノードｂ（｛４｝，｛７｝）と活動ノードｂ（｛５｝，｛８｝）が変数Ｄに代入される。次いでステップＳ２００６では、変数Ｄ中の活動ノード（活動ノードｂ（｛４｝，｛７｝）と活動ノードｂ（｛５｝，｛８｝））が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｂに、満たさないすべての活動ノードを変数Ｅに代入する。
【００８１】
（条件）変数Ａの業務プロセス定義（図２８の業務プロセス定義）でその活動ノードを含むすべての活動ノード列が第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行する。
【００８２】
まず、活動ノードｂ（｛４｝，｛７｝）を含む全ての活動ノード列は以下の４つである。
【００８３】
（１）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛４｝，｛７｝），活動ノードｄ（｛１３｝，｛１７｝），活動ノードｆ（｛２３｝，｛２６｝），活動ノードｉ（｛２８｝，｛｝）｝
（２）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛４｝，｛７｝），活動ノードｄ（｛１３｝，｛１７｝），活動ノードｇ（｛２４｝，｛２７｝），活動ノードｉ（｛２８｝，｛｝）｝
（３）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛４｝，｛７｝），活動ノードｅ（｛１４｝，｛１８｝），活動ノードｆ（｛２３｝，（２６｝），活動ノードｉ（｛２８｝，｛｝）｝
（４）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛４｝，｛７｝），活動ノードｅ（｛１４｝，｛１８｝），活動ノードｇ（｛２４｝，｛２７｝），活動ノードｉ（｛２８｝，｛｝）｝
【００８４】
これらのうち、第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行するのは、第一の活動ノード列と第三の活動ノード列のみである。このため、活動ノードｂ（｛４｝，｛７｝）は、上記条件を満たしておらず、変数Ｅに代入される。同様に、活動ノードｂ（｛５｝，｛８｝）を含む全ての活動ノード列は以下の２つである。
【００８５】
（１）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛５｝，｛８｝），活動ノードｄ（｛１５｝，｛１９｝），活動ノードｈ（｛２２｝，｛２５｝），活動ノードｉ（｛２８｝，｛｝）｝
【００８６】
（２）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛５｝，｛８｝），活動ノードｅ（｛１６｝，｛２０｝），活動ノードｈ（｛２２｝，｛２５｝），活動ノードｉ（｛２８｝，｛｝）｝
【００８７】
これらはいずれも第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行しない。このため、活動ノードｂ（｛５｝，（８｝）も変数Ｅに代入される。処理はステップＳ２００７を経てステップＳ２００８に進み、変数Ｅ中の活動ノード（活動ノードｂ（｛４｝，｛７｝）、活動ノードｂ（｛５｝，（８｝））が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｃに、満たさないすべての活動ノードを変数Ｆに代入する。
【００８８】
（条件）変数Ａの業務プロセス定義（図２８の業務プロセス定義）でその活動ノードを含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動を実行しない。
【００８９】
上で示したとおり、活動ノードｂ（｛５｝，｛８｝）はこの条件を満たすが、活動ノードｂ（｛４｝，｛７｝）はこの条件を満たさない。したがって、活動ノードｂ（｛５｝，（８｝）は変数Ｃに代入され、活動ノードｂ（｛４｝，｛７｝）は変数Ｆに代入される。ステップＳ２００９を経て処理はステップＳ２０１０に進み、変数Ｇには変数Ｆの先頭要素である活動ノードｂ（｛４｝，｛７｝）が代入される。
【００９０】
ステップＳ２０１１では、第一の活動列を構成する活動（活動ｂ、活動ｆ）のうち変数Ｇの値（活動ノードｂ（｛４｝，｛７｝））を含む活動ノード列の一部のみで実行されるものが変数Ｈに代入され、前記活動ノード列で変数Ｈの活動を実行する活動ノードが変数Ｉに代入される。ここでは、変数Ｉに活動ノードｆ（｛２３｝，｛２６｝）が代入される。処理はステップＳ２０１２、ステップＳ２０１３を経てステップＳ２０１４に進み、（変数Ｊの値（活動ノードｆ（｛２３｝，｛２６｝）），変数Ｇの値（活動ノードｂ（｛４｝，｛７｝）））を引数として変数Ａの値である業務プロセス定義（図２８の業務プロセス定義）に操作１が実行される。操作１終了時点での業務プロセス定義を図２９に示す。
【００９１】
ステップＳ２０１８では変数Ｊの値（活動ノードｆ（｛２３｝，｛２６｝））が変数Ｉの末尾要素か否か判定される。ここでは活動ノードｆ（｛２３｝，｛２６｝）が変数Ｉの唯一の要素なので、処理はステップＳ２０１９に進み、変数Ｇの値（活動ノードｂ（｛４｝，｛７｝））が変数Ｆの末尾要素か否か判定される。活動ノードｂ（｛４｝，｛７｝）も変数Ｆの唯一の要素なので、処理はステップＳ２００４に戻る。
【００９２】
処理はステップＳ２００４に戻り、ステップＳ２００４で変数が初期化された後、ステップＳ２００５では、変数Ａの値の業務プロセス定義（図２９の業務プロセス定義）中の活動ノードで入力の第二の活動列中の活動（活動ｂ）を実行する活動ノードのうち、変数Ｂおよび変数Ｃに含まれないものを変数Ｄに代入する。ここでは、図２９の業務プロセス定義における活動ノードｂ（｛３０｝，｛３４｝）と活動ノードｂ（｛３１｝，｛３５｝）が変数Ｄに代入される。次いでステップＳ２００６では、変数Ｄ中の活動ノード（活動ノードｂ（｛３０｝，｛３４｝）と活動ノードｂ（｛３１｝，｛３５｝））が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｂに、満たさないすべての活動ノードを変数Ｅに代入する。
【００９３】
（条件）変数Ａの業務プロセス定義（図２９の業務プロセス定義）でその活動ノードを含むすべての活動ノード列が第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行する。
【００９４】
まず、活動ノードｂ（｛３０｝，｛３４｝）を含む全ての活動ノード列は以下の２つである。
【００９５】
（１）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛３０｝，｛３４｝），活動ノードｄ（｛３８｝，｛４２｝），活動ノードｆ（｛２３｝，｛２６｝），活動ノードｉ（｛２８｝，｛｝）｝
（２）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛３０｝，｛３４｝），活動ノードｅ（｛３９｝，｛４３｝），活動ノードｆ（｛２３｝，｛２６｝），活動ノードｉ（｛２８｝，｛｝）｝
【００９６】
これらはともに、第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行する。このため、活動ノードｂ（｛３０｝，｛３４｝）は、上記条件を満たしており、変数Ｂに代入される。同様に、活動ノードｂ（｛３１｝，｛３５｝）を含む全ての活動ノード列は以下の２つである。
【００９７】
（１）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛３１｝，｛３５｝），活動ノードｄ（｛４０｝，｛４４｝），活動ノードｇ（｛２４｝，｛２７｝），活動ノードｉ（｛２８｝，｛｝）｝
（２）｛活動ノードａ（｛｝，｛１｝），活動ノードｂ（｛３１｝，｛３５｝），活動ノードｅ（｛４１｝，｛４５｝），活動ノードｇ（｛２４｝，｛２７｝），活動ノードｉ（｛２８｝，｛｝）｝
【００９８】
これらはいずれも第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行しない。このため、活動ノードｂ（｛３１｝，｛３５｝）は変数Ｅに代入される。
【００９９】
処理はステップＳ２００７を経てステップＳ２００８に進み、変数Ｅ中の活動ノード（活動ノードｂ（｛３１｝，｛３５｝）が以下の条件を満たすか判定し、満たすすべての活動ノードを変数Ｃに、満たさないすべての活動ノードを変数Ｆに代入する。
【０１００】
（条件）変数Ａの業務プロセス定義（図２９の業務プロセス定義）でその活動ノードを含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動を実行しない。
【０１０１】
上で示したとおり、活動ノードｂ（｛３１｝，｛３５｝）を含むいずれの活動ノード列も、第一の活動列に含まれるすべての活動（活動ｂ、活動ｆ）を実行しない。このため、活動ノードｂ（｛３１｝，｛３５｝）は変数Ｃに代入される。処理はステップＳ２００７に進み、変数Ｅが空か判定される。ここでは変数Ｅは空なので処理はステップＳ２０１６に進み、変数Ａの値である業務プロセス定義中のフォーク分岐代替活動ノードを活動ノードに置換する処理が実行されるが、図２９の業務プロセス定義にはフォーク分岐代替活動ノードが含まれないので、置換処理は実行されない。最後にステップＳ２０１７で変数Ａの値（図２９の業務プロセス定義）と変数Ｂの値（活動ノードｂ（｛３０｝，｛３４｝）が出力され、業務プロセス定義変換部の処理が終了する。
【０１０２】
本実施例の業務プロセス編集システムの利用者は、業務プロセス定義編集部を介して図２９の業務プロセス定義と活動ノードｂ（｛３０｝，｛３４｝）を取得する。利用者は、活動ノードｂ（｛３０｝，｛３４｝）の直前または直後のシーケンスフロー（シーケンスフロー３０、シーケンスフロー３４）上に活動を挿入することで、活動ｂおよび活動ｆを実行する活動列のみで実行され、活動ｂまたは活動ｆの少なくとも一方を含まない活動列では実行されない活動を追加できる。
【０１０３】
なお、本実施例では、図２２のステップＳ２２０２において、変数Ａの業務プロセス定義において変数Ｇの値から変数Ｋの値に至るノードおよびノードを開始端とするシーケンスフローからなる部分グラフ（変数Ｋの値自身および変数Ｋの値を終了端とするシーケンスフローは除く）が変数Ｌの値として代入された。しかし、変数Ａの業務プロセス定義において変数Ｇの値から変数Ｋの値に至るノードに加え、以下の条件を満たす任意の数のノードおよびそのノードを開始端とするシーケンスフローからなる部分グラフを変数Ｌの値として代入しても、同等の効果を得ることができる。
【０１０４】
（条件）そのノードを開始端とするすべてのシーケンスフローの終了端は、変数Ｌの値であるグラフに含まれるノードである。
【０１０５】
ステップＳ２２０２の処理を上記の通り変更した場合に、変数Ａの値が図１４の業務プロセス定義、変数Ｇの値が活動ノードｂ、変数Ｋの値が排他的分岐ノードＥであるとき、ステップＳ２２０２において変数Ｌに代入される部分グラフの例を図３０に示す。図３０の部分グラフには、図２５の部分グラフに対して上の条件を満たすノードとして排他的分岐ノードＡと活動ノードｃが追加されている。また、変数Ｌに図３０の部分グラフが代入された場合の、ステップＳ２２０５終了時点での業務プロセス定義を図３１に示す。
【０１０６】
同様に、図２３のステップＳ２３０２においては、変数Ａの業務プロセス定義において変数Ｍの値から変数Ｇの値に至るノードおよびノードを終了端とするシーケンスフローからなる部分グラフ（変数Ｍの値自身および変数Ｍの値を開始端とするシーケンスフローは除く）が変数Ｎの値として代入されている。しかし、変数Ａの業務プロセス定義において変数Ｍの値から変数Ｇの値に至るノードに加え、以下の条件を満たす任意の数のノードおよびそのノードを終了端とするシーケンスフローからなる部分グラフを変数Ｎの値として代入しても、同等の効果を得ることができる。
【０１０７】
（条件）そのノードを終了端とするすべてのシーケンスフローの開始端は、変数Ｎの値であるグラフに含まれるノードである。
【０１０８】
（業務プロセス定義の変換例２）
【０１０９】
次に、業務プロセス定義変換部１２２に、以下の業務プロセス定義、活動列１、活動列２が入力された場合の業務プロセス定義の変換過程の概要を示す。なお、以下の説明では、先に示した変換例１の場合と同じ処理についてはその説明を省略することがあるので、必要に応じて変換例１の説明を参照されたい。
【０１１０】
（１）業務プロセス定義：図１４の業務プロセス定義
（２）活動列１：｛活動ｂ，活動ｄ，活動ｆ｝
（２）活動列２：｛活動ｂ｝
【０１１１】
業務プロセス定義変換部１２２が起動すると、図２０のステップＳ２００５では図１４の活動ノードｂが変数Ｄに代入される。そしてステップＳ２００６からステップＳ２００９に至る一連の処理の結果、変数Ｄの値（活動ノードｂ）が変数Ｆに代入され、ステップＳ２０１０で変数Ｇに代入される。次いでステップＳ２０１１では、第一の活動列を構成する活動のうち、上で示した６つの活動列の一部のみで実行される活動として活動ｄと活動ｆが変数Ｈに代入される。そして、変数Ｇの値（活動ノードｂ）を含む活動ノード列で、変数Ｈの値に代入された活動を実行する活動ノードを、変数Ｇの値との問のノード数の小さいものから並べたリストである｛活動ノードｄ，活動ノードｆ｝が変数Ｉに代入される。
【０１１２】
処理はステップＳ２０１２、ステップＳ２０１３、ステップＳ２０１４と進み、変数Ａの値（図１４の業務プロセス定義）に対して（活動ノードｄ，活動ノードｂ）を引数として操作１が実行される。操作１実行終了時点での業務プロセス定義を図３２に示す。
【０１１３】
処理はステップＳ２００４に戻り、ステップＳ２００５では図３２の活動ノードｂ（｛４｝，｛７｝）と活動ノードｂ（｛５｝，｛８｝）が変数Ｄに代入される。Ｓ２００８では、これらのうち活動ノードｂ（｛４｝，｛７｝）が変数Ｆに、活動ノードｂ（｛５｝，｛８｝）が変数Ｃに代入される。そしてステップＳ２０１０で変数Ｇには活動ノードｂ（｛４｝，｛７｝）が代入され、ステップＳ２０１１で変数Ｈに活動ｆが代入される。処理はステップＳ２０１２、ステップＳ２０１３、ステップＳ２０１４と進み、変数Ａの値（図３２の業務プロセス定義）に対して（活動ノードｂ（｛４｝，｛７｝），活動ノードｆ（｛１８｝，｛２１｝））を引数として操作１が実行される。操作１実行終了時点での業務プロセス定義を図３３に示す。
【０１１４】
処理は再びステップＳ２００４に戻り、ステップＳ２００５では図３３の活動ノードｂ（｛２５｝，｛３１｝）と活動ノードｂ（｛２６｝，｛３２｝）が変数Ｄに代入される。Ｓ２００８では、これらのうち活動ノードｂ（｛２５｝，｛３１｝）が変数Ｆに、活動ノードｂ（｛２６｝，｛３２｝）が変数Ｃに代入される。そしてステップＳ２０１０で変数Ｇには活動ノードｂ（｛２５｝，｛３１｝）が代入され、ステップＳ２０１１で変数Ｈに活動ｆが代入される。処理はステップＳ２０１２、ステップＳ２０１３、ステップＳ２０１４と進み、変数Ａの値（図３３の業務プロセス定義）に対して（活動ノードｂ（｛２５｝，｛３１｝），活動ノードｆ（｛１８｝，｛２１｝））を引数として操作１が実行される。操作１実行終了時点での業務プロセス定義を図３４に示す。
【０１１５】
処理は再びステップＳ２００４に戻り、Ｓ２００５では図３４の活動ノードｂ（｛３７｝，｛４３｝）と活動ノードｂ（｛３８｝，｛４４｝）が変数Ｄに代入される。これらのうち、活動ノードｂ（｛３７｝，｛４３｝）はステップＳ２００６で変数Ｂに代入され、活動ノードｂ（｛３８｝，｛４４｝）はＳ２００８で変数Ｃに代入される。この結果、ステップＳ２００９開始時点で変数Ｆの値は空となるため処理はステップＳ２０１６に進み、変数Ａの値である業務プロセス定義中のフォーク分岐代替活動ノードを活動ノードに置換する処理が実行されるが、図３４の業務フ口セス定義にはフォーク分岐代替活動ノードが含まれないので、置換処理は実行されない。最後にステップＳ２０１７で、変数Ａの値（図３４の業務プロセス定義）と変数Ｂの値（活動ノードｂ（｛３７｝，｛４３｝））が出力され、業務プロセス定義変換部の処理が終了する。
【０１１６】
（業務プロセス定義の変換例３）
【０１１７】
次に、業務プロセス定義変換部１２２に、以下の業務プロセス定義、活動列１、活動列２が入力された場合の業務プロセス定義の変換過程の概要を示す。以下の説明でも同様に、先に示した変換例１の場合と同じ処理についてはその説明を省略することがあるので、必要に応じて変換例１の説明を参照されたい。
【０１１８】
（１）業務プロセス定義：図３の業務プロセス定義
（２）活動列１：｛活動ｂ，活動ｄ｝
（３）活動列２：｛活動ｂ｝
【０１１９】
業務プロセス定義変換部１２２が起動すると、図２０のＳ２００５では、図３の活動ノードｂが変数Ｄに代入される。続いてステップＳ２００６では、変数Ｄの値（活動ノードｂ）を含む活動ノード列として以下の３つの活動ノード列が特定され、これらのうち第三の活動ノード列が第一の活動列のすべての活動を実行しないため、活動ノードｂは変数Ｅに代入される。
【０１２０】
（１）｛活動ノードａ，活動ノードｂ，活動ノードｘ，活動ノードｄ，活動ノードｆ｝
（２）｛活動ノードａ，活動ノードｂ，活動ノードｄ，活動ノードｆ｝
（３）｛活動ノードａ，活動ノードｂ，活動ノードｅ，活動ノードｆ｝
【０１２１】
そしてステップＳ２００７からステップＳ２００９に至る一連の処理の結果、変数Ｅの値（活動ノードｂ）は変数Ｆに、次いでステップＳ２０１０で変数Ｇに代入される。次いでステップＳ２０１１では、第一の活動列を構成する活動のうち上記の３つの活動ノード列の一部のみで実行されるものとして活動ｄが特定され、変数Ｈに代入される。そして変数Ｉ、変数Ｊには活動ノードｄが代入される。
【０１２２】
処理はステップＳ２０１３、ステップＳ２０１４と進み、変数Ａの値（図３の業務プロセス定義）に対して（活動ノードｄ，活動ノードｂ）を引数として操作１が実行される。操作１実行終了時点での業務プロセス定義を図３５に示す。
【０１２３】
処理はステップＳ２００４に戻り、Ｓ２００５では図３５の活動ノードｂ（｛５｝，｛９｝）と活動ノードｂ（｛６｝，｛１０｝）が変数Ｄに代入される。このうち活動ノードｂ（｛５｝，｛９｝）はステップＳ２００６で変数Ｂに代入され、活動ノードｂ（｛６｝，｛１０｝）はステップＳ２００８で変数Ｅに、ステップＳ２００８で変数Ｆに、さらにステップＳ２０１０で変数Ｇに代入される。ステップＳ２０１１では第一の活動列を構成する活動（活動ｂ、活動ｄ）のうち変数Ｇの値（活動ノードｂ（｛６｝，｛１０｝））を含む活動ノード列の一部のみで実行されるものとして活動ｄが変数Ｈに代入され、変数Ｉには活動ノードｄ（｛１６｝，｛１７｝）が代入される。
【０１２４】
処理はステップＳ２０１３、ステップＳ２０１４と進み、変数Ａの値（図３５の業務プロセス定義）に対して（活動ノードｄ（｛１６｝，｛１７｝），活動ノードｂ（｛６｝，｛１０｝））を引数として操作１が実行される。操作１実行終了時点での業務プロセス定義を図３６に示す。
【０１２５】
処理は再びステップＳ２００４に戻り、Ｓ２００５では図３６の活動ノードｂ（｛２０｝，｛２４｝）と活動ノードｂ（｛２１｝，｛２５｝）が変数Ｄに代入される。このうち活動ノードｂ（｛２０｝，｛２４｝）はステップＳ２００６で変数Ｂに代入され、活動ノードｂ（｛２１｝，｛２５｝）はＳ２００８で変数Ｃに代入される。この結果、ステップＳ２００９開始時点で変数Ｆの値が空となるため処理はステップＳ２０１６に進み、変数Ａの値である業務プロセス定義中のフォーク分岐代替活動ノードを活動ノードに置換する処理が実行されるが、図３６の業務プロセス定義にはフォーク分岐代替活動ノードが含まれないので、置換処理は実行されない。最後にステップＳ２０１７で変数Ａの値（図３６の業務プロセス定義）と変数Ｂの値（活動ノードｂ（｛５｝，｛９｝）、活動ノードｂ（｛２０｝，｛２４｝））が出力され、業務プロセス定義変換部の処理が終了する。
【０１２６】
（業務プロセス定義の変換例４）
【０１２７】
次に、業務プロセス定義変換部１２２に以下の業務プロセス定義、活動列１、活動列２が入力された場合の業務プロセス定義の変換過程の概要を示す。以下の説明でも同様に、先に示した変換例１の場合と同じ処理についてはその説明を省略することがあるので、必要に応じて変換例１の説明を参照されたい。
【０１２８】
（１）業務プロセス定義：図３の業務プロセス定義
（２）活動列１：｛活動ｂ，活動ｄ｝
（３）活動列２：｛活動ｄ｝
【０１２９】
業務プロセス定義変換部１２２が起動すると、図２０のステップＳ２００５では図３の活動ノードｄが変数Ｄに代入される。続いてステップＳ２００６では、変数Ｄの値（活動ノードｄ）を含む活動ノード列として以下の３つの活動ノード列が特定され、これらのうち第三の活動ノード列が第一の活動列のすべての活動（活動ｂ、活動ｄ）を実行しないため、活動ノードｄは変数Ｅに代入される。
【０１３０】
（１）｛活動ノードａ，活動ノードｂ，活動ノードｘ，活動ノードｄ，活動ノードｆ｝
（２）｛活動ノードａ，活動ノードｂ，活動ノードｄ，活動ノードｆ｝
（３）｛活動ノードａ，活動ノードｃ，活動ノードｄ，活動ノードｆ｝
【０１３１】
そしてステップＳ２００７からステップＳ２００９に至る一連の処理の結果、変数Ｄの値（活動ノードｄ）は変数Ｆに、ステップＳ２０１０で変数Ｇに代入される。次いでステップＳ２０１１では、第一の活動列を構成する活動のうち、上で示した３つの活動列の一部のみで実行される活動として活動ｂが変数Ｈに代入される。そして、変数Ｉには活動ノードｂのみからなるリストが代入される。
【０１３２】
処理はステップＳ２０１２を経てステップＳ２０１３に進み、ここで変数Ｊの値（活動ノードｂ）が変数Ｇの値（活動ノードｄ）より後に出現しないと判断されて、処理はステップＳ２０１５と進む。ステップＳ２０１５においては、変数Ａの値（図３の業務プロセス定義）に対して（活動ノードｂ，活動ノードｄ）を引数として操作２が実行される。操作２実行終了時点での業務プロセス定義を図３７に示す。
【０１３３】
処理はステップＳ２００４に戻り、ステップＳ２００５では図３７の活動ノードｄ（｛１６｝，｛１８｝）と活動ノードｄ（｛１７｝，｛１９｝）が変数Ｄに代入される。これらのうち活動ノードｄ（｛１６｝，｛１８｝）がステップＳ２００６で変数Ｂに代入され、活動ノードｄ（｛１７｝，｛１９｝）がステップＳ２００８で変数Ｃに代入される。この結果、ステップＳ２００９開始時点で変数Ｆの値が空となるため、処理はステップＳ２０１６に進み、変数Ａの値である業務プロセス定義中のフォーク分岐代替活動ノードを活動ノードに置換する処理が実行されるが、図３７の業務プロセス定義にはフォーク分岐代替活動ノードが含まれないので、置換処理は実行されない。最後にステップＳ２０１７で変数Ａの値（図３７の業務プロセス定義）と変数Ｂの値（活動ノードｂ（｛１６｝，｛１８｝））が出力され、業務プロセス定義変換部の処理が終了する。
【０１３４】
（業務プロセス定義の変換例５）
【０１３５】
次に、業務プロセス定義変換部１２２に、以下のフォーク分岐代替活動ノードを含む業務プロセス定義、活動列１、活動列２が入力された場合の業務プロセス定義の変換過程の概要を示す。
【０１３６】
（１）業務プロセス定義：図４の業務プロセス定義
（２）活動列１：｛活動ｂ，活動ｆ｝
（３）活動列２：｛活動ｆ｝
【０１３７】
業務プロセス定義変換部１２２が起動すると、ステップＳ２００２で業務プロセス定義中のフォーク分岐をフォーク分岐代替活動に置換する処理が実行される。具体的には、図２１のステップＳ２１０１で変数Ｘに業務プロセス定義中の全分岐ノードが代入される。ただし、第一の分岐ノードを開始端とする分岐領域が第二の分岐ノードを開始端とする分岐領域を含むとき、Ｘでは第二の分岐ノードが第一の分岐ノードより先に出現するようにする。なお、ここでは、変数Ｘに対して以下の順序で分岐ノードが格納されたものとするが、ステップＳ２１０１に記述された条件を満たす範囲で分岐ノードの順序を変更しても同一の結果を得ることができる。
【０１３８】
（変数Ｘの値）分岐ノードＡ、分岐ノードＦ、分岐ノードＥ
【０１３９】
次いでステップＳ２１０２では変数ＹにＸの先頭要素（ここでは分岐Ａ）が代入される。ステップＳ２１０３では、変数Ｙの値（分岐ノードＡ）はフォーク分岐か否かが判定される。分岐ノードＡはフォーク分岐ではないので処理はステップＳ２１０７に進み、変数Ｙの値を含むフォーク分岐があるか否かが判定される。変数Ｙの値（分岐ノードＡ）を含む分岐は無いので処理はステップＳ２１０５に進み、変数Ｙの値（分岐ノードＡ）が変数Ｘの末尾要素か否かが判定される。ここでは分岐ノードＡは変数Ｘの末尾要素ではないので、処理はステップＳ２１０６に進み、変数Ｙに変数Ｘの次要素（分岐ノードＦ）が格納される。
【０１４０】
処理はステップＳ２１０３に戻り、変数Ｙの値（分岐ノードＦ）がフォーク分岐であるか否かが判定される。分岐ノードＦは排他的分岐でありフォーク分岐ではないので、処理はステップＳ２１０７に進み、変数Ｙの値（分岐ノードＦ）を含むフォーク分岐領域があるか否か判定される。ここではフォーク分岐ノードＥを開始端とするフォーク分岐領域が分岐ノードＦを含むので、処理はステップＳ２１０８に進み、変数Ｗに変数Ｙの値（分岐ノードＦ）を含む最小のフォーク分岐領域として分岐ノードＥを開始端とするフォーク分岐領域が代入される。処理はステップＳ２１０９に進み、変数Ｙの値（分岐ノードＦ）が変数Ｗの値（分岐ノードＥを開始端とするフォーク分岐領域）内の活動の情報を利用しているか否かが判定される。ここでは分岐ノードＦは他の活動の情報を利用していないので、処理はステップＳ２１１０に進み、（変数Ｙ，変数Ｗ）に対して操作３が実行される。
【０１４１】
図２４のステップＳ２４０１では、変数Ｙの値（分岐ノードＦ）を開始端とするシーケンスフローの数だけ変数Ｗの値（分岐ノードＥを開始端とするフォーク分岐領域）のコピーを作成する。ここでは、分岐ノードＦを開始端とするシーケンスフローは２つなので、分岐ノードＥを開始端とするフォーク分岐領域は２つ作成される。ステップＳ２４０２では、変数Ｐに変数Ｙの値（分岐ノードＦ）のコピーを代入し、変数Ｑに変数Ｙの値に対応する結合ノード（結合ノードＧ）のコピーを代入する。ステップＳ２４０３では、変数Ｗの値を直前直後のシーケンスフローから分離し、変数Ｗの値の開始端の分岐（分岐ノードＥ）を終了端とするシーケンスフローの終了端を変数Ｐの値（分岐ノードＦ）に、変数Ｗの値の終了端の結合（結合ノードＨ）を開始端とするシーケンスフローの開始端を変数Ｑの値（結合ノードＧ）に置き換える。なお、変数Ｗの値のオリジナルは削除されたものとする。この時点での業務プロセス定義を図３８に示す。
【０１４２】
次いでステップＳ２４０４では、変数Ｒに変数Ｗの値（分岐ノードＥを開始端とするフォーク分岐領域）の１番目のコピーを代入する。ステップＳ２４０５では、変数Ｒの値（分岐ノードＥを開始端とするフォーク分岐領域）に含まれる、変数Ｙの値（分岐ノードＦ）を開始端とする分岐領域を、分岐領域のｎ番目（ここでは１番目）の分岐から分岐領域終了端の結合まで（ここでは活動ノードｆ）に置き換える。ステップＳ２４０６では、変数Ｐの値（分岐ノードＦ）のｎ番目（ここでは１番目）の分岐を開始端とし、変数Ｒの値（分岐ノードＥを開始端とするフォーク分岐領域）の開始端の分岐を終了端とするシーケンスフローを生成する。ステップＳ２４０７では、変数Ｒの値（分岐ノードＥを開始端とするフォーク分岐領域）の終了端の結合を開始端とし、変数Ｑの値（結合ノードＧ）のｎ番目の結合を終了端とするシーケンスフローを生成する。この時点での業務プロセス定義を図３９に示す。
【０１４３】
この後も図２４での処理が継続し、変数Ｗに複数のコピーがある場合、ステップＳ２４０５からＳ２４０７の処理が繰り返される。図２４の処理終了時点での業務プロセス定義を図４０に示す。
【０１４４】
処理は図２１に戻り、ステップＳ２１１１では操作３で生成された分岐領域開始端の分岐ノードを、変数Ｘにおける変数Ｙの次の値として追加し、操作３で削除された分岐領域開始端の分岐ノードをＸから削除する。このとき、Ｘから削除される分岐ノードに変数Ｙの値が含まれる場合は以下の通り処理する。
（１）変数Ｙの値が変数Ｘの先頭要素でない場合、変数Ｙの値の直前に位置する分岐ノードを変数Ｙの値とする。
（２）変数Ｙの値が変数Ｘの先頭要素である場合、変数Ｙの値を特別な値（たとえばＮＵＬＬ値）とし、Ｓ２１０６ではその特別な値の次要素として変数Ｘにおける先頭要素を変数Ｙに代入する。
この結果、変数Ｘの値は以下の通りとなる。
【０１４５】
（変数Ｘの値）分岐ノードＡ（｛１｝，｛２，４｝）、分岐ノードＥ（｛７｝，｛８，１０｝）、分岐ノードＥ（｛１３｝，｛１４，１６｝）、分岐ノードＦ（｛６｝，｛７，１３｝）
【０１４６】
処理はステップＳ２１０５、ステップＳ２１０６と進み、変数Ｙに変数Ｘの次要素（分岐ノードＥ（｛７｝，｛８，１０｝））が代入されて処理がステップＳ２１０３に戻り、変数Ｙの値（分岐ノードＥ（｛７｝，｛８，１０｝））がフォーク分岐か否かが判定される。分岐ノードＥ（｛７｝，｛８，１０｝）はフォーク分岐なので、処理はステップＳ２１０４に進み、フォーク分岐領域代替活動ノードである変数Ｚ（ここでは活動ノードｘとする）を生成し、変数Ｙの値（分岐ノードＥ（｛７｝，｛８，１０｝））を開始端とする分岐領域と置き換える。フォーク分岐領域代替活動は活動の一種で、置換したフォーク分岐領域との対応関係を保持している。この時点での業務プロセス定義、および、フォーク分岐領域代替活動ノードｘと元のフォーク分岐領域との対応関係を図４１に示す。なお、図において、フォーク分岐領域代替活動ノードは斜線を付した正方形で表記する。
【０１４７】
この後も図２１での処理が継続され、変数Ｘの各要素に対してステップＳ２１０３からＳ２１０５の処理が繰り返される。図２１の処理終了時点での業務プロセス定義を図４２に示す。
【０１４８】
処理は図２０のステップＳ２００３に戻り、Ｓ２００５では図４２の活動ノードｘ（｛７｝，｛１２｝）が変数Ｄに代入される。続いてステップＳ２００６では、変数Ｄの値（活動ノードｘ（｛７｝，｛１２｝））を含む活動ノード列として以下の２つの活動ノード列が特定され、これらのうち第二の活動ノード列が第一の活動列のすべての活動（活動ｂ、活動ｘ）を実行しないため、活動ノードｘ（｛７｝，｛１２｝）は変数Ｅに代入される。
【０１４９】
（１）｛活動ノードａ，活動ノードｂ，活動ノードｘ，活動ノードｉ｝
（２）｛活動ノードａ，活動ノードｃ，活動ノードｘ，活動ノードｉ｝
【０１５０】
そしてステップＳ２００７からステップＳ２０１０に至る一連の処理の結果、変数Ｅの値（活動ノードｘ（｛７｝，｛１２｝））が変数Ｆおよび変数Ｇに代入される。次いでステップＳ２０１１では、第一の活動列を構成する活動のうち、上の２つの活動ノード列の一部のみで実行される活動として活動ｂが特定され、変数Ｈに代入される。そして変数Ｉには活動ノードｂ（｛２｝，｛３｝）が代入される。処理はステップＳ２０１２、ステップＳ２０１３、ステップＳ２０１５と進み、変数Ａの値（図４２の業務プロセス定義）に対して（活動ノードｂ，活動ノードｘ）を引数として操作２が実行される。操作２実行終了時点での業務プロセス定義を図４３に示す。
【０１５１】
処理はステップＳ２００４に戻り、ステップＳ２００５では図４３の活動ノードｘ（｛２０｝，｛２４｝）と活動ノードｘ（｛２２｝，｛２５｝）が変数Ｄに代入される。これらのうち活動ノードｘ（｛２０｝，｛２４｝）はステップＳ２００６で変数Ｂに代入され、活動ノードｘ（｛２２｝，｛２５｝）はステップＳ２００８で変数Ｃに代入される。この結果、ステップＳ２００９開始時点で変数Ｆの値が空となるため処理はステップＳ２０１６に進み、変数Ａの値である業務プロセス定義中のフォーク分岐代替活動ノードを活動ノードに置換する処理が実行される。この時点での業務プロセス定義を図４４に示す。またステップＳ２０１６では、変数Ｂに含まれるフォーク分岐代替活動ノード（活動ノードｘ（｛２０｝，｛２４｝））が、対応するフォーク分岐領域内の活動ノードで第二の活動列に含まれる活動（活動ｆ）を実行する活動ノード（活動ノードｆ（｛２６｝，｛３２｝））に置換される。この結果、ステップＳ２０１７では、業務プロセス定義として図４４の業務プロセス定義と、変数Ｘの値として活動ノードｆ（｛２６｝，｛３２｝）が出力され、業務プロセス定義変換部の処理が終了する。
【０１５２】
（第二の実施の形態）
次に、本発明の第二の実施の形態について説明する。図４５〜図５６は、本発明の第二の実施の形態に係る業務プロセス定義変換装置に係る。
【０１５３】
（第二の実施の形態の構成）
図４５は、本実施の形態に係る業務プロセス定義編集システムの構成図である。図４５に示すとおり、本システム４５０は業務プロセス定義編集部４５１と活動移動先シーケンスフロー特定部４５２から構成される。業務プロセス定義編集部４５１は、利用者の指示に応じて業務プロセス定義のグラフィック表現（たとえば図１０のような表現）を表示する。そして活動、分岐、結合、シーケンスフローの追加・削除や、活動・分岐・結合とシーケンスフローの接続・分割などの指示に応じてグラフィック表現を変更し、利用者からの保存指示に応じてグラフィック表現の内容をデータ表現（たとえば図２に示すような表現）に反映させる。
【０１５４】
また、業務プロセス定義編集部４５１は、利用者から、業務プロセス定義のグラフィック表現上で、位置変更対象の活動の指定とともに移動先シーケンスフロー特定指示を受け付ける。そして、業務プロセス定義のグラフィック表現をデータ表現に反映させた上でそのデータ表現と指定された活動、業務プロセス定義に対応付けられている制約（たとえば図１０および図１３で示したもの）を、活動移動先シーケンスフロー特定部４５２に入力する。さらに、業務プロセス定義編集部４５１は、活動移動先シーケンスフロー特定部４５２から出力されたシーケンスフロー（群）のデータ表現を受理して、グラフィック表現を介して利用者に示す。
【０１５５】
（第二の実施の形態の動作）
次に、本実施の形態における処理の流れについて説明する。活動移動先シーケンスフロー特定部４５２は、位置変更対象の活動を業務プロセス定義中の単一のシーケンスフロー上に移動することを前提として、移動先のシーケンスフロー（群）を特定する。活動移動先シーケンスフロー特定部４５２の基本的な処理の流れの例を図４６に示す。また、図４６の処理のうち、制約のリストＡを生成する処理（ステップＳ４６０２）の詳細な流れの例を図４７に、シーケンスフローの集合Ｂの全要素のうち、制約Ｃを満たすものすべてを特定する処理（ステップＳ４６０５）の詳細な流れの例を図４８に示す。
【０１５６】
図４６のステップＳ４６０１において、利用者によって入力された活動は、活動Ｘに格納され、ステップＳ４６０２において、その活動Ｘに対する制約のリストＡが求められる。活動Ｘに関する制約は、先行する活動と後行する活動の組で表現する。この制約のリストＡの算出手順については後述する。
【０１５７】
次に、ステップＳ４６０３において、入力の業務プロセス定義中の全シーケンスフローから活動Ｘに隣接するものを除いたもの全てを、シーケンスフローの集合Ｂに格納する。
【０１５８】
ステップＳ４６０４において、制約のリストＡの先頭要素を制約Ｃに格納し、シーケンスフローの集合Ｂの全要素のうち、制約Ｃを満たすシーケンスフローを抽出する（ステップＳ４６０５）。ステップＳ４６０５の詳細な手順に関しては図４８で詳細に説明する。
【０１５９】
次に、制約Ｃが制約のリストＡの末尾要素であるか判別し（ステップＳ４６０６）、末尾要素でなければ、制約のリストＡの次要素を読出して制約Ｃに格納してステップＳ４６０５からＳ４６０６の手順を繰り返す（ステップＳ４６０７）。制約Ｃが制約のリストＡの末尾要素であれば、ステップＳ４６０８でＢの全要素を出力して、処理を終了する。
【０１６０】
図４７は、図４６のステップＳ４６０２の制約リストＡを生成する処理の詳細な流れを説明するフローチャートである。
【０１６１】
まず、ステップＳ４７０１において制約のリストＡを初期化し、次に、業務プロセス定義のデータ構造の実行順序テーブル（図１３を参照）から先頭要素を読出し、リスク／コントロールのリストＤに記憶する（ステップＳ４７０２）。次に、業務プロセス定義のデータ構造のリスクテーブルとコントロールテーブル（図１３を参照）を参照して、リストＤの各要素である先行情報および後行情報を、対応する活動名で置き換えたものを制約Ｅに代入する（ステップＳ４７０３）。
【０１６２】
次に、制約Ｅの先行情報および後行情報の活動のいずれか一方が、入力の活動であるか判別し（ステップＳ４７０４）、入力の活動であれば制約のリストＡに制約Ｅを追加し（ステップＳ４７０５）、制約Ｅのどちらも入力の活動でなければ、制約のリストＡに追加することなく、処理をステップＳ４７０６に移す。
【０１６３】
次に、ステップＳ４７０６において、リスク／コントロールのリストＤが実行順序テーブルの末尾要素であるか判別し（ステップＳ４７０６）、末尾要素でなければ、末尾要素となるまで、ステップＳ４７０３以降の手順を繰り返す。リストＤが末尾要素となった場合、制約のリストＡの生成が終了し、処理は図４６のステップＳ４６０３に渡される。
【０１６４】
図４８は、図４６のステップＳ４６０５に示す、Ｂの全要素のうち制約Ｃを満たすもの全てを特定する動作を詳細に説明したフローチャートである。
【０１６５】
まず、シーケンスフローの集合ＦをステップＳ４８０１で初期化し、ステップＳ４８０２でシーケンスフローの集合Ｂの先頭要素をシーケンスフローＧに格納する。次いで、入力の活動が、入力の制約の先行活動であるかを判別し（ステップＳ４８０３）、入力の活動が制約の活動の先行活動であれば、シーケンスフローＧの開始端の活動と、入力の制約の後行活動から構成する活動の組Ｈを作成する（ステップＳ４８０４）。一方、入力の活動が制約の活動の先行活動でなければ、入力の制約の先行活動とシーケンスフローＧの終了端の活動からなる活動の組Ｈを作成する（ステップＳ４８０５）。
【０１６６】
次いで、活動の組Ｈの第１の活動から業務プロセス定義のシーケンスフローをたどって、第２の活動に到達可能であるかを判別する（ステップＳ４８０６）。到達可能であれば、シーケンスフローの集合ＦにシーケンスフローＧを追加する（ステップＳ４８０７）。次いで、シーケンスフローＧが、シーケンスフローの集合Ｂの末尾要素であるかを判別し（ステップＳ４８０８）、末尾要素でなければ、末尾要素となるまでシーケンスフローＧにシーケンスフローの集合Ｂの次要素を代入して（ステップＳ４８０９）、ステップＳ４８０３以降の手順を繰り返す。ステップＳ４８０８でシーケンスフローＧが集合Ｂの末尾要素となった場合、シーケンスフローの集合Ｂにシーケンスフローの集合Ｆを代入して（ステップＳ４８１０）、図４６のステップＳ４６０６に処理を渡す。
【０１６７】
（第二の実施の形態におけるシーケンスフローの出力例）
次に、上記処理に従ったシーケンスフローの具体的な出力例について図４９および図５０を参照して説明する。
【０１６８】
図４９は、活動移動先シーケンスフロー特定部４５２に、図１０の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合に、活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図４６の処理の各ステップに対応付けて示したものである。図４９に示すとおり、制約のリストを保持する変数Ａには、活動ａより活動ｂが後に実行されるという制約と、活動ａより活動ｅが後に実行されるという制約が格納される（ステップＳ４６０２）。
【０１６９】
次いでシーケンスフローの集合を保持する変数Ｂには、シーケンスフロー２、３、４、５、６および７の６つのシーケンスフローが格納される（ステップＳ４６０３）。そして、これらのうち第一の制約を満たすものとしてシーケンスフロー２が変数Ｂに格納される（ステップＳ４６０５）。シーケンスフロー２は第二の制約も満たすので、最終的にシーケンスフロー２が活動移動先シーケンスフロー特定部４５２から出力される（ステップＳ４６０８）。
【０１７０】
また、図５０は、活動移動先シーケンスフロー特定部４５２に図１１の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合に活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図４６の処理の各ステップに対応付けて示したものである。図５０に示すとおり、制約のリストを保持する変数Ａには、活動ａより活動ｄが後に実行されるという制約と、活動ａより活動ｆが後に実行されるという制約が格納される（ステップＳ４６０２）。
【０１７１】
次いでシーケンスフローの集合を保持する変数Ｂには、シーケンスフロー２、３、４、５、６、７、８、９、１０および１１の１０のシーケンスフローが格納される（ステップＳ４６０３）。そして、これらのうち第一の制約を満たすものとしてシーケンスフロー２、４および６が変数Ｂに格納される（ステップＳ４６０５）。これらのシーケンスフローは第二の制約も満たすので、最終的にシーケンスフロー２、４および６が活動移動先シーケンスフロー特定部４５２から出力される（ステップＳ４６０８）。
【０１７２】
なお、活動移動先シーケンスフロー特定部４５２に図１２の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合の処理の過程は、図４９に示したものと同一のものとなる。
【０１７３】
（第三の実施の形態）
次に、本発明の第三の実施の形態に係る業務プロセス定義編集システムについて説明する。
【０１７４】
本実施の形態に係る業務プロセス定義編集システムの構成は、第二の実施の形態におけるシステム構成と同一であるが、本実施の形態に係る活動移動先シーケンスフロー特定部４５２は、業務開始から終了に至る活動列を構成する活動群を変更しないという条件のもとで、活動列ごとに移動先のシーケンスフロー（群）を特定する点が異なっている。
【０１７５】
（第三の実施の形態の動作）
次に、本実施の形態における処理の流れについて説明する。活動移動先シーケンスフロー特定部４５２の基本的な処理の流れの例を図５１に示す。ここで、図５１の処理のうち、制約のリストＡを生成する処理（ステップＳ５１０２）の詳細は図４７に示したものと同一である。また、シーケンスフロー列の集合Ｉを特定する処理（ステップＳ５１０３）の詳細な流れの例を図５２に示し、また、図５２の処理で、ノードＪを開始地点としてＫにシーケンスを追加する処理（ステップＳ５２０４）の詳細な流れの例を図５３に示す。さらに、図５１の処理のうちシーケンスフロー列Ｎを対象に、入力の活動が移動可能なシーケンスフローの集合を特定する処理（ステップＳ５１０７）の詳細な流れの例を図５４に示す。
【０１７６】
図５１のステップＳ５１０１において、利用者によって入力された活動は、活動Ｘに格納され、ステップＳ５１０２において、その活動Ｘに対する制約のリストＡが求められる。活動Ｘに関する制約は、先行する活動と後行する活動の組で表現する。この制約のリストＡの算出手順については先の実施の形態において図４７に関連して説明した通りである。
【０１７７】
次いで、ステップＳ５１０３において、入力した業務プロセス定義の先頭活動から末尾活動に至るまでの全てのシーケンスフロー列を、シーケンスフロー列の集合Ｉに格納する一連の処理が実行される。ステップＳ５１０３の詳細な手順に関しては図５２で説明する。
【０１７８】
ステップＳ５１０３においてシーケンスフロー列の集合Ｉの要素が抽出されると、ステップＳ５１０４でシーケンスフロー列とシーケンスフロー集合の組の集合Ｍが初期化され、次いで、ステップＳ５１０５でシーケンスフロー列の集合Ｉの先頭要素が、シーケンスフロー列Ｎに代入される。
【０１７９】
そして、シーケンスフロー列Ｎが、入力の活動を終了端・開始端にするシーケンスフローを含んでいるか否かが判別される（ステップＳ５１０６）。判定の結果、このようなシーケンスフローを含む場合には、シーケンスフロー列Ｎを対象に、活動Ｘが移動可能なシーケンスフローの集合を特定し、（Ｎ、特定した集合）の組を集合Ｍに追加する処理が実行される（ステップＳ５１０７）。ステップＳ５１０７の詳細な手順に関しては図５４で説明する。
【０１８０】
ステップＳ５１０７の処理が完了すると、シーケンスフロー列Ｎはシーケンスフロー列の集合Ｉの末尾要素であるか判別され（ステップＳ５１０８）、末尾要素でなければ、集合Ｉの次要素をＮとして、ステップＳ５１０６以降の動作を繰り返す（ステップＳ５１０９）。一方、シーケンスフロー列Ｎが末尾要素であれば、ステップＳ５１１０で、Ｍの要素（シーケンスフロー列とシーケンスフロー集合の組）の第２要素（シーケンスフロー集合）の要素Ｏのうち、Ｍの他の要素で第１の要素にＯを含むもの全ての第２要素に含まれているもののみを出力して、処理を終了する。
【０１８１】
図５２は、図５１のステップＳ５１０３の動作をより詳細に説明したフローチャートである。まず、ステップＳ５２０１およびステップＳ５２０２で、シーケンスフロー列の集合Ｉおよびシーケンスフロー列Ｋを初期化する。ステップＳ５２０３で業務プロセス定義の先頭活動をノードＪに登録し、ステップＳ５２０４でノードＪを開始点としてシーケンスフロー列Ｋにシーケンスフローを追加する処理が実行される。
【０１８２】
図５３は、図５２のステップＳ５２０４の動作をより詳細に説明したフローチャートである。まず、ステップＳ５３０１でノードＪが業務プロセス定義の末尾活動であるかを判別し、ノードＪが末尾活動であれば、ステップＳ５３０２でシーケンスフロー列Ｋをシーケンスフロー列の集合Ｉに追加し、処理を図５１のステップＳ５１０３に戻す。
【０１８３】
一方、ステップＳ５３０１でノードＪが末尾活動でなければ、ステップＳ５３０３でノードＪが分岐であるかを判別する。ノードＪが分岐であれば、シーケンスフロー列Ｋの複製を分岐先のシーケンスフロー数であるｎ個だけ作成し、Ｋ１、Ｋ２、・・・、Ｋｎとする（ステップＳ５３０４）。次いで、ステップＳ５３０５で、Ｋｉ（ｉ＝１、２、…、ｎ）の末尾要素として分岐を開始点とするｉ番目のシーケンスフローを追加し、ステップＳ５３０６で、そのｉ番目のシーケンスフローの終了端のノードを、Ｊｉ（ｊ＝１、２、…、ｎ）に設定する。そして、ステップＳ５３０７でノードＪ１、Ｊ２、…、Ｊｎを開始地点としてＫ１、Ｋ２、…Ｋｎにシーケンスを追加し、処理を図５１のステップＳ５１０３に戻す。
【０１８４】
一方、ステップＳ５３０３において、ノードＪが分岐でなければ、Ｋの末尾要素として活動または結合を開始端とするシーケンスフローを追加する（ステップＳ５３０８）。次いで、ステップＳ５３０９で追加したシーケンスフローの終了端のノードをノードＪに設定し、ステップＳ５３１０でノードＪを開始地点としてシーケンスフロー列Ｋにシーケンスを追加し、処理を図５１のステップＳ５１０３に戻す。以上の処理により、図５１のステップＳ５１０３においてシーケンスフロー列の集合Ｉが得られる。
【０１８５】
図５４は、図５１のステップＳ５１０７の動作をより詳細に説明したフローチャートである。まず、ステップＳ５４０１で、入力のシーケンスフロー列中の全シーケンスフローから入力の活動に隣接するものを除いたものすべてを、シーケンスフローの集合Ｂに設定する。次いで、ステップＳ５４０２で、制約のリストＡの先頭要素を制約Ｃに代入し、ステップＳ５４０３で、制約Ｃに含まれる２つの活動に隣接するすべてのシーケンスフローがシーケンスフローの集合Ｂに含まれるかを判別し、含まれる場合はステップＳ５４０４で、シーケンスフローの集合Ｂの全要素のうち、制約Ｃを満たすもの全てをシーケンスフローの集合Ｂとして処理をステップＳ５４０５に進め、含まれない場合は処理をステップＳ５４０５に進める。そして、ステップＳ５４０５で、制約Ｃが制約のリストＡの末尾要素であるかを判別し、末尾要素でなければ、制約のリストＡの次要素を制約Ｃとして、ステップＳ５４０３以降の動作を繰り返す（ステップＳ５４０６）。制約Ｃが制約のリストＡの末尾要素となった場合、ステップＳ５４０７でシーケンスフローの集合Ｂの全要素を出力する。以上により、シーケンスフロー列Ｎを対象に、入力の活動が移動可能なシーケンスフローの集合を特定する処理が完了し、処理は図５１のステップＳ５１０８に渡される。
【０１８６】
（第三の実施の形態におけるシーケンスフローの出力例）
次に、上記第三の実施の形態における処理に従ったシーケンスフローの具体的な出力例について図５５および図５６を参照して説明する。
【０１８７】
図５５は、活動移動先シーケンスフロー特定部４５２に、図１０の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合に活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図５１の処理の各ステップに対応付けて示したものである。図５５に示すとおり、制約のリストを保持する変数Ａには、活動ａより活動ｂが後に実行されるという制約と、活動ａより活動ｅが後に実行されるという制約が格納される（ステップＳ５１０２）。次いでシーケンスフロー列の集合Ｉには、以下の２つのシーケンスフローが格納される（ステップＳ５１０３）。
【０１８８】
（１）シーケンスフロー１、２、３および７からなるシーケンスフロー列（シーケンスフロー列１）
（２）シーケンスフロー１、４、５、６および７からなるシーケンスフロー列（シーケンスフロー列２）
【０１８９】
そして、（シーケンスフロー列とシーケンスフロー集合の組）の集合Ｍの要素として、シーケンスフロー列１に対してはシーケンスフロー２が、シーケンスフロー列２に対してはシーケンスフロー４、５、６および７が格納される（ステップＳ５１０７）。
【０１９０】
そして、シーケンスフロー列の集合Ｉの２つのシーケンスフロー列に含まれているにも関わらず、シーケンスフロー列２にのみ対応付けられたシーケンスフロー７が削除された結果、活動移動先シーケンスフロー特定部４５２からは、各シーケンスフロー列に対応して以下のシーケンスフロー群が出力される（ステップＳ５１１０）。
【０１９１】
（１）シーケンスフロー列１に対応するシーケンスフロー群：シーケンスフロー２
（２）シーケンスフロー列２に対応するシーケンスフロー群：シーケンスフロー４、５および６
【０１９２】
また、図５６は、活動移動先シーケンスフロー特定部４５２に図１１の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合に活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図５１の処理の各ステップに対応付けて示したものである。図５６に示すとおり、制約のリストを保持する変数Ａには、活動ａより活動ｄが後に実行されるという制約と、活動ａより活動ｆが後に実行されるという制約が格納される（ステップＳ５１０２）。次いでシーケンスフロー列の集合Ｉには以下の３つのシーケンスフロー列が格納される（ステップＳ５１０３）。
【０１９３】
（１）シーケンスフロー１、２、４、８および１１からなるシーケンスフロー列（シーケンスフロー列１）
（２）シーケンスフロー１、２、４、６、７、９、１０および１１からなるシーケンスフロー列（シーケンスフロー列２）
（３）シーケンスフロー１、３、５、９、１０および１１からなるシーケンスフロー列（シーケンスフロー列３）
【０１９４】
そして、（シーケンスフロー列とシーケンスフロー集合の組）の集合Ｍの要素として、シーケンスフロー列１に対してはシーケンスフロー２、４、８および１１が、シーケンスフロー列２に対してはシーケンスフロー２、４および６が、シーケンスフロー列３に対してはシーケンスフロー３、５、９、１０および１１が格納される（ステップＳ５１０７）。
【０１９５】
そして、シーケンスフロー列の集合Ｉの３つのシーケンスフロー列に含まれているにも関わらず、シーケンスフロー列１およびシーケンスフロー列３にのみ対応付けられたシーケンスフロー１１が削除された結果、活動移動先シーケンスフロー特定部４５２からは、各シーケンスフロー列に対応して以下のシーケンスフロー群が出力される（ステップＳ５１１０）。
【０１９６】
（１）シーケンスフロー列１に対応するシーケンスフロー群：シーケンスフロー２、４および８
（２）シーケンスフロー列２に対応するシーケンスフロー群：シーケンスフロー２、４および６
（３）シーケンスフロー列３に対応するシーケンスフロー群：シーケンスフロー３、５、９および１０
【０１９７】
なお、あるシーケンスフロー列で、移動先のシーケンスフローとして複数のシーケンスフロー列で特定されたシーケンスフローが選択される場合、そのシーケンスフローが特定された他のすべてのシーケンスフロー列でもそのシーケンスフローが選択されなければならない。図５６では、この制約を、複数のシーケンスフロー列に対応するシーケンスフロー群に含まれるシーケンスフロー（シーケンスフロー２、シーケンスフロー４）を円で囲み、同一シーケンスフローに対応する円を破線で接続することで表記している。
【０１９８】
また、活動移動先シーケンスフロー特定部４５２に図１２の業務プロセス定義および制約と、位置変更対象の活動として活動ａが入力された場合の処理の過程は、図５５で示したものと同一のものとなる。
【０１９９】
以上の各実施の形態の説明から明らかなように、本発明の業務プロセス定義変更支援装置によれば、業務を構成する活動の順序関係に関する制約への適合性を損なわない範囲で、業務プロセス定義に対して実行可能な変更（活動の順序関係の変更）の選択肢を示すことができるので、前記制約を伴う業務プロセス定義の変更を支援することができる。
【０２００】
以上、本発明の好ましい実施の形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【産業上の利用可能性】
【０２０１】
本発明は、業務を構成する活動、分岐・結合、活動・分岐・結合実行の順序関係（シーケンスフロー）を含む業務プロセス定義、および業務プロセス定義を構成する各活動の実行の順序関係に関する制約を対象とした管理技術において有用である。
【図面の簡単な説明】
【０２０２】
【図１】業務プロセス定義の一例を示した図である。
【図２Ａ】図１の業務プロセス定義を計算機プログラムで利用する場合のノードに関する情報およびアークに関する情報のデータ構造の例である。
【図２Ｂ】図１の業務プロセス定義を計算機プログラムで利用する場合の活動、分岐・結合に関する情報、ノードに関する情報およびアークに関する情報のデータ構造の例である。
【図３】業務プロセス定義の他の一例を示した図である。
【図４】フォーク分岐を備えた業務プロセス定義の一例を示した図である。
【図５】条件付き分岐を備えた業務プロセス定義の一例を示した図である。
【図６】業務プロセス定義の他の一例を示した図である。
【図７】業務プロセス定義の他の一例を示した図である。
【図８】フォーク分岐を備えた業務プロセス定義の一例を示した図である。
【図９Ａ】図６の業務プロセス定義を計算機プログラムで利用する場合のノードに関する情報およびアークに関する情報のデータ構造の例である。
【図９Ｂ】図６の業務プロセス定義を計算機プログラムで利用する場合の活動、分岐・結合に関する情報、ノードに関する情報およびアークに関する情報のデータ構造の例である。
【図１０】図６の業務プロセス定義に制約情報を設定した図である。
【図１１】図７の業務プロセス定義に制約情報を設定した図である。
【図１２】図８の業務プロセス定義に制約情報を設定した図である。
【図１３】図１０の業務プロセス定義の制約情報を計算機プログラムで利用する場合のデータ構造の例である。
【図１４】業務プロセス定義の一例を示した図である。
【図１５】図１４の業務プロセス定義の変換結果を示した図である。
【図１６】図１４の業務プロセス定義の変換結果を示した図である。
【図１７】図１４の業務プロセス定義の変換結果を示した図である。
【図１８】図１５の業務プロセス定義の変換結果を示した図である。
【図１９】第一実施の形態に係る業務プロセス定義編集システムのブロック構成図である。
【図２０Ａ】業務プロセス定義変換部１２２の基本的な処理の流れの例を示すフローチャートである。
【図２０Ｂ】業務プロセス定義変換部１２２の基本的な処理の流れの例を示すフローチャートである。
【図２１】図２０におけるステップＳ２００２の処理の詳細を示すフローチャートである。
【図２２】図２０の処理で実行される操作１の詳細を示すフローチャートである。
【図２３】図２０の処理で実行される操作２の詳細を示すフローチャートである。
【図２４】図２１の処理で実行される操作３の詳細を示すフローチャートである。
【図２５】図２２の変数Ｌに代入される部分グラフの例を示す図である。
【図２６】図２２におけるステップＳ２２０３終了時点での業務プロセス定義を示す図である。
【図２７】図２２におけるステップＳ２２０４終了時点での業務プロセス定義を示す図である。
【図２８】図２２におけるステップＳ２２０５終了時点での業務プロセス定義を示す図である。
【図２９】図２０における操作１終了時点での業務プロセス定義を示す図である。
【図３０】図２２におけるステップＳ２２０２において変数Ｌに代入される部分グラフの例を示す図である。
【図３１】変換例１における図２２のステップＳ２２０５終了時点での業務プロセス定義を示す図である。
【図３２】変換例２における図２０の操作１終了時点での業務プロセス定義を示す図である。
【図３３】変換例２における図２０の操作１終了時点での業務プロセス定義を示す図である。
【図３４】変換例２における図２０の操作１終了時点での業務プロセス定義を示す図である。
【図３５】変換例３における図２０の操作１終了時点での業務プロセス定義を示す図である。
【図３６】変換例３における図２０の操作１終了時点での業務プロセス定義を示す図である。
【図３７】変換例４における図２０の操作２終了時点での業務プロセス定義を示す図である。
【図３８】変換例５における図２４のステップＳ２４０３終了時点での業務プロセス定義を示す図である。
【図３９】変換例５における図２４のステップＳ２４０７終了時点での業務プロセス定義を示す図である。
【図４０】変換例５における図２４の処理終了時点での業務プロセス定義を示す図である。
【図４１】変換例５における図２４のステップＳ２１０４終了時点での業務プロセス定義を示す図である。
【図４２】変換例５における図２１の処理終了時点での業務プロセス定義を示す図である。
【図４３】変換例５における図２０の操作２終了時点での業務プロセス定義を示す図である。
【図４４】変換例５における図２０の処理終了時点での業務プロセス定義を示す図である。
【図４５】第二の実施の形態に係る業務プロセス定義編集システムのブロック構成図である。
【図４６】活動移動先シーケンスフロー特定部４５２の基本的な処理の流れを示すフローチャートである。
【図４７】図４６のステップＳ４６０２の処理の詳細な流れを説明するフローチャートである。
【図４８】図４６のステップＳ４６０５の動作を詳細に説明するフローチャートである。
【図４９】図１０の業務プロセス定義および制約に対する、活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図４６の処理の各ステップに対応付けて示した図である。
【図５０】図１１の業務プロセス定義および制約に対する、活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図４６の処理の各ステップに対応付けて示した図である。
【図５１】第三の実施の形態における活動移動先シーケンスフロー特定部４５２の基本的な処理の流れを示すフローチャートである。
【図５２】図５１のステップＳ５１０３の動作をより詳細に説明したフローチャートである。
【図５３】図５２のステップＳ５２０４の動作をより詳細に説明したフローチャートである。
【図５４】図５１のステップＳ５１０７の動作をより詳細に説明したフローチャートである。
【図５５】第三の実施の形態における図１０の業務プロセス定義および制約に対する、活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図５１の処理の各ステップに対応付けて示したものである。
【図５６】第三の実施の形態における図１１の業務プロセス定義および制約に対する、活動移動先シーケンスフロー特定部４５２での処理の過程で生成されるデータを、図５１の処理の各ステップに対応付けて示したものである。
【符号の説明】
【０２０３】
１２０：業務プロセス定義編集システム
１２１：業務プロセス定義編集部
１２２：業務プロセス定義変換部
４５０：業務プロセス定義編集システム
４５１：業務プロセス定義編集部
４５２：活動移動先シーケンスフロー特定部
【図１】
0005109741.tif 000002
【図２Ａ】
0005109741.tif 000003
【図２Ｂ】
0005109741.tif 000004
【図３】
0005109741.tif 000005
【図４】
0005109741.tif 000006
【図５】
0005109741.tif 000007
【図６】
0005109741.tif 000008
【図７】
0005109741.tif 000009
【図８】
0005109741.tif 000010
【図９Ａ】
0005109741.tif 000011
【図９Ｂ】
0005109741.tif 000012
【図１０】
0005109741.tif 000013
【図１１】
0005109741.tif 000014
【図１２】
0005109741.tif 000015
【図１３】
0005109741.tif 000016
【図１４】
0005109741.tif 000017
【図１５】
0005109741.tif 000018
【図１６】
0005109741.tif 000019
【図１７】
0005109741.tif 000020
【図１８】
0005109741.tif 000021
【図１９】
0005109741.tif 000022
【図２０Ａ】
0005109741.tif 000023
【図２０Ｂ】
0005109741.tif 000024
【図２１】
0005109741.tif 000025
【図２２】
0005109741.tif 000026
【図２３】
0005109741.tif 000027
【図２４】
0005109741.tif 000028
【図２５】
0005109741.tif 000029
【図２６】
0005109741.tif 000030
【図２７】
0005109741.tif 000031
【図２８】
0005109741.tif 000032
【図２９】
0005109741.tif 000033
【図３０】
0005109741.tif 000034
【図３１】
0005109741.tif 000035
【図３２】
0005109741.tif 000036
【図３３】
0005109741.tif 000037
【図３４】
0005109741.tif 000038
【図３５】
0005109741.tif 000039
【図３６】
0005109741.tif 000040
【図３７】
0005109741.tif 000041
【図３８】
0005109741.tif 000042
【図３９】
0005109741.tif 000043
【図４０】
0005109741.tif 000044
【図４１】
0005109741.tif 000045
【図４２】
0005109741.tif 000046
【図４３】
0005109741.tif 000047
【図４４】
0005109741.tif 000048
【図４５】
0005109741.tif 000049
【図４６】
0005109741.tif 000050
【図４７】
0005109741.tif 000051
【図４８】
0005109741.tif 000052
【図４９】
0005109741.tif 000053
【図５０】
0005109741.tif 000054
【図５１】
0005109741.tif 000055
【図５２】
0005109741.tif 000056
【図５３】
0005109741.tif 000057
【図５４】
0005109741.tif 000058
【図５５】
0005109741.tif 000059
【図５６】
0005109741.tif 000060