(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-20
(45)【発行日】2024-08-28
(54)【発明の名称】情報処理装置、情報処理システム、その制御方法及びプログラム
(51)【国際特許分類】
G06F 8/30 20180101AFI20240821BHJP
【FI】
G06F8/30
(21)【出願番号】P 2020072674
(22)【出願日】2020-04-15
【審査請求日】2023-04-14
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】100189751
【氏名又は名称】木村 友輔
(72)【発明者】
【氏名】石田 知子
(72)【発明者】
【氏名】高塚 剛
【審査官】北川 純次
(56)【参考文献】
【文献】特開2007-241364(JP,A)
【文献】特開2019-219848(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30-8/77
(57)【特許請求の範囲】
【請求項1】
アプリケーションにおけるデータ処理のロジックを複数備えるビジネスプロセスの定義と、前記ビジネスプロセスを分割するための設定情報を記憶する情報処理装置を、
前記ビジネスプロセスの定義を取得する取得手段と、
前記設定情報に基づいて、前記取得手段により取得された前記定義における前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する生成手段
として機能させ、
前記生成手段を、
前記ロジックが、他のロジックから独立して動作する第1ロジックか、他のロジックとセットで動作する第2ロジックかに基づいて、前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する手段
として機能させるためのプログラム。
【請求項2】
前記生成手段を、
前記取得手段により取得された前記定義における前記ロジックを前記設定情報に基づく数に分割したアプリケーションプログラムを生成するよう制御する手段
として機能させるための請求項1に記載のプログラム。
【請求項3】
前記生成手段を、
前記ロジックが、他のロジックとセットで動作する第2
ロジックである場合には分割することなく、
前記ロジックが、他のロジックから独立して動作する第1
ロジックである場合には分割したアプリケーションプログラムを生成するよう制御する手段
として機能させるための請求項1
又は2に記載のプログラム。
【請求項4】
前記生成手段を、
前記ロジックが分割されたブロックを、それぞれメソッドとして定義したアプリケーションコードを生成するよう制御する手段
として機能させるための請求項1乃至
3のいずれか1項に記載のプログラム。
【請求項5】
アプリケーションにおけるデータ処理のロジックを複数備えるビジネスプロセスの定義と、前記ビジネスプロセスを分割するための設定情報を記憶する情報処理装置であって、
前記ビジネスプロセスの定義を取得する取得手段と、
前記設定情報に基づいて、前記取得手段により取得された前記定義における前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する生成手段と
を備え
、
前記生成手段は、
前記ロジックが、他のロジックから独立して動作する第1ロジックか、他のロジックとセットで動作する第2ロジックかに基づいて、前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御すること
を特徴とする情報処理装置。
【請求項6】
アプリケーションプログラムにデータ処理のロジックを複数備えるビジネスプロセスの定義と、前記ビジネスプロセスを分割するための設定情報を記憶する情報処理装置の制御方法であって、
前記ビジネスプロセスの定義を取得する取得工程と、
前記設定情報に基づいて、前記取得工程により取得された前記定義における前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する生成工程と
を含
み、
前記生成工程は、
前記ロジックが、他のロジックから独立して動作する第1ロジックか、他のロジックとセットで動作する第2ロジックかに基づいて、前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御すること
を特徴とする制御方法。
【請求項7】
アプリケーションプログラムにデータ処理のロジックを複数備えるビジネスプロセスの定義と、前記ビジネスプロセスを分割するための設定情報を記憶する記憶装置と、情報処理装置と、を含む情報処理システムであって、
前記ビジネスプロセスの定義を取得する取得手段と、
前記設定情報に基づいて、前記取得手段により取得された前記定義における前記ロジックを複数に分割したアプリケーションプログラムを生成
するよう制御する生成手段と
を備え
、
前記生成手段は、
前記ロジックが、他のロジックから独立して動作する第1ロジックか、他のロジックとセットで動作する第2ロジックかに基づいて、前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御すること
を特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理システム、その制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、アプリケーション開発プログラムを用いた開発の効率化が行われている。
【0003】
例えば、特許文献1には、アプリケーションプログラムの開発段階で、WEBアプリケーョンのプログラムを自動作成するツールにおいて、GUIレイアウト画面と呼ばれるレイアウトエディタを用いて、WEBアプリケーションの画面の入力項目(検索条件テキストボックスや検索ボタン等)及び出力項目(検索結果等)の配置レイアウト及び属性を定義し、その入出力定義情報に基づいて、WEBアプリケーションのプログラムを生成する仕組みが開示されている。
【0004】
また、特許文献2には、入力項目と、当該入力項目に対する処理内容と、当該処理により出力される出力項目とを対応付けた制御内容を複数含むビジネスプロセス定義(アプリケーションにおけるデータを処理するためのロジックを構築する定義情報)を用いて、アプリケーションプログラムを自動生成する仕組みが開示されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2015-99590号公報
【文献】特開2019-109732号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかし、プログラム言語によっては、1つの関数(メソッド)の量に上限があるものがある。例えばJava(登録商標)の場合は、1メソッドは64kbまでという制限があり、このサイズを超えるメソッドがあった場合、コンパイルに失敗してしまう。
【0007】
アプリケーションプログラムを構成するビジネスプロセスには、当然ながら複数の処理にかかるコードが記述されており、当該上限を超えてしまうケースがある。上限を超えた当該ビジネスプロセスを1つのメソッドとして記述・生成してしまうと、コンパイルに失敗してしまう。すなわち、動作可能なアプリケーションプログラムを生成することができなかった。
【0008】
コンパイルを成功させるためには、ビジネスプロセス定義を手動で編集・分割する必要があり、効率が悪かった。
【0009】
本発明は、動作可能なプログラムを効率的に生成可能な仕組みを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、アプリケーションにおけるデータ処理のロジックを複数備えるビジネスプロセスの定義と、前記ビジネスプロセスを分割するための設定情報を記憶する情報処理装置を、
前記ビジネスプロセスの定義を取得する取得手段と、前記設定情報に基づいて、前記取得手段により取得された前記定義における前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する生成手段として機能させ、前記生成手段を、前記ロジックが、他のロジックから独立して動作する第1ロジックか、他のロジックとセットで動作する第2ロジックかに基づいて、前記ロジックを複数に分割したアプリケーションプログラムを生成するよう制御する手段として機能させることを特徴とする。
【発明の効果】
【0011】
本発明によれば、動作可能なプログラムを効率的に生成可能な仕組みを提供することができる。
【図面の簡単な説明】
【0012】
【
図1】本発明の実施形態における、情報処理システムの構成の一例を示す図である。
【
図2】本発明の実施形態における、各種装置のハードウェア構成の一例を示す図である。
【
図3】本発明の実施形態における、各種装置の機能構成の一例を示す図である。
【
図4】本発明の実施形態における、各種装置の機能構成の詳細を示す図である。
【
図5】本発明の実施形態における、処理の概要を示すフローチャートである。
【
図6】本発明の実施形態における、ビジネスプロセス分割処理の流れを示すフローチャートである。
【
図7】本発明の実施形態における、ビジネスプロセスの分割処理の詳細な流れを示すフローチャートである。
【
図8】本発明の実施形態における、ブロック出力処理の詳細な流れを示すフローチャートである。
【
図9】本発明の実施形態における、生成時設定情報の構成の一例を示す図である。
【
図10】本発明の実施形態における、ビジネスプロセス、ルート、ブロック、ビジネスロジックの概念図の一例である。
【
図11】本発明の実施形態における、ビジネスプロセス定義の一例を示す図である。
【
図12】本発明の実施形態における、ビジネスプロセス定義の一例を示す図である。
【
図13】本発明の実施形態における、ビジネスロジックの制御コードの種類を一覧化した図の一例である。
【
図14】本発明の実施形態における、ビジネスプロセスを分割しなかった場合のアプリケーションコードの一例を示す図である。
【
図15】本発明の実施形態における、ビジネスプロセスを分割した場合のアプリケーションコードの一例を示す図である。
【
図16】本発明の実施形態における、ブロックにかかるデータの一例を示す図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して、本発明の実施の形態の一例について説明する。
【0014】
まず
図1を参照して、本発明の実施形態における、情報処理システムの構成の一例について説明する。
【0015】
プログラム開発装置100、データベースサーバ200、アプリケーションサーバ300は、ネットワーク101を介して通信可能に接続されている。これらの装置は、情報処理装置の一種である。
【0016】
プログラム開発装置100には、プログラム開発アプリケーションがインストールされており、プログラム(アプリケーションプログラム)を開発、生成することができる。
【0017】
例えば、対象のアプリケーションの画面を編集できる。具体的には、当該画面上に部品(アプリケーションが表示するボタンやテキスト入力フィールド等)を配置したり、当該部品のサイズ、形状、位置を設定・変更したりすることが可能である。
【0018】
また、当該部品の名称や、部品に対する操作を受け付けた場合の動作、入出力するデータや入出力先の画面、テーブル等を設定・編集可能である。
【0019】
データベースサーバ200には、検索アプリケーションがインストールされており、データベースサーバ200が参照可能なデータベース内のデータを検索することができる。
【0020】
アプリケーションサーバ300は、プログラム開発装置100によって生成されたアプリケーションが稼働するサーバである。プログラム開発装置100は、生成したアプリケーションのコードを自機に記憶した後、ユーザ操作に従って、当該コードをアプリケーションサーバ300に記憶する。以上が
図1の説明である。
【0021】
次に
図2を参照して、本発明の実施形態における、各種装置のハードウェア構成について説明する。
【0022】
図2において、201はCPUで、システムバス204に接続される各デバイスやコントローラを統括的に制御する。また、ROM202あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
【0023】
203はRAMで、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をROM202あるいは外部メモリ211からRAM203にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
【0024】
また、205は入力コントローラで、キーボード(KB)209や不図示のマウス等のポインティングデバイス等からの入力を制御する。
【0025】
206はビデオコントローラで、ディスプレイ210(例えばCRTディスプレイ)等の表示器への表示を制御する。なお、表示器はCRTディスプレイだけでなく、液晶ディスプレイ等の他の表示器であってもよい。これらは必要に応じてユーザが使用するものである。
【0026】
207はメモリコントローラで、ブートプログラム,各種のアプリケーション,フォントデータ,ユーザファイル,編集ファイル,各種データ等を記憶するハードディスク(HD)や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ211へのアクセスを制御する。
【0027】
208は通信I/Fコントローラで、ネットワーク(例えば、
図1に示したネットワーク101)を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
【0028】
なお、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0029】
本発明を実現するための後述する各種プログラムは、外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ211に格納されており、これらについての詳細な説明も後述する。以上が
図2の説明である。
【0030】
次に
図3を参照して、本発明の実施形態における、各種装置の機能構成について説明する。
【0031】
ビジネスプロセス定義記憶部301は、リポジトリ定義の一部であるビジネスプロセス定義を記憶する機能部である。
【0032】
本発明の実施形態において、ビジネスプロセスとは、アプリケーションにおけるデータを処理するためのロジック(ビジネスロジック)を定義した概念である。当該ビジネスロジックを定義した情報をビジネスプロセス定義と呼ぶ。
【0033】
ビジネスプロセス定義は、1つのアプリケーションプログラムに対して、複数記憶され得る。
【0034】
また、本発明の実施形態において、ビジネスロジックとは、ビジネスプロセスに定義された1命令あたりの単位である。
【0035】
設定情報記憶部302は、ビジネスプロセスを分割するための設定情報を記憶する記憶部である。設定情報は、例えば、ビジネスプロセス定義の中にある複数のビジネスロジックを、何個ずつ取得して、別のビジネスプロセスとして分割するかを示す設定値である。一例を
図9に示す。詳細は
図9の説明で後述する。
【0036】
解析処理部303は、ビジネスプロセスの解析処理を行なう機能部である。例えば、どのビジネスロジックが分割対象であり、どのビジネスロジックが分割対象外かを、各ビジネスロジックの制御コードを解析することで判断する。
【0037】
分割処理部304は、ビジネスプロセスの分割を行なう機能部である。
【0038】
ビジネスプロセス定義の一例を
図11に示す。詳細は
図11の説明で後述する。
【0039】
コード生成部305は、分割処理部で分割したビジネスプロセスを、アプリケーションプログラムのコードの中に記述することで、コードを生成する(更新する)機能部である。
【0040】
コンパイル処理部306は、コード生成部で生成したコードをコンパイル(あるいはビルド)する機能部である。
【0041】
コード記憶部307は、アプリケーションコード(コード生成部305で生成したコードや、コンパイル処理部306でコンパイルされたオブジェクトコード)を記憶する機能部である。以上が
図3の説明である。
【0042】
次に
図4を参照して、本発明の実施形態における、詳細な各種装置の機能構成について
説明する。
【0043】
プログラム開発装置100はアプリケーションを開発する開発者がプログラム開発装置を操作することにより定義した(プログラム開発装置のプログラム開発アプリケーションにより生成された)定義ファイルを管理するリポジトリ定義部400と、それらをもとにアプリケーションのコードを生成するアプリケーション生成部410を備える。
【0044】
アプリケーションサーバ300は、各種コードの生成部によって生成されたコードにより構成されるアプリケーションを記憶する。
【0045】
以下、各機能部の詳細について説明する。リポジトリ定義部400は、アプリケーション定義401、入出力定義402、データモデル定義403、ビジネスプロセス定義404、データベース定義405、生成時設定情報406を管理している。
【0046】
これらのファイルはプログラム開発アプリケーションを介して開発者によって入力され、作成され、プログラム開発装置100の外部メモリに記憶される。
【0047】
アプリケーション定義401とは、プログラム開発アプリケーションにおいて開発するアプリケーションごとに保持される定義であって、そのアプリケーションで使用する設定、データ等を定義した情報である。具体的には、アプリケーションを生成する際に使用する入出力定義や、アプリケーション定義そのものの識別コード、アプリケーション名を定義可能である。
【0048】
入出力定義402とは、プログラムへ引数として入力される項目を定義する入力定義情報と、プログラムから処理結果として出力する項目を定義する出力定義情報とを含む定義情報である。一例を以下に示す。
【0049】
例えば、当該定義の種類や、当該定義自体の識別コード、名前、データを入出力するデータ項目の識別コード、当該データ項目を備えるデータモデルの識別コード、当該入出力定義によって定義される部品を表示画面に表示するか否かを示す設定、入出力するデータの桁数や少数点以下何桁までを入出力するか等の設定が定義されている。
【0050】
データモデル定義403とは、スキーマ情報として定義される定義である。各データモデル定義は、識別コードと名前を保持する。データモデル定義には複数のデータ項目が定義されている。具体的には、各種データ項目の項目コード、項目名、そのデータ項目で使用する桁数やデータタイプ(文字、数値、日付等のデータの型)、記憶するデータとしてNULLを許可するか否かの許可設定等が定義されている。
【0051】
ビジネスプロセス定義404とは、アプリケーションで動作するビジネスロジックを定義した情報である。例えば、ビジネスロジックごとの操作タイプ(「IN」はビジネスプロセスへの入力データの変数格納、「CALL」はデータモデルコードが保有する機能コードの内容を呼び出す、等)、データモデルコード、機能を示す機能コード等を含む。
【0052】
また、本実施形態においてビジネスロジックとは、ビジネスプロセスにおける、1命令あたりの単位である。
【0053】
なお、当該ビジネスロジックには、1ビジネスロジックで独立して動作する非ブロック系ビジネスロジックと、複数のビジネスロジックがセットとなって動作するブロック系ビジネスロジックが存在する。また、複数のビジネスロジックをまとめたグループ(セット)のことをブロックと呼称する。
【0054】
データベース定義405とは、プログラム開発アプリケーションにより生成されたプログラム(アプリケーション)がアクセスするサーバの設定を記憶した定義である。具体的には、アクセスするデータベースを保持しているサーバの識別コード、サーバ名、接続先URL、データベース名、データベースへの接続に必要となるユーザ名およびパスワード等が定義されている。リポジトリ定義部400は、これらの定義を管理する手段の一例である。
【0055】
生成時設定情報406とは、アプリケーション生成部410でビジネスプロセスの分割処理を行なうか否かの設定を記述した情報である。具体例を
図9の生成時設定情報900に示す。詳細は後述する。
【0056】
アプリケーション生成部410は、リポジトリ定義解析部411によってリポジトリ定義部400の各種定義を解析し、アプリケーションコード生成部412を介し、ソースコードコンパイル部413にて、コンパイル済みコード443とHTML/JSP/Javascript(登録商標)444からなるアプリケーションコード442を生成する。例えばWebアプリケーション441(Webアプリケーションのコード)を生成する。
【0057】
アプリケーションコードは、当該コードによって構成されるアプリケーションがその機能を実行する際に利用するデータベース定義405に指定されたデータベース445にアクセスする。すなわち、アプリケーション生成部410は、アプリケーションに用いられるプログラムを生成するルールを記憶する手段の一例である。
【0058】
アプリケーション生成部410は、アプリケーションコードの生成に際し、生成設定情報解析部414でリポジトリ定義部400を解析する。解析した結果、生成時設定情報406にビジネスプロセスの分割設定が存在した場合(つまり、ビジネスプロセスを分割する旨の設定が記憶されていた場合)、ビジネスプロセス分割部420で、ビジネスプロセスの分割を行なう。
【0059】
ビジネスプロセス分割部420は、ビジネスロジック解析部421にて、ビジネスプロセス定義404を取得し、ビジネスプロセスの解析を行なう。
【0060】
ビジネスロジック分割部422は、ビジネスロジック解析部421の解析結果に基づいて、ビジネスプロセスの分割を行う。
【0061】
ビジネスロジック出力部423は、分割されたビジネスプロセスを、ファイル(Javaファイル)に出力する。具体手的には、分割されたビジネスプロセスを、1つのJavaファイル内に記述し、当該ファイルを外部メモリに記憶する。以上が
図4の説明である。
【0062】
以下、
図5~
図15を参照して、本発明の実施形態における処理の流れについて説明する。なお、各種フローチャートの処理は、各装置に搭載されたCPU201が、各装置が備える機能部の機能を用いて実行するものとする。
【0063】
まず、
図5を参照して、本発明の実施形態における処理の概要を説明する。
【0064】
S501で、プログラム開発装置100のプログラム開発アプリケーションは、不図示のアプリケーション生成実行画面において、これからコードを生成するアプリケーションの定義(アプリケーション定義)の指定を受け付ける。
【0065】
S502で、プログラム開発装置100のプログラム開発アプリケーションは、当該アプリケーション定義に基づいたアプリケーションコードの生成指示を受け付ける。例えば、当該アプリケーション生成実行画面における「生成実行」ボタンの押下操作を受け付ける。
【0066】
S503で、プログラム開発装置100のプログラム開発アプリケーションは、S501で指定を受け付けたアプリケーション定義を、外部メモリ211から取得する。
【0067】
S504で、当該アプリケーション定義によって特定されるデータモデル定義を、外部メモリ211から取得する。
【0068】
S505で、当該アプリケーション定義によって特定される入出力定義を、外部メモリ211から取得する。
【0069】
S506で、当該アプリケーション定義によって特定されるビジネスプロセス定義を、外部メモリ211から取得する。ビジネスプロセス定義の一例を
図11及び
図12に示す。
図11は、長大なビジネスプロセス定義の例であり、241のビジネスロジックが登録されている。
【0070】
ビジネスプロセス定義には、各ビジネスロジックの制御コード(1102、1202)や、それらの順序を示す番号(1101、1201)等が記憶されている。
【0071】
S507で、当該アプリケーション定義によって特定されるデータベース定義を、外部メモリ211から取得する。
【0072】
S508で、プログラム開発装置100のプログラム開発アプリケーションは、ビジネスプロセスの分割処理を実行する。S508の詳細は、
図6の説明で後述する。
【0073】
ここで
図6を参照して、本発明の実施形態における、ビジネスプロセス分割処理の流れを説明する。
【0074】
S601において、プログラム開発アプリケーション(生成設定情報解析部414)は、生成時設定情報406の内容を外部メモリ211から読み込む。生成時設定情報の例を
図9の900に示す。
【0075】
生成時設定情報900には、ビジネスプロセスを分割するに際し、当該ビジネスプロセス中の何ビジネスロジック(いくつのビジネスロジック)を1つのブロックとして、当該ビジネスプロセスから分割するかを示す分割設定情報(ビジネスプロセス分割プロパティ901)が記述されている。
【0076】
例えば、
図9の901(ビジネスプロセス分割プロパティ)には、100という値が記憶されている。これは、最大100ビジネスロジックまで1つのブロックにまとめることができることを示す。
【0077】
S602において、生成時設定情報406のビジネスプロセス分割プロパティ901が有効であるか判定する。ここでは、正の数が設定されている場合に、有効であると判定する。
【0078】
無効である、すなわち、正の数が設定されていない場合は
図6の処理を終了する。有効である場合は処理をS603に移行する。すなわち、ビジネスプロセスの分割処理に移行する。
【0079】
S603で、プログラム開発アプリケーション(ビジネスロジック解析部421)は、リポジトリ定義部400のビジネスプロセス定義404の内容を読み込む。
【0080】
S604において、プログラム開発アプリケーション(ビジネスロジック分割部422)はS601とS603で読み込んだ情報に基づいてビジネスプロセスを分割する。詳細は
図7の説明で後述する。
【0081】
ここで
図7を参照して、ビジネスプロセスの分割処理の詳細を説明する。
【0082】
図7のビジネスプロセス分割処理においては、論理的に破綻しないようにビジネスロジックをまとめる処理を行なう。ここでいう、「論理的に破綻しないように」とは、例えば、ある処理の「開始」と「終了」の制御コードがメソッドの内部と外部に分かれてしまうことで、開始した処理を正常に終了することができない等のことを言う。例えば、IF文やループ処理の場合は、開始と終了が同じメソッド内に記述されていなければ、論理破綻を起こす。
【0083】
なお、ビジネスロジックとは、ビジネスプロセスの1命令あたりの単位である。ビジネスロジックには1ビジネスロジックで独立して動作する非ブロック系ビジネスロジックと、複数のビジネスロジックがセットとなって動作するブロック系ビジネスロジックがある。
【0084】
また、ビジネスロジックをまとめたグループ(セット)をブロックと呼称する。
【0085】
ブロックには、分割前のビジネスプロセス全体をまとめたルートと、その中に含まれるブロック、あるいは、ルートから分割されたビジネスロジックをグループ化したブロックがある。
【0086】
S701において、プログラム開発アプリケーション(ビジネスプロセス分割部420)は、ビジネスプロセスのビジネスロジックをまとめたブロックの大本となるルートを作成する。
【0087】
例えば、ブロック一覧1610(
図16)をRAM203上に生成して、ルートを示すブロック番号=1のブロックを追加・記憶する。
【0088】
ルートの概念図を、
図10の1001、1002に示す。また、ブロックの概念図を、
図10の1003~1006に示す。1003、1004、1005、1006のそれぞれがブロックである。
図10では、ルートのブロックから、1003~1004のブロックが分離・分割され、各ブロックにビジネスロジックが割り当てられている様子を示している。
【0089】
なお、本発明の実施形態においては、実際には、分割前のルート、ブロックのファイルが生成・メモリに出力されることはない。
図10に示す概念図のようにロジックが分離された情報に基づいて、分割後の構成に沿ったJavaファイルが生成される。詳細は後述する。
【0090】
S702において、プログラム開発アプリケーション(ビジネスロジック分割部422)は分割後のビジネスロジックをまとめるためのカレントブロックをNULLとして作成する。
【0091】
カレントブロックとは、プログラム開発アプリケーションが処理対象としているブロックである。一例を
図16の1600に示す。カレントブロック1600には、処理対象としているブロックのブロック番号が記憶される。なお、カレントブロックに記憶するブロック番号は、ルートとは別のブロックの番号でありそれぞれ一意な数字である。また、処理対象のブロックがない(初期化されている/処理中のブロックがるーとである)場合は、NULLが記憶される。
【0092】
S703において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロック1600のブロック番号を1とする。
【0093】
S704において、プログラム開発アプリケーション(ビジネスロジック分割部422)は1つのビジネスプロセスの中からビジネスロジックがなくなるまでS705~S715の処理を繰り返す。
【0094】
S705において、プログラム開発アプリケーション(ビジネスロジック分割部422)はビジネスロジックがブロック系ビジネスロジックであるかを判別する。ブロック系ビジネスロジックだった場合は、処理をS706へ移行する。非ブロック系ビジネスロジックであった場合は、処理をS708に移行する。
【0095】
ブロック系ビジネスロジックか、非ブロック系ビジネスロジックかの判定は、当該ブロックの制御コードと、当該ブロックがブロック系ビジネスロジックか、非ブロック系ビジネスロジックかの識別情報に基づいて行なう。当該制御コードと識別情報を対応付けた情報は、当該判定を行なうプログラムのコードの中に記述されている。
【0096】
分かりやすいよう、データテーブルの形式で記載した一例を、
図13の制御コード1301と、ブロック系/非ブロック系1302に示す。
【0097】
なお、当該制御コードと識別情報の組み合わせは、取得したビジネスロジックがブロック系ビジネスロジックか、非ブロック系ビジネスロジックかの判定を行うプログラムのコードの中に記述されているものとしたが、例えば
図13のようなテーブルをプログラム開発装置100の外部メモリ211に記憶しておき、これを適宜読み出して、当該判定を行なうよう、当該判定を行なうプログラムを構成してもよい。
【0098】
S706に移行すると、つまり、ブロック系ビジネスロジックであると判定されると、プログラム開発アプリケーション(ビジネスロジック分割部422)は、処理中のビジネスロジックをルートに登録する。登録結果の一例を
図16のブロック一覧割り当てテーブル1620に示す。
【0099】
S707において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロック1600をNULLとする。
【0100】
S708に移行すると、つまり、非ブロック系ビジネスロジックであると判定されると、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロックがNULLであるかを判定する。NULLだった場合はS709へ進む。NULLでなかった場合は、S713に移行する。
【0101】
S709において、プログラム開発アプリケーション(ビジネスロジック分割部422)はブロック番号をひとつ増やす。
【0102】
S710において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、S709で生成した新たなブロック番号を持つ新しいブロックを作成する。具体的には、ブロック一覧1610にブロックを追加する。
【0103】
S711において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロックをS710で作成した新しいブロックに変更する。
【0104】
S712において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロックをルートに登録する。
【0105】
S713において、プログラム開発アプリケーション(ビジネスロジック分割部422)は、ビジネスロジックをカレントブロックに登録する。
【0106】
具体的には、カレントブロック(
図16の1600)に登録されているブロックNoに対応付けて、当該ビジネスロジックのNo、制御コードを記憶する(
図16の1620を参照)。なお、実際にはNo、制御コード以外の、ビジネスロジックにおける他の情報も記憶する。
【0107】
S714において、プログラム開発アプリケーション(ビジネスロジック分割部422)はブロックのビジネスロジック数が設定値(
図9の901)以上であるか判断する。ブロックのビジネスロジック数が設定値以上の場合、S715へ処理を移行する。設定値を下回る場合は、ビジネスロジックがなくなるまでS704からの処理を繰り返す。
【0108】
S715で、プログラム開発アプリケーション(ビジネスロジック分割部422)は、カレントブロックをNULLにする。
【0109】
なお、ブロック系ロジックでも非ブロック系ロジックでもないビジネスロジック(
図13の「その他」にあたるビジネスロジック)は、ブロック番号=0として管理、記憶する。一例は
図16の1620に示した通りである。以上が
図7の説明である。
【0110】
図7の処理によれば、設定値に収まるビジネスロジック数で、ビジネスプロセスからブロックを分割することができる。
【0111】
すなわち、ビジネスプロセスを設定値に従って分割することができる。
【0112】
図6の説明に戻る。S605において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、S604で分割したビジネスロジックを実行可能なソースコードの形に出力する。詳細は
図8の説明で後述する。
【0113】
ここで
図8を参照して、本発明の実施形態における、ブロック出力処理の詳細について説明する。
【0114】
図8のブロック出力処理においては、
図7の処理で分割したブロックを動作するソースコードの形式に出力する。
【0115】
S801~S804は、ルートの出力処理である。
【0116】
S805~S809は、ルート以外のブロックの出力処理である。
【0117】
S801において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ルートの中身がなくなるまでS804までの処理を繰り返す。
【0118】
S802において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ルートの中身がブロックであるかを判断する。
【0119】
具体的には、ルートの中に登録されているJavaのオブジェクト(
図7のS06またはS712で登録されたビジネスロジックまたはブロック)を1つ取得し、当該オブジェクトがビジネスロジックかブロックかを判定する。
【0120】
ブロックであると判定された場合は処理をS803へ移行し、ロジックである(ブロックでない)と判定された場合は処理をS804へ移行する。
【0121】
S803において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ブロック番号からなるメソッド呼び出し処理を出力する。例えば、
図15でいう「excute1(context,iN_A_LIST3,iN_A_LIST2,iN_A_LIST4,iN_A_LIST);」等の呼び出し処理のコード1501をメモリ上に出力(メモリ上に生成・記憶されたJavaファイルに出力・記憶)する。
【0122】
S804において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ビジネスロジックを出力する。例えば、
図15でいう、「//CALL:50[50]・・・」から「・・・(“done CALL:50[50])”」に示す、ビジネスロジックのコード1502をメモリ上に出力(メモリ上に生成・記憶されたJavaファイルに出力・記憶)する。
【0123】
S802で、ルートの中身がブロックでないと判定された場合は、ブロック系ビジネスロジックのみが入っているはずである。
【0124】
S805において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ルートの中身がなくなるまで、S806~S809の処理を繰り返す。
【0125】
S806において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ルートの中身がブロックであるかを判定する。
【0126】
具体的には、ルートの中に登録されているJavaのオブジェクト(
図7のS06またはS712で登録されたビジネスロジックまたはブロック)を1つ取得し、当該オブジェクトがビジネスロジックかブロックかを判定する。
【0127】
ブロックであると判定された場合は処理をS807へ移行し、ロジックである(ブロックでない)と判定された場合はルートの中身がなくなるまで当該判定を繰り返す。
【0128】
S807において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ブロック番号からなるメソッド定義処理を出力する。メソッド定義処理とは、分割後のブロックに登録されたビジネスロジックを、1つのメソッドとして定義するための処理であり、そのコードである。コンパイルに際しては、各メソッド定義処理によって、当該メソッド定義処理の後に記述された1又は複数のビジネスロジック1メソッドとしてコンパイルされる。
【0129】
メソッド定義処理のコードは、例えば、
図15に示す「private void execute2(BpContextImpl・・・」等のコード1503である。
【0130】
S808において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ブロックのビジネスロジックがなくなるまで、S809の処理を繰り返す。
【0131】
S809において、プログラム開発アプリケーション(ビジネスロジック出力部423)は、ビジネスロジックを出力する。具体的には、
図15のメソッド定義処理の次の行から記述されているコード1504のことである。
【0132】
なお、ビジネスプロセスを分割しなかった場合のコードの例を
図14に示す。
図14では、1つのプロセスの中に、全てのビジネスロジックが記述されている。つまり、コードが長大であり、コンパイル時のコードの上限値を超えてしまう可能性がある。
【0133】
図5の説明に戻る。S509で、プログラム開発装置100のプログラム開発アプリケーションは、アプリケーションコードを生成する。例えば、
図8でメモリ上に生成したコード群を、1つのJavaファイルとして生成し、外部メモリ211に記憶する処理も、当該アプリケーションコード生成処理の1つである。その他、アプリケーションの実行に必要なCSSファイルやJSP、JSファイルを生成する。
【0134】
S510で、プログラム開発装置100のプログラム開発アプリケーションは、S509で生成したコードをデプロイする。以上が
図5の説明である。
【0135】
以上説明したように、本発明によれば、他のビジネスロジックとセットになって機能するビジネスロジック(ブロック系ビジネスロジック)が、異なるファイルや異なるメソッドに分割されることがない。
【0136】
すなわち、本発明によれば、動作可能なプログラムを効率的に生成可能な仕組みを提供することができる。
【0137】
尚、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
【0138】
具体的には、プログラム開発装置100とデータベースサーバ200、アプリケーションサーバ300が一体であり、上述した実施形態の各処理を実行するようにしてもよい。
【0139】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0140】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0141】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM,DVD-R)などもある。
【0142】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0143】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0144】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0145】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0146】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0147】
尚、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。
即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0148】
100 プログラム開発装置
200 データベースサーバ
300 アプリケーションサーバ