(57)【要約】  【課題】アクティビティ図により表現される処理の流れを汎用計算機上で実現するプログラムを生成する。  【解決手段】ＸＭＬなどを用いて記述されたアクティビティ図をアクティビティ情報取得部１４０１で取得し、そのアクティビティ情報に基づいて、アクティビティごとにオブジェクト雛形情報をオブジェクト雛形情報生成部１４０２で生成し、また、そのオブジェクト雛形情報が実行される際に次に実行するオブジェクト雛形情報を決定するために参照される処理順位定義情報を、処理順位定義情報生成部１４０３で生成する。【選択図】  図１４
2005250593.tif 000002
【特許請求の範囲】
【請求項１】
処理の概要を示す複数の処理部分情報と、前記複数の処理部分の処理順位を示す処理順位情報と、を記述した情報であるアクティビティ情報を取得するアクティビティ情報取得部と、
前記アクティビティ情報取得部で取得したアクティビティ情報に含まれる任意の処理部分情報に基づいて、対応するオブジェクト情報を記述するための雛形となるオブジェクト雛形情報を生成するオブジェクト雛形情報生成部と、
前記アクティビティ情報取得部で取得したアクティビティ情報に含まれる処理順位情報に基づいて、前記オブジェクト雛形情報に基づいて記述されるオブジェクト情報が実行される際に参照する情報である処理順位定義情報を生成する処理順位定義情報生成部と、
を有するオブジェクト情報生成装置。
【請求項２】
前記オブジェクト雛形情報は、記述されるオブジェクトを識別するための識別情報を記述した識別情報記述部を有し、
前記処理順位定義情報生成部は、前記識別情報を利用して処理順位定義情報を生成する請求項１に記載のオブジェクト情報生成装置。
【請求項３】
前記オブジェクト雛形情報に基づいて生成されるべきオブジェクト情報の型を示す情報である型情報と、前記オブジェクト雛形情報に基づいて生成されるべきオブジェクト情報の引数の型を示す情報である引数型情報と、を含む情報を前記オブジェクト雛形情報に対応する処理部分情報に関連付けて記述した情報であるアクティビティ仕様情報を取得するアクティビティ仕様情報取得部を有し、
前記オブジェクト雛形情報生成部は、前記アクティビティ仕様情報取得部で取得したアクティビティ仕様情報に含まれる型情報と、引数型情報とに基づいて前記オブジェクト雛形情報を生成する請求項１又は２に記載のオブジェクト情報生成装置。
【請求項４】
前記アクティビティ仕様情報は、構造化文書として記述されている請求項３に記載のオブジェクト情報生成装置。
【請求項５】
前記オブジェクト雛形情報生成部は、
前記処理部分情報が分岐処理を行なうか判断する分岐処理判断手段と、
前記分岐処理判断手段の判断結果に応じて分岐処理を含むオブジェクト雛形情報である分岐型オブジェクト雛形情報か、分岐処理を含まないオブジェクト雛形情報である非分岐型オブジェクト雛形情報かを選択して生成する分岐依存生成手段と、
を有する請求項１から４のいずれか一に記載のオブジェクト情報生成装置。
【請求項６】
前記アクティビティ情報の処理順位情報は、人間が行なう処理を記述するユーザレーンと、システムが行なう処理を記述するシステムレーンに分けて処理順位を記述する請求項１から５のいずれか一に記載のオブジェクト情報生成装置。
【請求項７】
前記アクティビティ情報は、構造化文書として記述されている請求項１から６のいずれか一に記載のオブジェクト情報生成装置。
【請求項８】
前記処理順位定義情報は、構造化文書として記述されている請求項１から７のいずれか一に記載のオブジェクト情報生成装置。
【請求項９】
前記オブジェクト雛形情報生成部で生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを保持するオブジェクト保持部と、
前記処理順位定義情報生成部で生成された処理順位定義情報を保持する処理順位定義情報保持部と、
前記処理順位定義情報により最初に処理すべき処理部分に対応して前記オブジェクト雛形情報生成部で生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを連鎖的に実行するオブジェクト実行部と、
を有するオブジェクト実行装置。
【請求項１０】
処理の概要を示す複数の処理部分情報と、前記複数の処理の処理順位を示す処理順位情報と、を記述した情報であるアクティビティ情報を取得するアクティビティ情報取得ステップと、
前記アクティビティ情報取得ステップにて取得されたアクティビティ情報に含まれる任意の処理部分情報に基づいて、対応するオブジェクト情報を記述するための雛形となるオブジェクト雛形情報を生成するオブジェクト雛形情報生成ステップと、
前記アクティビティ情報取得ステップにて取得されたアクティビティ情報に含まれる処理順位情報に基づいて、前記オブジェクト雛形情報に基づいて記述されるべきオブジェクト情報が実行される際に参照する情報である処理順位定義情報を生成する処理順位定義情報生成ステップと、
を含むオブジェクト情報生成方法。
【請求項１１】
前記オブジェクト雛形情報生成ステップにて生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを保持するオブジェクト保持ステップと、
前記処理順位定義情報生成ステップにて生成された処理順位定義情報を保持する処理順位定義情報保持ステップと、
前記処理順位定義情報により最初に処理すべき処理部分に対応して前記オブジェクト雛形情報生成ステップにて生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを連鎖的に実行するオブジェクト実行ステップと、
を有するオブジェクト実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は繰り返し行われる業務上の処理を計算機によって実行するプログラムを生成するための生成装置に関する。また、そのように生成されたプログラムの実行を行なうための計算機などの装置に関する。
【背景技術】
【０００２】
繰り返し行われる業務上の処理を計算機によって実行するプログラムを生成するために開発されたシステムとしては、ワークフロー管理システムと呼ばれるものがある。ワークフロー管理システムでは、あらかじめ定義されたワークフロー定義に従って、ワークフローエンジンと呼ばれる特殊なサーバソフトウェアによって、必要な担当者やシステムに対して情報の送受信が行われる。例えば、外部との情報のやりとりの手順を維持しながら、内部のワークフロー処理手順を柔軟に変更して実行できるワークフローエンジンの発明がなされている（例えば、特許文献１参照。）。
【０００３】
しかしながら、従来のようなワークフロー管理システムのように、ワークフローエンジンという特殊なサーバーソフトに依存した形で、業務処理ソフトウェアを開発する場合、その業務処理ソフトウェアが解決できることが、ワークフローエンジンの能力によって決まってしまい、その範囲を超えた処理を開発することが困難であるという問題点があった。
【０００４】
また、従来の技術におけるフローの記述からソースコードを作成し、その後コンパイルして実行するという手順を踏んでいた部分を、作成から実行までを自動で行なえるようにする技術もある（例えば、特許文献２参照。）。また、フローチャート中のボックス間の関係で表される制御の流れとボックス内の処理の記述を分けて処理し、最終的なソースコードを生成する技術もある（例えば、特許文献３参照。）。
【０００５】
これに対し、オブジェクト指向言語を意識して、UMLのアクティビティ図からオブジェクト指向ソフトウェアを自動生成する技術も知られている（例えば、特許文献４参照。）。この技術では、UML図のうちクラス定義図によってオブジェクトの定義を生成し、ステートチャート図あるいはアクティビティ図によって、オブジェクトが実行するプログラムのコードを生成する。
【特許文献１】特開2003-256628号公報
【特許文献２】特開平5-265733号公報
【特許文献３】特開平6-214777号公報
【特許文献４】特開2002-116911号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のようなワークフロー管理システムのように、ワークフローエンジンという特殊なサーバーソフトに依存した形で、業務処理ソフトウェアを開発する場合、その業務処理ソフトウェアが解決できることが、ワークフローエンジンの能力によって決まってしまい、その範囲を超えた処理を開発することが困難であるという問題点があった。
【０００７】
また、例えば特許文献２、３においては、近年広く普及しているオブジェクト指向言語において、もっとも重要な設計上のポイントである、何をオブジェクトとして定義するかについての言及はない。
【０００８】
また、業務のフローは必ずしもシステムの動作だけで完結するものではないが、従来技術で行なうのは、フローチャート全体を実行するプログラムの生成であり、業務全体と、システムによる実現範囲がわかりにくかった。
【課題を解決するための手段】
【０００９】
本発明では、特殊なワークフローエンジンを用いるのではなく、オブジェクト指向言語に基づいた汎用のアプリケーションサーバ上に、ワークフロー定義を参照しながら自律的に動作するオブジェクトを、配置することで処理を行なわせるものである。本発明では業務のプロセスはアクティビティ図と呼ばれるダイアグラム等を用いて記述するが、このうちシステムが担当する部分の各アクティビティに対応するオブジェクトが配置される。これらのオブジェクトは、アクティビティ図に基づいて規定の手順あるいは自動で生成されたプログラムを実行することで生成され、配置される。オブジェクトの処理手順を制御するためのフロー定義も同様に、アクティビティ図に基づいて、規定の手順あるいは自動で生成される。
【００１０】
すなわち、本発明では、処理の概要を示す処理部分情報と、複数の処理の処理順位を示す処理順位情報と、を記述したアクティビティ情報（例えば、アクティビティ図を表わす情報）を取得し、取得されたアクティビティ情報に基づいてオブジェクト情報を記述するための雛形となるオブジェクト雛形情報を生成し、また、取得されたアクティビティ情報に基づいて、前記オブジェクト雛形情報に基づいて記述されるオブジェクト情報が実行される際に参照する情報である処理順位定義情報（例えば、上記でいうフロー定義を表わす情報）を生成する装置が提供される。
【００１１】
また、オブジェクト雛形情報に基づいて記述されるオブジェクトを保持し、処理順位定義情報を保持し、最初に処理すべき処理の処理部分に対応して生成されたオブジェクトを実行することにより、保持されたオブジェクトを連鎖的に実行するオブジェクト実行装置が提供される。
【発明の効果】
【００１２】
本発明では、自動生成のためのツールを提供し、業務フローからソフトウェアを自動生成する。これにより以下の効果がもたらされる。
【００１３】
（１）汎用アプリケーションサーバ上で動作させることができる。すなわち、生成されたソフトウェアは、標準的なアプリケーションサーバ（BEA WebLogic、IBM WebSphere、Apache Tomcat）の上で動作することができる。このため、利用者は特殊なワークフロー管理システムを導入することなく、業務フローを動作させることを実現することが可能になる。
【００１４】
（２）ソフトウェアに拡張性がある。すなわち、生成されるソースコードは、業務フローにおけるアクティビティ単位に１つのクラスが定義される。このことによってアクティビティを業務フロー間で共有することもできる。このようにアクティビティに対応したクラスを組み合わせることで、様々な業務フローを表現することができる。また、アクティビティの流れである業務フローを、フロー定義ファイルに定義するので、アクティビティ間の疎結合が実現され、アクティビティの仕様とフローが独立に修正できる。
【００１５】
（３）業務を表現することができる。すなわち、UMLのアクティビティ図のようなダイアグラムでは、システムと担当者の両方の作業と相互の関わりが明確に表現される。プログラムを自動生成する際に、レーンによって切り分けられたシステムに対応する部分だけを実現することで、業務の全体像とそのうちのシステムを明確にした開発を支援することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態について、図を用いて説明する。なお、本発明はこれら形態に何ら限定されるものではなく、その要旨を逸脱しない範囲において、種々なる態様で実施し得る。
【００１７】
（発明の概要）
まず、本発明の概要を以下に説明する。以下では、業務フロー実行のためのプログラムの自動生成を含む実施形態が示される。本発明において、重要なことはアクティビティ図に対応したオブジェクトが、フローの定義を参照しながら自律的にフローを実行することであって、オブジェクトの定義ならびにフロー定義の全ての部分が必ずしも自動で行なえる必要はない。すなわち、本発明に係るオブジェクト情報生成装置により、オブジェクトの定義などの骨格が生成され、その後に、人間などの修正により完全なオブジェクトの定義が得られるようになっていてもよい。
【００１８】
（発明の概要：アクティビティ図）
図１は、アクティビティ図の一例を示す。アクティビティ図は、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｌｉｎｇ  Ｌａｎｇｕａｇｅ）のフレームワークにおける図の一つであり、おおよそフローチャートに相当する。アクティビティ図は、一または複数のレーンからなっている。レーンとは、以下に説明される「アクティビティ」を実行するアクターが何であるかを示す。図１のアクティビティ図は、ユーザ側（人間側）の処理を示すユーザレーン１０１と、システム側の処理を示すシステムレーン１０２とからなっている。アクティビティ図は、処理の概要を示す複数の処理部分情報と、その複数の処理部分の処理順位を示す処理順位情報と、を示す。処理部分を示す情報である処理部分情報に対応して、「アクティビティ」が配置され、図１のアクティビティ図では、矩形１０５、矩形１０６などにより表現されている。図１では、矩形の内部は空白になっているが、ここに処理の概要、例えば、処理部分の名前、どのような処理部分が行なわれるかが記述されていてもよい。また、処理順位を示すために、アクティビティは矢印で結合されている。処理の開始は●１０３により表わされ、処理の終了は◎１０４により表わされる。また、処理の途中で分岐１０７があってもよい。なお、以下の説明において、アクティビティ図あるいはアクティビティ図を表わす情報を、「アクティビティ情報」という場合がある。
【００１９】
図２は、本発明の実施により、アクティビティ図２０１から、オブジェクト情報２０３などと、フロー定義ファイル２０４と、が生成されることを表わしている。オブジェクト情報とは、プログラムである。このプログラムは、オブジェクト指向言語により記述されるのが好適であり、オブジェクト情報は、オブジェクト指向言語でいうところのオブジェクトとして記述されるので、「プログラム」という語のかわりに「オブジェクト情報」という語を使用している。図２からわかるようにシステムレーンのアクティビティに対応して、オブジェクト情報が生成される。なお、「オブジェクト情報」のかわりに「オブジェクト雛形情報」という語を使用する場合がある。これは、オブジェクト情報が完全に自動的に生成されない場合を含めるためである。また、実行されているオブジェクト情報（あるいは、実行可能なオブジェクト）を示すために、「オブジェクト」という語を用いることがある。
【００２０】
フロー定義ファイルは、あるオブジェクト情報での処理が終了した場合に、次にどのオブジェクト情報を実行するべきか、を記述したファイルである。したがって、それぞれのオブジェクト情報は、フロー定義ファイルを参照して次に実行するべきオブジェクトを決定し、自律的に処理が進むことになる。あるいは、オブジェクト情報を生成するときに、次に実行するべきオブジェクトを識別する識別情報（例えば、オブジェクト情報に付与された名前を示す文字列など）を所定の関数などに渡して、次に実行するべきオブジェクトを得るようにしておいてもよい。このように、次に実行するべきオブジェクトを決定する記述には、２通りの記述があるが、本明細書では、最初に説明した記述を主に用いて説明を行なうこととする。
【００２１】
このようにアクティビティに対応してオブジェクト情報を生成することにより、オブジェクト情報の記述であるソースコードを修正・保守する場合に、アクティビティ図を見ることにより、オブジェクト情報の行なう処理が全体の処理のどの位置を占めているかを容易に知ることができ、修正などが容易に行なえる。また、フロー定義ファイルがオブジェクト情報の外部に生成されるので、フローを変更することも容易に行なえる。例えば、オブジェクト情報がコンパイルされ、人間が容易に修正できない形式になっていたとしても、オブジェクト情報の処理フローを変更することが可能である。
【００２２】
（概要：アクティビティ仕様書）
また、以上の説明では、アクティビティ図のみを入力としたが、アクティビティ仕様書を入力に加えてもよい。「アクティビティ仕様書」とは、アクティビティに関する様々な情報を記述するものである。アクティビティを表わす矩形の内部にどのような処理が行なわれるかが記述されていてもよいと上述したが、その記述は、アクティビティ仕様書に記述されてもよい。また、オブジェクト情報の記述に対する指令が記述されてもよい。例えば、オブジェクト情報がオブジェクト指向言語により記述される場合には、そのクラス名（通常のプログラム言語での「型名」に相当する）、処理を行なうために引数に渡されるデータのクラス名（あるいは型名）などが記述されていてもよい。
【００２３】
図３は、本発明に係る自動生成ツールを例示している。自動生成ツール３０３は、入力として、アクティビティ図３０１とアクティビティ仕様書３０２を取得し、オブジェクト情報を記述するソフトウェア３０４と、フロー定義３０５と、を出力する。なお、アクティビティ仕様書３０２は、入力としては必須ではない。
【００２４】
（概要：アクティビティ図のＸＭＬによる表現）
アクティビティ図の記述は、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などによる構造化文書として記述することができる。
【００２５】
図４は、アクティビティ図を構造化文書として解釈するための論理構造を例示している。アクティビティ図は、始点とレーンと終点を有する。レーンの上部に「＊複数」とあるのは、レーンは一または複数あることを意味する。他の場所に書かれている「＊複数」も同様のことを意味する。始点は、状態遷移線を有する。これは始点の●から伸びている矢印を意味する。レーンは、アクティビティと分岐を有する。アクティビティは、アクティビティ名と状態遷移線とを有する。この状態遷移線は、次に遷移するべきアクティビティあるいは分岐を意味するものである。分岐は、状態遷移線を有する。この状態遷移線は、分岐の後に遷移するアクティビティあるいは分岐を意味するものである。
【００２６】
図５は、図４に例示されたアクティビティ図の論理構造に基づいて、図１に例示されたアクティビティ図をＸＭＬにより記述した例を示す。図５の記述では、図１のアクティビティ図が記述するアクティビティのうち、ユーザレーン１０１に存在するものの名前を上から、ＡとＦとし、システムレーン１０２に存在するものの名前を上から、Ｂ、Ｃ、Ｄ、Ｅとしている。２行目から４行目が始点の記述であり、５行目から１２行目までがユーザレーンの記述であり、１３行目から３０行目までがシステムレーンの記述であり、３１行目が終点の記述である。
【００２７】
始点の記述には、３行目のようにアクティビティＡへの状態遷移線の記述が含まれている。
【００２８】
ユーザレーンの記述には、６行目から８行目と、９行目から１１行目と、の部分にアクティビティＡとＦとの記述があり、７行目と１０行目とに状態遷移線の記述が含まれている。
【００２９】
システムレーンの記述は、ユーザレーンの記述と同様であるが、アクティビティＢの記述の後の１７行目から２０行目に、分岐１０７の記述がある。この場合、何らかの手段、例えば、関数呼び出しによる状態の取得など、によりＯＫという値が得られれば、アクティビティＣへ遷移し、ＮＧが得られれば、アクティビティＤへ遷移することが記述されている。
【００３０】
なお、アクティビティ図の記述のためには、従来技術である、Rational RoseやTogether Control Centerのようなモデリングツールで利用されている標準技術であるXMI（XML Metadata Interchange）形式を用いることもできる。このようにする事により、利用者はグラフィカルなツールを用いて、アクティビティ図などの入力情報を生成することができる。
【００３１】
また、本発明においては、アクティビティにステレオタイプを定義する。ステレオタイプには２種類あり、OperationとConnectorである。Operationタイプはビジネスロジックを定義しているアクティビティであることを意味し、Connectorタイプは外部インターフェースに依存した処理であることを意味する。アクティビティにステレオタイプを定義すると、作成されるソフトウェアにおいてもOperationであるか、Connectorであるかに応じた定義がなされるようになっていてもよい。Connector は、ユーザレーンのアクティビティの次に実行されるシステムレーンのアクティビティ、あるいは、次にユーザレーンのアクティビティを実行するシステムレーンのアクティビティのステレオタイプである。Operator は、システムレーンのアクティビティであって、Connector のステレオタイプを持つもの以外のアクティビティのステレオタイプである。
【００３２】
（概要：アクティビティ仕様書）
アクティビティ仕様書は、アクティビティに関する様々な情報を記述するものである。本実施例では、アクティビティ仕様書は、XML形式で記述される。アクティビティ仕様書をXSLTでXHTMLに変換することによって、開発者が標準的なWebブラウザを用いて、内容を参照できるように構成することもできる。
【００３３】
図６は、アクティビティ仕様書の論理構造を例示する。アクティビティ仕様書は、アクティビティ名と、クラス名と、インターフェースと、説明と、を有する。アクティビティ名は、アクティビティの名前であり、アクティビティ図に記載されたアクティビティの名前と対応付けられる。クラス名は、アクティビティに対応してオブジェクト情報（プログラム）が生成される場合のクラスの名前を示す。インターフェースは、アクティビティに対応して生成されるオブジェクト情報が処理するデータの型（クラス名）を示す。説明は、アクティビティの処理を自然言語などにより記述したものであり、通常は、オブジェクト情報の記述にコメントとして追加される部分である。
【００３４】
図７は、アクティビティ仕様書の例を示す。この例では、ｓａｍｐｌｅ１という名前のアクティビティに対して、Ｓａｍｐｌｅ１というクラス名を用いて記述されるアクティビティ情報を生成することと、その記述の中に、コメントとして「Ｓａｍｐｌｅ  Ａｃｔｉｖｉｔｙ」を追加すべきことと、処理するデータの型がＭｅｓｓａｇｅであることとを表わしている。
【００３５】
（概要：生成されるオブジェクト情報の例）
図８は、図７のアクティビティ仕様書に基づいてアクティビティに対応して生成されたオブジェクト情報を例示する。一行目の「ｐｕｂｌｉｃ  ｃｌａｓｓ  Ｓａｍｐｌｅ１」により、クラス名がＳａｍｐｌｅ１であると定義され、２行目の「ｐｕｂｌｉｃ  ｖｏｉｄ  ｅｘｅｃｕｔｅ（Ｍｅｓｓａｇｅ  ｍｅｓｓａｇｅ）」により、処理するデータの型がＭｅｓｓａｇｅのインスタンスであることが示される。「／／  Ｓａｍｐｌｅ  Ａｃｔｉｖｉｔｙ」は、図７の「<ｄｅｓｃｒｉｐｔｉｏｎ>Ｓａｍｐｌｅ  Ａｃｔｉｖｉｔｙ<／ｄｅｓｃｒｉｐｔｉｏｎ>」に対応して生成されたコメントである。「Ａｃｔｉｖｉｔｙ  ｎｅｘｔ  ＝  ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ｓａｍｐｌｅ１"）；」は、ｓａｍｐｌｅ１という名前のアクティビティの次に実行されるアクティビティに対応して生成されたオブジェクト情報を得て、ｎｅｘｔという変数に代入することを表わしている。ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄというメソッドの呼び出しにより、フロー定義ファイルあるいはフロー定義ファイルが読み込まれて生成されるデータ構造などが参照されることになる。「ｎｅｘｔ．ｅｘｅｃｕｔｅ（ｍｅｓｓａｇｅ）；」により、次に実行されるアクティビティに対応して生成されたオブジェクト情報に変数ｍｅｓｓａｇｅのデータを渡して、実行を行なう。なお、一行目の「ｉｍｐｌｅｍｅｎｔｓ  Ｏｐｅｒａｔｉｏｎ」によりステレオタイプがＯｐｅｒａｔｉｏｎであることが示される。
【００３６】
（概要：生成されるフロー定義ファイル）
図９は、フロー定義ファイルの論理構造を例示する。フロー定義ファイルは、アクティビティを有し、アクティビティは、アクティビティ名と状態遷移先とを有する。
【００３７】
図１０は、フロー定義ファイルの例を示しており、「<ｎａｍｅ>ｓａｍｐｌｅ１<／ｎａｍｅ><ｆｏｒｗａｒｄ>ｓａｍｐｌｅ２<／ｆｏｒｗａｒｄ>」により、ｓａｍｐｌｅ１の処理の後には、ｓａｍｐｌｅ２を実行することが表現されている。
【００３８】
（概要：オブジェクト情報の生成手順）
以下には、自動生成ツール３０３によるオブジェクト情報の生成手順について説明する。メインモジュールが、アクティビティ図読み込みモジュールとアクティビティ仕様読み込みモジュールを呼び出し、次にアクティビティクラス情報構成モジュールを呼び出し、最後にクラス定義書き出しモジュールを呼び出してソフトウェア（オブジェクト情報）を出力する。生成されるソフトウェアは、アクティビティ１つに対して、１つのクラスにより構成される。
【００３９】
ステップ１：（アクティビティ図読み込みモジュール）
アクティビティ図から、システムのレーンに存在するアクティビティと分岐情報を抽出する。
【００４０】
ステップ２：（アクティビティ仕様読み込みモジュール）
アクティビティ仕様書から、アクティビティの情報（アクティビティ名、クラス名、インターフェース、説明）を抽出する。
【００４１】
ステップ３：（アクティビティクラス構成モジュール）
ステップ１で抽出したアクティビティ情報と分岐情報と、ステップ２で抽出したアクティビティ情報を、アクティビティ名が一致することを条件に統合させる。統合させたアクティビティ情報からアクティビティクラス情報を構成する。クラス名、インターフェース情報からクラスの構造を定義し、アクティビティの説明をクラスのコメントとする。アクティビティの状態遷移情報からクラスの次の遷移先を構成する。
【００４２】
ステップ4：（クラス定義書き出しモジュール）
ステップ３で作成したクラス構成情報をファイルに出力する。
【００４３】
（概要：フロー定義の生成手順）
自動生成ツールのフロー定義情報の構成手順を示す。メインモジュールが、アクティビティ図読み込みモジュールとアクティビティ仕様読み込みモジュールを呼び出し、次にフロー定義情報構成モジュールを呼び出し、最後にフロー定義書き出しモジュールを呼び出してフロー定義書ファイルを出力する。アクティビティ仕様書は、アクティビティ図とのアクティビティ名の整合性のために参照される。
【００４４】
ステップ１：（アクティビティ図読み込みモジュール）
（アクティビティクラス情報の構成と同じ）
アクティビティ図から、システムのレーンに存在するアクティビティと分岐情報を抽出する。
【００４５】
ステップ２：（アクティビティ仕様読み込みモジュール）
（アクティビティクラス情報の構成と同じ）
アクティビティ仕様書から、アクティビティの情報（アクティビティ名、クラス名、インターフェース、説明）を抽出する。
【００４６】
ステップ３：（フロー定義構成モジュール）
ステップ１で抽出したアクティビティ情報と分岐情報と、ステップ２で抽出したアクティビティ情報を、アクティビティ名が一致することを条件に統合させる。統合されたアクティビティ情報とアクティビティ図の分岐情報から、フロー定義情報を構成する。フロー定義情報は、アクティビティ名とその状態遷移先で構成される。
【００４７】
ステップ4：（フロー定義書き出しモジュール）
ステップ３で作成したフロー定義情報をファイルに出力する。
【００４８】
（概要：オブジェクト情報の実行）
図１１は、生成されたオブジェクト情報の実行を例示する。生成されたオブジェクト情報（一般には複数となる）の記述であるソースファイル１１０１が必要に応じて、コンパイラ１１０２により計算機などのマシンにより実行可能なプログラムとなる。それらのプログラムが汎用アプリケーションサーバなどの計算機などにロードされ、最初のアクティビティオブジェクト（最初に実行されるアクティビティに対応して生成されたオブジェクト情報に対応するプログラム）が起動され、フロー定義情報１１０５を参照して、次に実行するアクティビティオブジェクトを探索し、そのアクティビティオブジェクトを実行することが繰り返し行なわれる。すなわち、アクティビティオブジェクトが連鎖的に実行されることとなる。
【００４９】
（概要：分岐が存在する場合）
図１２は、分岐が存在する場合に生成されるオブジェクト情報を例示する。ｃｈｅｃｋＯＫ（）という関数（あるいはメソッド）の呼び出しの結果として得られる値に応じて、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＯＫ"）ないしＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＮＧ"）が呼び出されて、次に実行するアクティビティに対応して生成されたオブジェクト情報を得て、そのオブジェクト情報を実行する。ｃｈｅｃｋＯＫ（）という関数（あるいはメソッド）を使用するかどうかは、例えば、アクティビティ図の分岐の記述として含まれていてもよいし、最初から、分岐の場合には、ｃｈｅｃｋＯＫ（）という関数（あるいはメソッド）を使用することが決められていて、後で必要に応じて別の関数（あるいはメソッド）に置き換えられるようになっていてもよい。
【００５０】
図１３は、分岐のある場合のフロー定義ファイルを例示している。３行目から６行目のａｃｔｉｖｉｔｙＢの記述において、ＯＫならば、ａｃｔｉｖｉｔｙＣを実行し、ＮＧならばａｃｔｉｖｉｔｙＤを実行することが記述されている。この部分が、図１２のＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＯＫ"）とＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＮＧ"）に対応している。なお、上記の説明では、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄの仕様は、与えられたオブジェクト情報の名前（例えば、"ａｃｔｉｖｉｔｙＢ"）と状態（例えば、"ＯＫ"）とが与えられると、フロー定義ファイルを参照して、次に実行するべきオブジェクトを返すものであることを仮定した。もし、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄの仕様が、与えられた名前で示されるオブジェクトを返すものであれば、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＯＫ"）は、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＣ"）に、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＢ"，"ＮＧ"）は、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ａｃｔｉｖｉｔｙＤ"）に、なる。
【００５１】
（実施形態１）
本発明の実施形態１として、アクティビティ情報を取得し、取得されたアクティビティ情報に基づいて、オブジェクト雛形情報と処理順位定義情報とを生成するオブジェクト情報生成装置について説明する。
【００５２】
（実施形態１：構成）
図１４は、本発明の実施形態１に係るオブジェクト情報生成装置の機能ブロック図を例示する。オブジェクト情報生成装置１４００は、アクティビティ情報取得部１４０１と、オブジェクト雛形情報生成部１４０２と、処理順位定義情報生成部１４０３と、を有する。なお、これらの部、また、以下の実施形態で説明される部、手段は、プログラムのモジュールとして実現することが可能であり、本実施形態また、以下の実施形態に係るオブジェクト情報生成装置は、そのようなプログラムを計算機で実行することにより実現が可能である。
【００５３】
（実施形態１：構成：アクティビティ情報取得部）
「アクティビティ情報取得部」１４０１は、アクティビティ情報を取得する。「アクティビティ情報」とは、複数の処理部分情報と、処理順位情報と、を記述した情報である。「処理部分情報」とは、処理の概要を示す情報である。処理部分情報の例としては、処理の部分である処理部分の名前（例えば、ａｃｔｉｖｉｔｙＡなど）であったり、自然言語などによる処理部分の簡単な説明であったりする。「処理順位情報」とは、前記複数の処理部分の処理順位を示す情報である。アクティビティ情報は、例えば、計算機のメモリ上に、処理順位を示すように有向グラフの構造を作ることにより、表現が可能である。
【００５４】
図１５（ａ）は、メモリ上に作られた有向グラフの構造の部分の一例を示す。有向グラフはノードとエッジからなる。そこで、例えば、有向グラフのノードのうち２つに対応して、メモリ領域１５０１とメモリ領域１５０２とを確保する。メモリ領域１５０１に対応するノードからメモリ領域１５０２に対応するノードへの向きを持ったエッジは、メモリ領域１５０１の最初の部分に、メモリ領域１５０２の開始メモリアドレスを格納することにより表現することができる。すなわち、メモリ領域１５０２の開始アドレスが１０１６であれば、メモリ領域１５０１の最初の部分に開始アドレスである１０１６を格納する。なお、通常は、メモリアドレスを格納する図を用いて説明される代わりに、図１５（ｂ）のように、メモリ領域１５０３とメモリ領域１５０４との間に矢印を引いて説明されることが多い。
【００５５】
アクティビティ情報取得部１４０１は、例えば、メモリ上に展開された有向グラフの構造を取得する。例えば、アクティビティ情報取得部１４０１は、有向グラフの構造が展開されたメモリアドレスの範囲や、有向グラフの最初のノードに対応するメモリ領域のメモリアドレスを取得する。あるいは、アクティビティ情報取得部１４０１は、所定の文法に基づいて記述された文字列を入力し、その文字列の構文解析を行ない、メモリ上に有向グラフの構造を生成するとしてもよい。
【００５６】
（実施形態１：構成：オブジェクト雛形情報生成部）
「オブジェクト雛形情報生成部」１４０２は、アクティビティ情報取得部１４０１で取得したアクティビティ情報に含まれる任意の処理部分情報に基づいて、対応するオブジェクト情報を記述するためのオブジェクト雛形情報を生成する。「処理部分情報に基づいて」とは、「処理部分情報の内容に関係するように」ということである。例えば、処理部分情報のノードが格納されたメモリアドレスや、ノードが保持する内容により、生成されるオブジェクト雛形情報の内容が決定される。また、「対応するオブジェクト情報」とは、「オブジェクト情報は、アクティビティ情報に対応するように生成される」ということを意味する。また、「雛形」とあるが、これは、オブジェクト雛形情報が生成された後で、修正が可能な形式であることを意味する。修正は、プログラムが動作する計算機などの装置や、人間により行なわれる。
【００５７】
図１６は、オブジェクト雛形情報生成部１４０２の処理のフローチャートを例示する。このフローチャートでは、例えば、図１５（ａ）に示したようにメモリ上に一列に処理部分情報が並んでおり、処理部分情報を順次に取得することが可能になっていることを想定している。
【００５８】
まず、ステップＳ１６０１において、処理部分情報が残っているかどうかを判断する。もし残っていなければ、処理を終了する。そうでなければ、処理をステップＳ１６０２へ進める。例えば、プログラムカウンタを、ステップＳ１６０２のプログラムアドレスにセットする。ステップＳ１６０２において、残っている処理部分情報から処理部分情報を一つ取り出す。例えば、取り出した処理部分情報が格納されているメモリアドレスをレジスタに格納する。次のステップＳ１６０３においては、取り出した処理部分情報に基づいてオブジェクト雛形情報を生成する。例えば、レジスタにメモリアドレスが格納されている処理部分情報の内容を読み込み、オブジェクト雛形情報を生成する。どのようなオブジェクト雛形情報を生成するかについては、後述する。次のステップＳ１６０４では、ステップＳ１６０３で生成されたオブジェクト雛形情報を格納する。例えば、計算機の管理するファイルとして格納する。すなわち、ファイルをクリエイトし、オブジェクト雛形情報を書き込み、ファイルをクローズする。このとき、ファイル名が一意に決まるようにファイル名を選択する。ファイル名は、例えば、処理部分情報のノードが格納されたメモリアドレスに基づいて選択する（例えば、メモリアドレスが１０１６であれば、ｏｂｊ１０１６というファイル名を選択する）。その後、ステップＳ１６０１へ戻る（すなわち、プログラムカウンタの値をステップＳ１６０１の処理を行なうためのアドレスとする）。
【００５９】
図１７は、ステップＳ１６０３で生成される、一つのオブジェクト雛形情報の処理のフローチャートを例示する。また、図１８には、引数を用いてデータの受け渡しをするオブジェクト雛形情報の処理のフローチャートを例示する。オブジェクト雛形情報は、例えば、このフローチャートの処理を実現するように、プログラミング言語（望ましくはオブジェクト指向言語）により記述される。オブジェクト雛形情報は、アクティビティ情報取得部１４０１で取得されたアクティビティ情報が表わす処理の流れを実現するプログラムの一部である。また、後で説明する処理順位定義情報生成部１４０３での説明にあるように、オブジェクト雛形情報に基づいて記述されるオブジェクト情報が実行する際には、処理順位定義情報を参照することになる。したがって、オブジェクト雛形情報による処理の流れの一例を挙げると次の通りとなる。まず、ステップＳ１７０１において、定められた処理を行なう。「定められた処理」とは、処理部分情報が表わす処理である。また、定められた処理には、何もしないことも含む。これは、オブジェクト雛形情報が生成されたときには、何も処理が記述されていない場合があり、オブジェクト雛形情報を、そのままオブジェクト情報として用いることがあり得るからである。次のステップＳ１７０２において、次に実行するオブジェクト情報の識別子を得る。オブジェクト情報の識別子としては、例えば、オブジェクト雛形情報が格納されたファイル名を用いてもよい。また、オブジェクト情報がメモリ上にロードされたときのメモリアドレスであってもよい。また、それぞれのオブジェクト情報が独立したタスクやプロセスとして動作するときは、タスク識別子やプロセス識別子などを用いる。また、全てのオブジェクトが一つの計算機などの装置内で動作する必要はなく、他の計算機などに分散して実行がされるようになっていてもよい。このような場合には、タスク識別子やプロセス識別子などには、計算機のＩＰアドレスなどの計算機などを識別する情報が含められる。なお、図１７と図１８との違いは、図１８においては、データを引数として受信するステップ（ステップＳ１８０１）がある点、ステップＳ１７０３に対応するステップＳ１８０４において次に実行するオブジェクト情報にデータを引数として渡す点が記述されていることである。
【００６０】
なお、ステップＳ１７０２で、処理順位定義情報を参照して、次に実行するオブジェクト情報の識別子を得るようになっていてもよい。ステップＳ１７０３において、ステップＳ１７０２で得られた識別子に基づいて、次に実行するオブジェクト情報を実行する。なお、一般的には、生成されるオブジェクト雛形情報は、処理部分情報が異なっても同じものである。ただし、ステップＳ１７０２、ステップＳ１８０３での動作が処理部分情報により異なる。すなわち、処理部分情報の名前を用いて処理順位定義情報を参照して、次に実行するオブジェクト情報の識別子を得るようになっていれば、処理部分情報の名前が異なることになる。そのため、オブジェクト雛形情報の雛形を用意しておき、ステップＳ１７０２、ステップＳ１８０３に対応する部分で処理順位定義情報を参照する際の名前を変更することにより、オブジェクト雛形情報を生成するようにしてもよい。
【００６１】
図１７により処理のフローチャートが例示されるオブジェクト情報の例としては、図８に示したプログラムがある。「／／  Ｓａｍｐｌｅ  Ａｃｔｉｖｉｔｙ」のコメントの部分が、ステップＳ１７０１に対応し（すなわち、何もしないという処理になる）、「Ａｃｔｉｖｉｔｙ  ｎｅｘｔ  ＝  ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ｓａｍｐｌｅ１"）；」がステップＳ１７０２に対応し、「ｎｅｘｔ．ｅｘｅｃｕｔｅ（ｍｅｓｓａｇｅ）；」がステップＳ１７０３に対応する。"ｓａｍｐｌｅ１"が、処理順位定義情報を参照する際の名前となる。
【００６２】
（実施形態１：構成：処理順位定義情報生成部）
「処理順位定義情報生成部」１４０３は、アクティビティ情報取得部１４０１で取得したアクティビティ情報に含まれる処理順位情報に基づいて、処理順位定義情報を生成する。「処理順位定義情報」とは、オブジェクト雛形情報に基づいて記述されるオブジェクト情報が実行される際に参照する情報である。例えば、あるオブジェクト雛形情報が実行した場合、そのオブジェクト雛形情報の実行の次に実行を行なうべきオブジェクト雛形情報の識別子を得るために参照するべき情報である。
【００６３】
図１９は、処理順位定義情報の一例を示す。この例では、オブジェクト雛形情報は、例えば、処理部分情報のノードが格納されたメモリアドレスに基づいて識別されている。図１５（ａ）に示されているように、メモリアドレスが９４８となっているノードの次は、メモリアドレスが１０１６のノードであるので、現在実行しているオブジェクト情報の識別子がｏｂｊ９４８であれば、次に実行するオブジェクト情報の識別子は、ｏｂｊ１０１６となる。なお、処理順位定義情報は、表である必要はなく、あるオブジェクト雛形情報の次に、どのオブジェクト雛形情報を実行するべきかが記述されていればよい。
【００６４】
図２０は、処理順位定義情報生成部１４０３の処理のフローチャートを例示する。ステップＳ２００１において、処理部分情報が残っているかどうかを判断する。もし、残っていなければ処理を終了し、そうでなければ、ステップＳ２００２へ処理を移行する。ステップＳ２００２では、処理部分情報を一つ取り出す。取り出された処理部分情報のメモリアドレスを例えば、レジスタに格納する。次のステップＳ２００３では、ステップＳ２００２で取り出された処理部分情報の次に実行する処理部分情報が存在するかどうかを判断する。すなわち、処理順位情報により、最後に実行するべき処理部分情報でないかどうかを判断する。もし、そうならば、ステップＳ２００４へ処理を移行し、そうでなければ、ステップＳ２００４をスキップする。ステップＳ２００４においては、取り出した処理部分情報の識別子と、次に実行する処理部分情報の識別子からなる一行を作成して表（例えば、図１９に例示された表）に加える。その後、ステップＳ２００１へ戻る。
【００６５】
なお、本実施形態に係るオブジェクト情報生成装置は、アクティビティ情報取得ステップと、オブジェクト雛形情報生成ステップと、処理順位定義情報生成ステップと、を含むオブジェクト情報生成方法を使用するための装置の一つと解釈することも可能である。「アクティビティ情報取得ステップ」は、処理の概要を示す複数の処理部分情報と、前記複数の処理の処理順位を示す処理順位情報と、を記述した情報であるアクティビティ情報を取得するためのステップである。例えば、アクティビティ情報取得部１４０１を動作させるためのステップである。「オブジェクト雛形情報生成ステップ」とは、前記アクティビティ情報取得ステップにて取得されたアクティビティ情報に含まれる任意の処理部分情報に基づいて、対応するオブジェクト情報を記述するための雛形となるオブジェクト雛形情報を生成するためのステップである。例えば、オブジェクト雛形情報生成部を動作させるためのステップである。「処理順位定義情報生成ステップ」は、前記アクティビティ情報取得ステップにて取得されたアクティビティ情報に含まれる処理順位情報に基づいて、前記オブジェクト雛形情報に基づいて記述されるべきオブジェクト情報が実行される際に参照する情報である処理順位定義情報を生成するためのステップである。例えば、処理順位定義情報生成部１４０３を動作させるためのステップである。なお、オブジェクト情報生成方法を使用するための装置は、オブジェクト情報生成装置に限定されることはない。
【００６６】
（実施形態１：主な効果）
本実施形態によれば、アクティビティ図などを表わすアクティビティ情報に基づいて、そのアクティビティ情報の表わす処理の流れを実現するオブジェクト雛形情報を生成することができる。また、そのオブジェクト雛形情報は、人間が編集可能な形態で生成することにすれば、そのオブジェクト雛形情報に基づいて、アクティビティ情報の表わす処理を持つシステムを作成することが可能である。また、処理順位定義情報が別に生成されるので、オブジェクト雛形情報に処理の順序がハードコーディングされている場合よりも、処理の順序を変更することが容易に行なえる。
【００６７】
（実施形態２）
本発明の実施形態２として、オブジェクト雛形情報は、識別情報を有し、その識別情報を利用して処理順位定義情報を生成するオブジェクト情報生成装置について説明する。
【００６８】
（実施形態２：構成）
本発明の実施形態２に係るオブジェクト情報生成装置は、実施形態１に係るオブジェクト情報生成装置において、オブジェクト雛形情報生成部１４０２により生成されるオブジェクト雛形情報は、識別情報記述部を有する。
【００６９】
「識別情報記述部」とは、記述されるオブジェクトを識別するための識別情報を記述する部分である。「記述されるオブジェクト」とは、オブジェクト雛形情報により記述されるオブジェクトである。
【００７０】
識別情報記述部の例としては、図８に例示されたプログラムの一行目の「ｐｕｂｌｉｃ  ｃｌａｓｓ  Ｓａｍｐｌｅ１」の「Ｓａｍｐｌｅ１」が記述されている部分である。あるいは、識別情報記述部は、このプログラムの表わす意味からすると、「Ａｃｔｉｖｉｔｙ  ｎｅｘｔ  ＝  ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄ（"ｓａｍｐｌｅ１"）；」の「"ｓａｍｐｌｅ１"」が記述されている部分であるとも解釈することができる。
【００７１】
本実施形態においては、処理順位定義情報生成部１４０３は、前記識別情報を利用して処理順位定義情報を生成する。「前記識別情報」とは、識別情報記述部に記述された識別情報である。
【００７２】
したがって、例えば、図１９に例示された表には、識別情報記述部に記述された識別情報が格納されることになる。
【００７３】
（実施形態２：主な効果）
本実施形態によれば、オブジェクト雛形情報に識別情報が記述されるので、例えばオブジェクト雛形情報が格納されるファイル名によりオブジェクト雛形情報が識別される場合よりも、オブジェクト雛形情報の可読性が高まり、オブジェクト雛形情報の修正が容易に行なえる。
【００７４】
（実施形態３）
本発明の実施形態３として、アクティビティ仕様書を表わす情報を取得して、オブジェクト雛形情報と処理順位定義情報とを生成するオブジェクト情報生成装置について説明する。
【００７５】
（実施形態３：構成）
図２１は、本発明の実施形態３に係るオブジェクト情報生成装置の機能ブロック図を例示する。オブジェクト情報生成装置２１００は、アクティビティ情報取得部１４０１と、オブジェクト雛形情報生成部１４０２と、処理順位定義情報生成部１４０３と、アクティビティ仕様情報取得部２１０１と、を有する。したがって、本実施形態に係るオブジェクト情報生成装置は、実施形態１または２のオブジェクト情報生成装置が、アクティビティ仕様情報取得部を有する構成となっている。
【００７６】
なお、本明細書においては、同じ定義の部、手段には、できるだけ同じ符号を割り当てることにする。同じ符号が割り当てられていても、実際に製造などをするときには、作りが異なる場合がある。
【００７７】
（実施形態３：構成：アクティビティ仕様情報取得部）
「アクティビティ仕様情報取得部」２１０１は、アクティビティ仕様情報を取得する。「アクティビティ仕様情報」とは、型情報と、引数型情報と、をオブジェクト雛形情報に対応する処理部分情報に関連付けて記述した情報である。「処理部分情報に関連付けて記述」とは、例えば、処理部分情報に名前が付されていて、その名前により処理部分情報を指定して、アクティビティ仕様情報を記述することである。アクティビティ仕様情報の例については、後で説明する。
【００７８】
「型情報」とは、オブジェクト雛形情報に基づいて生成されるべきオブジェクト情報の型を示す情報である。オブジェクト雛形情報がオブジェクト指向言語で記述される場合には、型は、例えば、クラス名となる（図８での「Ｓａｍｐｌｅ１」である）。また、Ｃ言語やＣ＋＋言語で記述される場合には、構造体の名前となる。
【００７９】
「引数型情報」とは、オブジェクト雛形情報に基づいて生成されるべきオブジェクト情報の引数の型を示す情報である。例えば、図８の場合には、「Ｍｅｓｓａｇｅ」である。
【００８０】
なお、アクティビティ仕様情報には、型情報と引数型情報以外の情報が記述されていてもよい。例えば、アクティビティである処理部分情報に対応して生成されるオブジェクト雛形情報により行なわれる処理の内容が記述されていてもよい。その記述は、プログラミング言語により行なわれていてもよいし、自然言語により行なわれていてもよい。
【００８１】
（実施形態３：構成：オブジェクト雛形情報生成部）
本実施形態においては、オブジェクト雛形情報生成部１４０２は、アクティビティ仕様情報取得部２１０１で取得したアクティビティ仕様情報に含まれる型情報と、引数型情報とに基づいて、オブジェクト情報を生成する。
【００８２】
（実施形態３：アクティビティ仕様情報の例）
図２２は、アクティビティ仕様情報の一例を示す。処理部分名として、「ｓａｍｐｌｅ１」が指定されているので、このアクティビティ仕様情報は、ｓａｍｐｌｅ１という名前が付された処理部分情報に関するアクティビティ仕様情報であることが示される。型名が「Ｓａｍｐｌｅ１」であるので、ｓａｍｐｌｅ１という処理部分情報に対応してＳａｍｐｌｅ１という型名（クラス名）を持つオブジェクト雛形情報が生成されるべきことが示される。引数の型は「Ｍｅｓｓａｇｅ」であるので、そのオブジェクト雛形情報は、Ｍｅｓｓａｇｅという型の引数を取ることが示される。また、説明という欄があるが、これは、そのオブジェクト雛形情報で行なう処理の説明であり、オブジェクト雛形情報に、例えば、コメントとして追加される文字列である。
【００８３】
このようなアクティビティ仕様書により、例えば、図８のオブジェクト雛形情報であって、「／／  Ｓａｍｐｌｅ  ａｃｔｉｖｉｔｙ」の部分が「／／  Ｍｅｓｓａｇｅのインスタンスを受信し、インスタンス中の文字列中の小文字のアルファベットを大文字にする」に置き換えられたオブジェクト雛形情報が生成される。なお、「／／」はコメントの開始を意味し、コメントは行の終わりまでの部分である。
【００８４】
なお、本実施形態において、処理順位定義情報生成部１４０３は、アクティビティ仕様情報取得部２１０１で取得されたアクティビティ仕様情報の内容に基づいて処理順位定義情報を生成してもよい。例えば、図１９の表に格納する名前を型名としてもよい。
【００８５】
（実施形態３：主な効果）
本実施形態によれば、アクティビティ仕様情報にも基づいて、少なくともオブジェクト雛形情報が生成されるので、例えば、オブジェクト雛形情報の主要な部分の記述を指定しておくことができ、オブジェクト雛形情報の修正を効率よく行なえるようになる。
【００８６】
（実施形態４）
本発明の実施形態４として、アクティビティ仕様情報が構造化文書として記述されているオブジェクト情報生成装置について説明する。
【００８７】
（実施形態４：構成）
本発明の実施形態４は、実施形態３に係るオブジェクト情報生成装置において、アクティビティ仕様情報取得部２１０１が取得するアクティビティ仕様情報が、構造化文書として記述されているようにしたものである。
【００８８】
構造化文書の代表例としては、ＸＭＬに基づいて記述されたものがある。したがって、本実施形態におけるアクティビティ仕様情報の例としては、図７に示したものがある。オブジェクト情報生成装置を、計算機により実現する場合には、本実施形態においては、アクティビティ仕様情報取得部２１０１が構造化文書の構文解析を行なって、その結果をメモリ上に保持する必要があるが、構造化文書は、構文解析に適した文法となっているので、構造化文書の構文解析を行なうプログラムを提供することは、当業者には容易なことである。
【００８９】
（実施形態４：主な効果）
構造化文書を記述するツールは数多く出回っており、本実施形態によれば、そのようなツールを用いてアクティビティ仕様情報を記述することができるようになる。
【００９０】
（実施形態５）
本発明の実施形態５として、アクティビティ情報に表現される分岐に対応してオブジェクト雛形情報を生成するオブジェクト情報生成装置について説明する。
【００９１】
（実施形態５：構成）
図２３は、本発明の実施形態５に係るオブジェクト情報生成装置の機能ブロック図を例示する。オブジェクト情報生成装置２３００は、アクティビティ情報取得部１４０１と、オブジェクト雛形情報生成部１４０２と、処理順位定義情報生成部１４０３と、を有し、オブジェクト雛形情報生成部１４０２は、分岐処理判断手段２３０１と、分岐依存生成手段と、を有している。また、オブジェクト情報生成装置２３００は、さらに、アクティビティ仕様情報取得部を有していてもよい。
【００９２】
したがって、本実施形態に係るオブジェクト情報生成装置は、実施形態１から４のいずれか一のオブジェクト情報生成装置のオブジェクト雛形情報生成部が、分岐処理判断手段と、分岐依存生成手段と、を有する構成となっている。
【００９３】
（実施形態５：構成：分岐処理判断手段）
「分岐処理判断手段」２３０１は、処理部分情報が分岐処理を行なうかどうかを判断する。例えば、アクティビティ情報を表わす有向グラフの構造がメモリ上に存在する場合において、処理部分情報のノードの次に分岐を表わすノードが接続されているかどうかを判断する。
【００９４】
（実施形態５：構成：分岐依存生成手段）
「分岐依存生成手段」２３０２は、分岐処理判断手段２３０１の判断結果に応じて分岐処理を含むオブジェクト雛形情報である分岐型オブジェクト雛形情報か、分岐処理を含まないオブジェクト雛形情報である非分岐型オブジェクト雛形情報かを選択して生成する。
【００９５】
図２４は、分岐型オブジェクト雛形情報の処理のフローチャートを例示する。ステップＳ２４０１において、定められた処理（何もしないことを含む）をおこなう。これはステップＳ１７０１と同じである。ステップＳ２４０２において、第一ブランチへ分岐するかどうかを判断する。この判断は、例えば、あらかじめ定められた関数やメソッドを呼び出し、その結果得られる値に基づいて行なう。あるいは、アクティビティ情報などに、どの関数、メソッドを使用するかが記載されていて、その記載に基づいて記述がされてもよい。もし、第一ブランチへ分岐すると判断された場合には、ステップＳ２４０２へ処理を移行し、そうでなければ、ステップＳ２４０４へ処理を移行させる。ステップＳ２４０２において、第一ブランチで実行するオブジェクト情報の識別子を得る。すなわち、第一ブランチの次に実行するべきオブジェクト情報の識別子を得る。ステップＳ２４０３において、ステップＳ２４０２で得られたオブジェクトの識別子に基づいて、次に実行するオブジェクト情報を実行する。ステップＳ２４０４、ステップＳ２４０５は、それぞれステップＳ２４０２、Ｓ２４０３と同様であるので、説明を省略する。
【００９６】
ステップＳ２４０２、ステップＳ２４０４において、第一ブランチかどうかに基づいて、次に実行するオブジェクト情報の識別子を得る必要がある。そのため、処理順位定義情報に、どのブランチであるかどうかの情報を含める必要がある。
【００９７】
図２５は、どのブランチであるかどうかの情報が含められた処理順位定義情報を例示する。図２５において、真ん中の列の「ブランチ」に、どのブランチであるかどうかを示す情報が格納されている。例えば、現在実行しているオブジェクト情報がｏｂｊ９４８であるとする。第一ブランチであれば、次に実行するオブジェクト情報の識別子は、ｏｂｊ１０１６となり、そうでないのであれば（すなわち、第二ブランチであれば）、次に実行するオブジェクト情報の識別子は、ｏｂｊ１０２４となる。
【００９８】
図２６は、図２５に例示された処理順位定義情報を生成する処理のフローチャートを例示する。すなわち、本実施形態における処理順位定義情報生成部１４０３の処理を例示する。
【００９９】
ステップＳ２６０１において処理部分情報が残っているかどうかを判断する。もし残っているならばステップＳ２６０２へ処理を移行させ、そうでなければ処理を終了する。ステップＳ２６０２において、処理部分情報を一つ取り出す。これにより、例えば、処理部分情報に対応するメモリ領域のアドレスをレジスタに格納する。ステップＳ２６０３において、次に実行する処理部分情報があるかどうかを判断する。この判断は、例えば、レジスタに格納された値をメモリアドレスとみなして、そのメモリアドレスに格納されている値を取得することにより行なわれる。もし、あれば、ステップＳ２６０４へ処理を移行させ、そうでなければステップＳ２６０１へ処理を戻す。ステップＳ２６０４において、分岐処理が行なわれるかどうかを判断する。すなわち、現在の処理部分情報のノードの次に分岐処理を示すノードがあるかどうかを判断する。この判断は、例えば、レジスタに格納された値をメモリアドレスとみなし、そのメモリアドレスに格納されている値をメモリアドレスとして解釈して、そのメモリアドレスに格納されている値を取得することにより行なわれる。もし、分岐処理があれば、ステップＳ２６０５へ処理を移行させ、そうでなければステップＳ２６０６へ処理を移行させる。
【０１００】
ステップＳ２６０５において、取り出した処理部分情報の識別子と、分岐ごとに次に実行する処理部分情報の識別子を行として表などに追加する。分岐ごとに次に実行する処理部分情報の識別子は、分岐のノードの内容、すなわち、その分岐のノードの次のノードの内容を調べることにより得ることができる。
【０１０１】
ステップＳ２６０６においては、取り出した処理部分情報の識別子と次に実行する処理部分情報の識別子を行として表に追加する。
【０１０２】
ステップＳ２６０５、Ｓ２６０６の処理が終わるとステップＳ２６０１へ戻る。例えば、プログラムカウンタの値を、ステップＳ２６０１のプログラムアドレスにする。
【０１０３】
（実施形態５：主な効果）
本実施形態によれば、分岐が含まれるアクティビティ情報を表わすオブジェクト雛形情報を生成することができる。
【０１０４】
（実施形態６）
本発明の実施形態６として、アクティビティ情報の処理順位情報がレーンに分かれているオブジェクト情報生成装置について説明する。
【０１０５】
（実施形態６：構成）
本発明の実施形態６においては、実施形態１から５のいずれかのオブジェクト情報生成装置において、アクティビティ情報取得部が取得するアクティビティ情報の処理順位情報は、ユーザレーンとシステムレーンに分けて処理順位が記述されている。「ユーザレーン」とは、人間（ユーザ）が行なう処理を記述する部分である。また、「システムレーン」とは、システムが行なう処理を記述する部分である。
【０１０６】
ユーザレーンとシステムレーンに分かれたアクティビティ情報の例としては、図１に示したアクティビティ図を示す情報がある。
【０１０７】
なお、本発明においては、システムレーンのアクティビティに対応してオブジェクト情報を生成するのが好適である。
【０１０８】
（実施形態６：主な効果）
本実施形態により、アクティビティ図でユーザを含めたシステム全体の記述ができ、また、プログラムとして生成するべき範囲をシステムレーンによって限定することができる。
【０１０９】
（実施形態７）
本発明の実施形態７として、アクティビティ情報が構造化文書として記述されているオブジェクト情報が、構造化文書として記述されているオブジェクト情報生成装置について説明する。
【０１１０】
（実施形態７：構成）
すなわち、本発明の実施形態７は、実施形態１から６のいずれか一のオブジェクト情報生成装置において、アクティビティ情報取得部１４０１が取得するアクティビティ情報が、構造化文書として記述されているオブジェクト情報生成装置である。
【０１１１】
実施形態４で述べたように、構造化文書の代表例としては、ＸＭＬに基づいて記述されたものがあり、アクティビティ情報がＸＭＬにより記述された例は、図５に示した通りである。
【０１１２】
（実施形態７：主な効果）
構造化文書を記述するツールは数多く出回っており、特に、ＵＭＬのモデリングツールとして、アクティビティ図を作成することにより、ＸＭＬの文書を出力するものがある。したがって、本実施形態により、そのようなツールにより作成されたアクティビティ情報を用いることができる。これにより、例えば、システムの作成の手間、時間の低減を図ることができる。
【０１１３】
（実施形態８）
本発明の実施形態８として、処理順位定義情報が構造化文書として記述されているオブジェクト情報生成装置について説明する。
【０１１４】
（実施形態８：構成）
本発明の実施形態８に係るオブジェクト情報生成装置は、実施形態１ないし７のいずれかに係るオブジェクト情報生成装置において、処理順位定義情報生成部１４０３の生成する処理順位定義情報が構造化文書として記述されるようにしたオブジェクト情報生成装置である。
【０１１５】
構造化文書として記述された処理順位定義情報の例は、図１０に示した通りである。図１０では、図１９に示した処理順位定義情報の一行に対応している。図１０において、<ａｃｔｉｖｉｔｙ>から<／ａｃｔｉｖｉｔｙ>の部分を複数持たせることにより複数行に対応する処理順位定義情報とすることができるのは言うまでも無い。
【０１１６】
（実施形態８：主な効果）
処理順位定義情報を構造化文書により記述することにより、処理順位定義情報を人間が読むことができる形式にすることができ、また、オブジェクト雛形情報を実行する場合に、処理順位定義情報を計算機に読み込ませることが容易に行なえるようになる。
【０１１７】
（実施形態９）
本発明の実施形態９として、以上の実施形態に係るオブジェクト情報生成装置のオブジェクト雛形情報生成部で生成されたオブジェクト雛形情報に基づいて記述されるオブジェクト情報を実行する装置について説明する。
【０１１８】
（実施形態９：構成）
図２７は、本発明の実施形態９に係るオブジェクト実行装置の機能ブロック図を例示する。オブジェクト実行装置２７００は、オブジェクト保持部２７０２と、処理順位定義情報保持部２７０３と、オブジェクト実行部２７０１と、を有する。なお、本実施形態に係るオブジェクト実行装置は、図１１に示された汎用アプリケーションサーバ１１０３に対応しており、例えば、計算機を用いて実現されるものである。
【０１１９】
「オブジェクト保持部」２７０２は、オブジェクト雛形情報生成部１４０２で生成されたオブジェクト雛形情報に基づいて記述されるオブジェクト情報を保持する。「オブジェクト雛形情報に基づいて記述されるオブジェクト」とは、オブジェクト雛形情報そのもの、あるいは、オブジェクト雛形情報に対して処理の記述の追加、変更を行なって得られるオブジェクト情報、を実行可能な形式に変換した情報をいう。例えば、コンパイラなどにより、計算機により実行可能となった形式である。
【０１２０】
図２８は、オブジェクト保持部２７０２の内部構造の模式図を例示する。図２８に示される構造が、例えば、計算機のメモリ空間に展開される。配列２８０１の各要素に、オブジェクト１、オブジェクト２、オブジェクト３などへのポインタが格納されている。矩形領域２８０５は、最初に処理すべき処理部分に対応して生成されたオブジェクト雛形情報に基づいて記述されたオブジェクトを指すポインタを格納している。
【０１２１】
「処理順位定義情報保持部」２７０３は、処理順位定義情報生成部１４０３で生成された処理順位定義情報を保持する。例えば、処理順位定義情報を入力し、それをメモリの構造に展開して保持する。処理順位定義情報のサイズが大きければ、例えば、Ｂ−木などによる索引付けなどを行なってもよい。すなわち、オブジェクト雛形情報の識別情報をキーとして、次に実行されるべきオブジェクト雛形情報の識別情報をバリューとするＢ−木を用いるのが好適である。
【０１２２】
「オブジェクト実行部」２７０１は、前記処理順位定義情報により最初に処理すべき処理部分に対応してオブジェクト雛形情報生成部１４０２で生成されたオブジェクト雛形情報に基づいて記述されるオブジェクト（以下、「最初のオブジェクト」という）を連鎖的に実行する。「前記処理順位情報」とは、処理順位定義情報保持部２７０３で保持されている処理順位定義情報を意味する。また、「連鎖的に実行する」とは、最初のオブジェクトを実行すると、(1)最初のオブジェクトの処理により、処理順位定義情報が参照されて次に実行するオブジェクトが決定され、(2)決定されたオブジェクトが実行され、(3)その実行されたオブジェクトの処理により、処理順位定義情報が参照されて次に実行するオブジェクトが決定される、ということが繰り返し発生することを意味する。
【０１２３】
なお、最初のオブジェクトに対して、引数などのデータを与える必要がある場合には、オブジェクト実行部が、そのデータを適宜入力または生成して、最初のオブジェクトに渡す。
【０１２４】
図２９は、オブジェクト実行装置２７００の処理のフローチャートを例示する。ステップＳ２９０１において、処理順位定義情報を読み込む。ステップＳ２９０２において、最初のオブジェクト情報を実行する。ステップＳ２９０３において、オブジェクト情報の実行の終了を待つ。実行が終了すれば、必要に応じて、最終的な結果などを示すデータを取得する。
【０１２５】
図３０は、図８に示されるオブジェクト雛形情報に基づいて記述されるオブジェクトを実行する際のステップＳ２９０２とステップＳ２９０３とにおける処理を詳細化したフローチャートを例示する。ステップＳ３００１において、最初のオブジェクトを実行する。ステップＳ３００２において、オブジェクトの実行が終了したかどうかを判断する。この判断は、例えば、次に実行するオブジェクトとして終点が取得されたか、あるいは、終点の識別子（例えば、"ｅｎｄＰｏｉｎｔＡ"）が指定されているかどうかで行なわれる。もし、終了したと判断されれば、処理を終了する。そうでなければ、ステップＳ３００３へ処理を移行し、ＦｌｏｗＤｅｆｉｎｉｔｉｏｎ．ｆｉｎｄが呼ばれると、次に実行するオブジェクトへのポインタを返すことを行ない、ステップＳ３００２へ戻る。
【０１２６】
なお、本実施形態に係るオブジェクト実行装置は、オブジェクト保持ステップと、処理順位定義情報保持ステップと、オブジェクト実行ステップとを有するオブジェクト実行方法を使用するための装置と解釈することもできる。「オブジェクト保持ステップ」とは、前記オブジェクト雛形情報生成ステップにて生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを保持するステップである。例えば、オブジェクト保持部２７０２を動作させるためのステップである。「処理順位定義情報保持ステップ」とは、前記処理順位定義情報生成ステップにて生成された処理順位定義情報を保持するためのステップである。例えば、処理順位定義情報保持部２７０３を動作させるためのステップである。「オブジェクト実行ステップ」とは、前記処理順位定義情報により最初に処理すべき処理部分に対応して前記オブジェクト雛形情報生成ステップにて生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを連鎖的に実行するためのステップである。例えば、オブジェクト実行部２７０１を動作させるためのステップである。なお、オブジェクト実行方法を使用する装置は、本実施形態に係るオブジェクト実行装置に限定されることはない。
【０１２７】
（実施形態９：主な効果）
本実施形態により、オブジェクト生成装置により生成されたオブジェクト雛形情報に基づいて記述されるオブジェクトを実行することが可能となる。
【図面の簡単な説明】
【０１２８】
【図１】アクティビティ図の一例図
【図２】本発明の概要図
【図３】本発明に係る自動生成ツールの一例図
【図４】アクティビティ図の論理構造図
【図５】アクティビティ図をＸＭＬで記述した一例図
【図６】アクティビティ仕様書の論理構造図
【図７】アクティビティ仕様書の一例図
【図８】オブジェクト情報の一例図
【図９】フロー定義ファイルの論理構造図
【図１０】フロー定義ファイルの一例図
【図１１】オブジェクト情報の実行の一例図
【図１２】分岐が存在する場合に生成されるオブジェクト情報の一例図
【図１３】分岐のある場合のフロー定義ファイルの一例図
【図１４】本発明の実施形態１に係るオブジェクト情報生成装置の機能ブロック図
【図１５】メモリ上に作られた有向グラフの構造の部分の一例図
【図１６】オブジェクト雛形情報生成部１４０２の処理の流れ図
【図１７】一つのオブジェクト雛形情報の処理の流れ図
【図１８】一つのオブジェクト雛形情報の処理の流れ図
【図１９】処理順位定義情報の一例図
【図２０】処理順位定義情報生成部１４０３の処理の流れ図
【図２１】本発明の実施形態３に係るオブジェクト情報生成装置の機能ブロック図
【図２２】アクティビティ仕様情報の一例図
【図２３】本発明の実施形態５に係るオブジェクト情報生成装置の機能ブロック図
【図２４】分岐型オブジェクト雛形情報の処理の流れ図
【図２５】処理順位定義情報の一例図
【図２６】処理順位定義情報を生成する処理の流れ図
【図２７】本発明の実施形態９に係るオブジェクト実行装置の機能ブロック図
【図２８】オブジェクト保持部２７０２の内部の構造の模式図
【図２９】オブジェクト実行装置２７００の処理の流れ図
【図３０】オブジェクト実行装置２７００の処理の部分の詳細な流れ図
【符号の説明】
【０１２９】
１４００  オブジェクト情報生成装置
１４０１  アクティビティ情報取得部
１４０２  オブジェクト雛形情報生成部
１４０３  処理順位定義情報生成部
【図１】
2005250593.tif 000003
【図２】
2005250593.tif 000004
【図３】
2005250593.tif 000005
【図４】
2005250593.tif 000006
【図５】
2005250593.tif 000007
【図６】
2005250593.tif 000008
【図７】
2005250593.tif 000009
【図８】
2005250593.tif 000010
【図９】
2005250593.tif 000011
【図１０】
2005250593.tif 000012
【図１１】
2005250593.tif 000013
【図１２】
2005250593.tif 000014
【図１３】
2005250593.tif 000015
【図１４】
2005250593.tif 000016
【図１５】
2005250593.tif 000017
【図１６】
2005250593.tif 000018
【図１７】
2005250593.tif 000019
【図１８】
2005250593.tif 000020
【図１９】
2005250593.tif 000021
【図２０】
2005250593.tif 000022
【図２１】
2005250593.tif 000023
【図２２】
2005250593.tif 000024
【図２３】
2005250593.tif 000025
【図２４】
2005250593.tif 000026
【図２５】
2005250593.tif 000027
【図２６】
2005250593.tif 000028
【図２７】
2005250593.tif 000029
【図２８】
2005250593.tif 000030
【図２９】
2005250593.tif 000031
【図３０】
2005250593.tif 000032