JP2004178316A - プログラム生成装置および方法 - Google Patents
プログラム生成装置および方法 Download PDFInfo
- Publication number
- JP2004178316A JP2004178316A JP2002344484A JP2002344484A JP2004178316A JP 2004178316 A JP2004178316 A JP 2004178316A JP 2002344484 A JP2002344484 A JP 2002344484A JP 2002344484 A JP2002344484 A JP 2002344484A JP 2004178316 A JP2004178316 A JP 2004178316A
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- definition information
- data
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】利用者によって定義されたデータ構造と処理フローとに基づき、並列処理を含んだ効率の良いプログラムコードを自動的に生成する。並列処理プログラムを作成するための熟練プログラマを必要としない。
【解決手段】プログラム生成装置は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成するプログラム生成部とを具備する。
【選択図】 図1
【解決手段】プログラム生成装置は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成するプログラム生成部とを具備する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、コンピュータのプログラム作成を必要とせずに業務処理システムを実現するための、いわゆるノンプログラミングツールを用いたプログラム生成装置およびその方法に関する。
【0002】
【従来の技術】
従来、コンピュータプログラムの自動生成あるいは半自動生成のための研究・開発は数多く為されている。それらの成果の一部としては、プログラマの個性に依存せずに一定の品質のプログラムを生成することを目的として、利用者との対話形式により情報を取得し、この情報に基づいて、プログラムスケルトンを用いてアプリケーションプログラムを生成出力する装置が考案されている(例えば、特許文献1参照)。
【0003】
また、近年インターネットの普及により、企業間取引をインターネットを通じて行うことをサポートするB2Bi(Business−to−Business Integration;企業対企業統合)製品が市場に出回ってきている。企業内では部門毎に独自に構築を行ってきたシステムの連携を図り、業務連携による業務の効率化をサポートするEAI(Enterprise Application Integration;企業内アプリケーション統合)製品も市場に出回り、これら2つの機能を統合した製品も出荷され始めている。これらの製品には、GUI(Graphical User Interface;グラフィカルユーザインタフェース)を通じて、プログラム作成なしで、つまりノンプログラミングで、業務処理を実現するためのデータ構造定義ツールや処理フローを定義する各種ダイアグラムが用意されている。
【0004】
一例として、XML(Extensible Markup Language)によって記述された注文メッセージを受信し、そのXMLメッセージの構文解析を行い、その結果をJava(登録商標)言語で取扱可能なオブジェクトに変換して、そのオブジェクトをメモリ上に展開し、このメモリ展開された注文情報を加工してデータベースに書き込むという一連の業務処理を考える。
この場合、利用者(システム開発者)は、上記のようなノンプログラミングツールを用いて、処理手順をフローチャート等で定義するとともに、XMLメッセージにおけるデータ定義とメモリ展開されたオブジェクトのデータ定義とデータベースに書き込まれるレコードのデータ定義とそれら各定義間の関係とを、GUIツールを用いて定義する。
【0005】
【特許文献1】
特開平8−202539号公報
【0006】
【発明が解決しようとする課題】
前述の例において1件のXMLメッセージに複数件の注文情報のデータが含まれている場合、従来のツールでは、受信したXMLメッセージを全部まとめてメモリ展開し、メモリ展開が終わってからそれぞれの注文情報データをシーケンシャルに処理し、データベースに書き込んでいくような方式を採る。このような方式で処理した場合、1件のXMLメッセージに含まれる注文情報のデータ件数が多い(例えば、数百万件のオーダー)ときには、オブジェクトの展開のために膨大な量のメモリが必要となるという問題がある。また、データベースへの書き込みは、通常、ハードディスク装置などといった外部記憶媒体への書き込みを伴うため、CPU上の処理に比べて数千倍程度の時間がかかることがあるが、すべての注文情報データをシーケンシャルにデータベースに書き込むことによって、そのために必要な処理時間も膨大なものとなる。
【0007】
仮に熟練プログラマが上記のような処理を行うプログラムを作成する場合には、受信したXMLメッセージ全部を一度にメモリ展開するのではなく、XMLメッセージの中から注文情報データ1件分ずつを取り出して、この1件分のみをメモリ展開して処理するようなプログラムコードを記述することにより、メモリ使用量を抑制する。また、すべての注文情報データをシーケンシャルにデータベースに書き込むのではなく、数件分のデータベース書き込みを並列的に実行するようなプログラムコードを記述することにより、全体の処理時間を短縮する。しかしながら、このようなプログラムコードを記述するためには、プログラマが、コンピュータアーキテクチャを良く理解しており、メモリの物理的なイメージを持っているとともに、並列処理の概念を理解していてそれを具体的に実現するだけのスキルを持っている必要がある。
【0008】
ところが、そのような熟練プログラマの数は限られており、特に安価で調達することは困難である。また、そもそもノンプログラミングツールを利用する背景には、コンピュータアーキテクチャなどについて深い理解をしているプログラマがいなくても、業務処理(ビジネスロジックなど)を理解している者が効率的にシステムを開発しようという目的がある。従って、並列処理などを記述することのできる熟練プログラマがいなくても、データ構造や業務内容さえ正しく記述しさえすれば、メモリ効率が良く且つ処理時間の短い業務処理を実現できるようにすることが望ましい。
【0009】
例えば、注文情報データ1件分のデータ量が1000バイトで、1件のXMLメッセージに100万件の注文情報データが含まれている場合、このXMLメッセージ全体を一度にメモリ展開すると、約1GB(ギガバイト)近くのメモリが必要となってしまう。これが、例えば、せいぜい6件の注文情報データしか同時にメモリ展開しないようにした場合、必要なメモリ量は6000バイトで済む。
また、例えば、注文情報データ1件を処理するために必要な時間が120ms(ミリ秒)で、このうちデータベースに書き込む際の入出力待ちの時間が100msである場合、残りの20msがCPU処理に必要な時間である。そして、100万件のデータを全てシーケンシャルに処理した場合には、
120[ms]×1,000,000=120,000,000[ms]
で、12万秒、すなわち約33.3時間の処理時間が必要となる。一方、例えば、前記の100msの入出力待ち時間の間に、他の注文情報データの処理を並列的に実行すると、6件程度の注文情報データの処理を同時に行えることになり(120/20=6)、全体の処理時間は六分の一の2万秒、すなわち5.6時間程度に短縮することができる。
このように、並列化などによる処理の効率化の効果は非常に大きい。
【0010】
本発明は、上記のような事情を考慮して為されたものであり、利用者によって定義されたデータ構造と処理フローとに基づき、並列処理を含んだ効率の良いプログラムコードを生成するプログラム生成装置および生成方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
上記の課題を解決するために、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成するプログラム生成部とを具備することを特徴とするプログラム生成装置を要旨とする。
【0012】
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部は、前記処理フロー定義情報に基づく処理をコンピュータに並列的に実行させる業務処理プログラムを生成することを特徴とするものである。
このような構成により、前記のように並列処理可能な単位に分けられたデータ毎に処理フロー定義情報に基づく処理を並列的に実行させることが可能となり、処理時間を短くすることが出来る。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する業務処理プログラムは、前記処理フロー定義情報によって定義された処理を前記並列処理可能な単位のデータ毎に実行する利用者定義処理プログラムと、該利用者定義処理プログラムによる処理を並列的に実行する制御を行うディスパッチングプログラムとを含むことを特徴とするものである。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する前記ディスパッチングプログラムは、前記業務処理コンピュータプログラムを実行する環境に関する実行環境情報を実行環境情報記憶部から読み出し該実行環境情報に基づいて、前記利用者定義処理プログラムによる処理を並列的に実行する制御を行うものであることを特徴とする。
このような構成により、実行環境情報に基づいて、例えばクラスタリング構成などといった実行環境に応じて適切な並列処理を実現することが可能となる。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する前記ディスパッチングプログラムは、当該ディスパッチングプログラムに入力されるデータを前記並列処理可能な単位に分割する過程と、プログラム部品として予め用意されており前記処理フロー定義情報からは独立な処理として前記利用者定義処理プログラムをディスパッチする処理を行うディスパッチング制御ルーチンを呼び出す過程との処理をコンピュータに実行させるものであることを特徴とする。
【0013】
また、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部とを具備するプログラム生成装置において業務処理プログラムを生成するプログラム生成方法であって、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程を有することを特徴とするものである。
また、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部とを具備するプログラム生成装置において業務処理プログラムを生成する処理をコンピュータに実行させるプログラム生成プログラムであって、前記データ構造定義情報記憶部から読み出した前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報記憶部から読み出した前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程をコンピュータに実行させるプログラム生成プログラムである。
【0014】
【発明の実施の形態】
以下、図面を参照しこの発明の一実施形態について説明する。図1は、本実施形態によるプログラム生成装置の構成を示すブロック図である。この図において、符号1はプログラム生成装置、91はプログラム生成装置1が出力する情報を利用者に対して表示する表示装置、92は利用者からプログラム生成装置1への入力を受け付ける入力装置である。表示装置91の具体例は、CRT(Cathode Ray Tube;陰極線管)や液晶やPDP(Plasma Display Panel;プラズマディスプレイパネル)などを利用したディスプレイ装置である。また、入力装置92の具体例は、マウスなどのポインティングデバイスやキーボード、あるいはそれらを組み合わせたものである。
【0015】
プログラム生成装置1の内部には、利用者から入力される情報などに応じてデータ構造を定義する処理を行うデータ構造定義部11と、データ構造定義部11によって定義されたデータ構造定義情報を記憶するデータ構造定義情報記憶部21と、同じく利用者から入力される情報などに応じて処理フローを定義する処理を行う処理フロー定義部12と、処理フロー定義部12によって定義された処理フロー定義情報を記憶する処理フロー定義情報記憶部22とが存在している。プログラム生成装置1において、プログラム生成部10は、データ構造定義情報記憶部21と処理フロー定義情報記憶部22とから読み出した情報に基づいて、業務処理を実現するためのプログラムを生成し、このプログラムをプログラム記憶部31に書き込む。プログラム記憶部31は、プログラム生成装置1の内部に設けられていても良いし、外部のコンピュータ等に設けられていても良い。
なお、プログラム記憶部31に書き込まれたプログラムは、実行環境において実行可能な形式に変換し、実行することができる。本例では、プログラム生成部は、利用者定義処理プログラムとディスパッチングプログラムとを生成する。詳細については後述するが、利用者定義プログラムは、分割されたデータに関して利用者が定義した処理をコンピュータに実行させるプログラムである。また、ディスパッチングプログラムは、データを分割するとともに、分割されたデータ毎に利用者定義処理プログラムによる処理をディスパッチするプログラムである。なお、プログラム記憶部31には、ディスパッチング制御ルーチンがプログラム部品として記憶されている。前記のディスパッチングプログラムは、内部において、このディスパッチング制御ルーチンを呼び出すようになっている。
つまり、ディスパチング制御ルーチンは、プログラム部品として予め用意されており、処理フロー定義情報からは独立な処理として、実行環境情報記憶部から読み出した実行環境情報(後述)に基づいて、利用者定義処理プログラムをディスパッチする処理を行う。
プログラム生成部10が生成したディスパッチングプログラムと、部品としてのディスパッチング制御ルーチンとは、実行時までに静的にリンクされるか、実行時に動的にリンクされるかのいずれかの方法により連係をとる。
【0016】
次に、業務処理において処理の対象となるデータの例について説明する。
図2は、処理対象となる入力データの一例を示す概略図である。この図に示すデータはXMLで記述されたテキスト形式の注文情報データの例である。このデータに含まれる各種のタグが、このデータの構造を規定している。例えば、「<RECORD>」というタグは1件の注文情報データの始まりを表し、「</RECORD> 」というタグは1件の注文情報データの終わりを表している。つまり、図示するデータの1行目から17行目までが1件目のレコードであり、同じく18行目から34行目までが2件目のレコードである。本例では入力データ内に2件のレコードが含まれているが、実際には任意の件数のレコードを入力データ内に含むようにすることができる。
【0017】
また、各レコード内において、「<ORDER_NO>」および「</ORDER_NO>」のタグによって囲まれる部分はは注文番号を表す。同様に、「<CUST_ID>」および「</CUST_ID>」のタグによって囲まれる部分は顧客識別情報を表す。また、「<DATE>」および「</DATE> 」のタグによって囲まれる部分は注文日付を表す。
また、「<ITEM>」および「</ITEM> 」のタグによって囲まれる部分は、当該注文に含まれる注文品の情報を表し、この注文品の情報において、「<NO>」および「</NO>」のタグによって囲まれる部分は当該注文内における注文品の番号(注文枝番)を表し、「<HINMEI>」および「</HINMEI> 」のタグによって囲まれる部分は品名を表し、「<TANKA> 」および「</TANKA>」のタグによって囲まれる部分は単価を表し、「<SUURYOU> 」および「</SUURYOU>」のタグによって囲まれる部分は注文品の数量を表す。
【0018】
次に、プログラムを生成する元となる各情報について説明する。
図3は、データ構造定義情報記憶部21に記憶されるデータ構造定義情報の例を示す概略図である。図3の(a)〜(d)に示すデータは本装置独自の形式で記述されたテキスト形式のデータであり、それぞれ、入力データを基に1件毎のトランザクションデータを取り出すために必要となる定義情報を表すデータである。
図3(a)に示すデータは、トランザクションデータが「<RECORD>」タグで始まり「</RECORD> 」タグで終わることを表している。図2に例示した入力データは、この図3(a)のデータ構造定義情報に対応している。
図3(b)に示すデータは、入力データに含まれる各トランザクションデータが改行(Carriage Return )文字(「¥n」と表記している)によって区切られることを表している。
図3(c)に示すデータは、入力データに含まれる各トランザクションデータが固定長で区切られるレコードに対応していることを表している。
図3(d)に示すデータは、入力データに含まれる各トランザクションデータが可変長のレコードに対応しているものであり、そのレコード長を表すフィールドが各レコードの先頭0バイト目から4バイト分であることを表している。
【0019】
次に、処理フロー定義情報について説明する。ここでは、処理フロー定義情報は、業務処理の流れを表すフローチャート情報と、より詳細な処理の内容を表す処理詳細情報とからなる。
図4は、処理フロー定義情報記憶部22に記憶される処理フロー定義情報の一部であるフローチャート情報の例を示す概略図である。図示するように、本例では、まずXMLオーダー情報(XMLで記述された注文情報データ)が入力される。次に、入力されたXMLオーダー情報に基づいて、XMLオーダー情報構文解析処理が行われる。この構文解析処理が成功した場合はオーダー情報(注文情報データ)がメモリに展開され、エラーの場合にはエラーログにエラー情報が書き込まれる。なお、エラーログは、磁気ディスクや磁気テープなどといった記録媒体に記録される。そして、構文解析処理によってメモリ展開されたオーダー情報に基づいて、次に、オーダー書き込み処理が行われる。このオーダー書き込み処理が成功した場合には結果としてオーダーデータベースにオーダー情報が書き込まれ、エラーの場合にはエラーログにエラー情報が書き込まれる。なお、オーダーデータベースは、磁気ディスクなどといった媒体にその情報を保持する。
【0020】
図5は、図4に含まれるXMLオーダー情報構文解析処理に対応する詳細処理情報を示す概略図である。図示するように、詳細処理情報は、入力データ(Input )の定義と、処理内容そのものの定義と、出力データ(Output)の定義とから成る。図5の例では、入力データは、前述したXMLオーダー情報(注文情報データ)である。また、出力データは、メモリ展開されたオーダー情報とエラーログである。
【0021】
そして、処理内容としては、入力されたXMLオーダー情報を基にXML構文解析処理を行う(「XML構文解析」という関数の引数が「XMLオーダー情報」)。
この構文解析処理においてエラーが無かった場合には「1.1エラーなし」の部分に定義された処理を行う。即ち、入力データ中の「ORDER_NO」のデータをメモリ展開されたオブジェクトの「oreder_no」に格納する。入力データ中の「CUST_ID 」のデータをメモリ展開されたオブジェクトの「cust_id 」に格納する。また、入力データ中の「ITEM[*].NO」、「ITEM[*].HINMEI」、「ITEM[*].TANKA 」、「ITEM[*].SUURYOU 」をそれぞれメモリ展開されたオブジェクトの「item[*].no」、「item[*].hinmei」、「item[*].tanka 」、「item[*].suuryou 」に格納する。なお、「item」は、構造体の配列であり、「item[*] 」はこの配列のすべての要素を表す。つまり、この「*」は、配列の添え字のすべてを表す。また、例えば、「item[*].no」は、構造体のメンバー「no」を表す。このようにして、構文解析処理においてエラーが無い場合には入力データがメモリ展開されるという処理が定義されている。
また、構文解析処理においてエラーがあった場合には、「1.2エラーあり」の部分に定義された処理を行う。即ち、システムで管理している時刻(実行時の時刻)をエラーログの「time」に格納し、システムエラーコードを同じく「err_code」に格納し、システムエラーメッセージを「err_msg 」に格納し、処理を終了する。
【0022】
図6は、図4に含まれるオーダー書き込み処理に対応する詳細処理情報を示す概略図である。図示するように、オーダー書き込み処理の入力データは、上述したXMLオーダー情報構文解析処理においてメモリ展開されたオーダー情報である。また、出力データは、オーダーデータベース内の伝票テーブルおよび明細テーブルと、エラーログとである。オーダーデータベースにおいて、伝票テーブルの主キーは注文番号を表す「ORDER_NO」であり、伝票テーブルのその他の属性項目としては顧客識別情報を表す「CUST_ID 」がある。また、明細テーブルの主キーは上記の「ORDER_NO」と注文枝番に相当する「NO」との複合キーであり、明細テーブルのその他の属性項目としては「HINMEI」と「TANKA 」と「SUURYOU 」とがある。なお、伝票テーブルと明細テーブルとは、項目「ORDER_NO」によって結合される。
【0023】
そして、処理内容は次の通りである。即ち、「1.オーダーデータベース書き込み」において、メモリ展開されているオーダー情報の「order_no」と「cust_id 」を、それぞれ、伝票テーブルの「ORDER_NO」と「CUST_ID 」の各項目に格納するようなレコードのデータを作成する。また、メモリ展開されているオーダー情報の配列「item[]」の各要素について、その要素の「no」と「hinmei」と「tanka 」と「suuryou 」を、それぞれ、明細テーブルの「NO」と「HINMEI」と「TANKA 」と「SUURYOU 」の各項目に格納するようなレコードのデータを作成する。また、明細テーブルの「ORDER_NO」には上記の「order_no」が格納される。そして、これらの各レコードが、それぞれ、オーダーデータベースの伝票テーブルおよび明細テーブルに挿入(insert)される。
上記のデータの挿入においてエラーがなかった場合には、「1.1.エラーなし」の処理が行われ、つまり、そのまま処理を終了する。
また、上記のデータの挿入においてエラーがあった場合には、「1.2.エラーあり」の処理が行われ、システム時刻とシステムエラーコードとシステムエラーメッセージとをエラーログに書き出して処理を終了する。
【0024】
次に、実行環境情報記憶部が記憶する実行環境情報について、説明する。実行環境情報は、実行時に参照される情報であり、上で定義された業務処理を実行するコンピュータの構成に関する情報である。特にこの実行環境情報が意味を持つのは、業務処理を複数台のコンピュータで分散処理する場合である。1つの業務処理を複数台のコンピュータで分散処理する場合、それら複数台のコンピュータはクラスタリンググループを形成する。そして、実行環境情報は、最低限このクラスタリンググループに属するコンピュータを識別する為の、各コンピュータのアドレス情報(ホスト名あるいはIPアドレスなど)を含んでいる。
なお、業務処理を複数台のコンピュータで分散処理させずに単一のコンピュータで処理する場合には、実行環境情報にそのような単一のコンピュータによる構成であることを表わす情報を含むようにしても良いし、実行環境情報記憶部そのものを持たないようにしても良い。後者の場合には、実行環境情報記憶部が無いときには、実行時に、実行環境は単一のコンピュータによる構成であると解釈することが出来る。
【0025】
プログラム生成部(図1の符号10)は、以上説明したデータ構造定義情報と処理フロー定義情報とを各記憶部から読み出し、これらの情報に基づいてプログラムを生成する。ここで説明している例の場合、プログラム生成部は、XMLオーダー情報構文解析処理プログラムと、オーダー書き込み処理プログラムと、ディスパッチングプログラムの3つのプログラムを生成する。
これら3つのプログラムのうち、XMLオーダー情報構文解析処理プログラムと、オーダー書き込み処理プログラムとは、利用者によって定義された処理フロー情報に従って、1件分の処理データを処理する利用者定義処理プログラムである。なお、1件分のデータとは、前述のデータ構造定義情報の定義によって取り出される単位であり、具体的には、例えば、図2に示したデータの「<RECORD>」タグで始まって「</RECORD> 」タグで終了するレコードである。
また、ディスパッチングプログラムは、入力データから1件分ずつデータを取り出し、これをトランザクションデータとして、トランザクションをディスパッチし、実行環境に応じて複数のトランザクションを並列的に実行させるような制御を行うプログラムである。なお、ここで、トランザクションとは、XMLオーダー情報構文解析処理プログラムとオーダー書き込み処理プログラムとによって1件分のデータを処理する処理単位である。
【0026】
図7は、プログラム生成部が生成するディスパッチングプログラムの処理手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まず、ステップS51において、変数「parallel」を0に初期化する。この変数「parallel」はトランザクション実行の並列度を表すものである。
次に、ステップS52において、変数「parallel」が定数「MAX」以上かどうかを判断する。この定数「MAX」は、実行環境情報等に基づいて定められ、トランザクション実行時の最大並列度を表すものである。判断結果が「YES」ならばステップS57へ飛び、「NO」ならば次のステップS53へ進む。
次に、ステップS53において、入力データが既に終了しているかどうかを判断する。この判断は、例えば、入力データを読み込むための命令を実行して、その結果として「EOF(end of file) 」コードが返されるかどうかにより行う。判断結果が「YES」ならばステップS57へ飛び、「NO」ならば次のステップS54へ進む。
【0027】
次に、ステップS54において、入力データから1トランザクション分のデータを取り出し、割り当てられたメモリにこのデータを展開する。なお、1トランザクション分のデータを取り出す方法は、前述のデータ構造定義情報記憶部に記憶されている情報によって決まる。例えば、図3(a)に示したデータ構造定義情報を用いてデータを取り出す場合には、入力データを字句解析することにより、「<RECORD>」で始まり「</RECORD> 」で終わる部分のデータを1トランザクション分のデータとする。
次に、ステップS55において、変数「parallel」に1を加算する。これは、下でディスパッチするトランザクションにより、並列度が1だけ増加することを表す。
そして、ステップS56において、ディスパッチ先を選択し、上で取り出したデータによるトランザクションをディスパッチする。なお、このステップにおけるディスパッチ先の選択のしかたは、実行環境情報記憶部に記憶された情報に基づいて決まる。ディスパッチ先は、ディスパッチングプログラムと同じコンピュータである場合もあるし、他のコンピュータあるいは他のCPUである場合もある。
【0028】
次に、ステップS57では、トランザクションの終了を待つ。既にディスパッチしたトランザクションのいずれかが終了すると、その結果を受けてこの待ちを抜け出し、次のステップへ進む。
次に、ステップS58では、終了したトランザクション結果の後処理を行う。次に、ステップS59では、変数「parallel」から1を減算する。これは、上でトランザクションが終了したため、並列度が1だけ減少することを表す。
そして、ステップS60では、終了条件の判定を行う。すなわち、入力データがすべて終了しており、かつ、変数「parallel」が0(実行中のトランザクションが無いことを表す)であれば、処理を終了する。そうでなければ、ステップS52に戻って処理を続ける。
なお、ディスパッチングプログラムの処理機能のうち、ディスパッチングの制御に関する部分だけを共通のディスパッチング制御ルーチンとして切り出す場合には、例えば、図7の処理におけるステップS52、S55、S56、S57の機能をディスパッチング制御ルーチンに持たせるようにする。そして、このディスパッチング制御ルーチンは、個々の具体的な業務処理からは独立なプログラム部品として用意する。但し、上記のような機能の切り出し方は単なる一例であり、他の方法でプログラム部品の機能分割を行っても良い。
【0029】
最後に、生成されるプログラムの実行環境等について説明する。
実行環境情報記憶部に記憶されている情報に基づいてトランザクションのディスパッチ先が決定されることは既に述べた通りであるが、この実行環境情報にクラスタリンググループが定義されている場合、ディスパッチングプログラムは、まず同じクラスタリンググループに所属するホストのアドレス情報(ホスト名又はIPアドレス等)を取得し、クラスタリンググループに所属する他のマシン上で利用者定義処理プログラムを実行する。このとき、データベースなどの入出力対象資源は、同じクラスタリンググループに所属するマシン間で共有されているものとする。
前述のように、ディスパッチングプログラムは、同じクラスタリンググループに属する他のマシンに利用者定義処理プログラムの実行を依頼するが、このとき、負荷の高いマシンに処理を依頼するより、負荷の低いマシンに処理を依頼するほうが全体の処理効率が良いので、負荷の低いマシンを選んで処理を依頼するようにする。そして、他のマシンが全て自分自身より処理負荷が高い場合には、自分自身に処理を依頼するようにする。
【0030】
クラスタリング処理を行う場合、処理に関わるマシンの数が増えるので、その中のいずれかのマシンが障害となる確率も高くなる。従って、障害に備えたフェイルセーフ機能を組み込んでおく。ディスパッチングプログラムは、処理を依頼した先のマシンが処理を完了したかどうかを監視し、依頼先のマシンのシステムダウン等の障害を検知した場合には、そのトランザクションを他のマシンに引き継がせるようにすることで、耐障害性を向上させる。
また、同様に、ディスパッチングプログラムが稼動しているマシンがダウンすることも考えられる。ディスパッチングプログラムからトランザクション処理を依頼された先のマシンは、常にディスパッチ元のマシンを監視し、ディスパッチングプログラムが稼動するマシンがダウンした場合には、ディスパッチングの処理を途中から引き継ぐようにする。処理の引き継ぎのために、ディスパッチングプログラムは、常に、処理が完了したデータを記録することによってどこまでの処理が完了したかを管理する。ディスパッチングプログラムの処理を引き継ぐマシンは、処理再開時に、処理済のデータを読み飛ばし、処理が済んでないデータのみについて処理を行うようにする。
【0031】
図8は、クラスタリングを実施しない場合の実行環境における動きを示す概略図である。この図において、ディスパッチングプログラムおよび利用者定義処理プログラムは、それぞれプログラム記憶部(図示せず)から読み出されて、業務処理プログラム実行コンピュータにローディングされる。この図の例では、ディスパッチングプログラムの一部の処理であるディスパッチング制御ルーチンが、サブルーチンとして呼び出される。そして、利用者定義処理プログラムは、ディスパッチングプログラムが実行される業務処理プログラム実行コンピュータと同一のコンピュータ上で実行される。なお、業務処理プログラム実行コンピュータとプログラム生成装置とは同一のコンピュータであっても良いし、異なるコンピュータであっても良い。
なお、図8に示す例では、ディスパッチングプログラム内のディスパッチング制御ルーチンが実行環境情報記憶部から実行環境情報を読み出すようになっているが、前述の通り、クラスタリングを実施しない場合には、実行環境情報記憶部を持たないようにしても良い。
【0032】
図9は、クラスタリングを行う場合の実行環境における動きを示す概略図である。図9が図8と異なる点は、ディスパッチングプログラムが実行されるコンピュータと利用者定義処理プログラムが実行されるコンピュータとが異なっており、また利用者定義処理プログラムが複数の異なるコンピュータ上で実行されることである。ディスパッチングプログラムは、実行環境情報記憶部からクラスタリンググループに関する情報を得て、クラスタリングクループを形成する各メンバー(業務処理プログラム実行コンピュータ)に業務処理プログラムの実行を依頼する。
【0033】
上述したプログラム生成装置はコンピュータシステムを用いて実現している。そして、プログラム生成装置におけるデータ構造定義部と処理フロー定義部とプログラム生成部における各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0034】
なお、ディスパッチング制御ルーチンをプログラム部品として切り出すことにより、次のようなことも可能である。
本実施形態によるプログラム生成装置の機能をコンピュータに実行させるプログラムをライセンス販売の形態で販売する場合には、例えば、実行環境においてクラスタリングを行う場合と行わない場合とで、プログラム生成プログラムのライセンス価格に変化を持たせたい場合がある。つまり、その場合には価格の異なる2種類のライセンスを用意して、価格が安い方のライセンスでは業務処理のクラスタリングを行わないようにして、価格が高いほうのライセンスのみにおいて業務処理のクラスタリングを行えるようにする。そして、このライセンスの種類に応じて、プログラム部品として提供されるディスパッチング制御ルーチンも2種類用意し、この2種類のディスパッチング制御ルーチンのうちの一方がクラスタリング環境での利用者定義処理のディスパッチングを行い、他方では単一コンピュータ上での利用者定義処理のディスパッチングのみを行うようにする。
【0035】
これにより、ディスパッチング制御ルーチンを入れ替えるだけで、2種類のライセンスを適切に販売することができる。
また、ある利用者が、価格の安い方のライセンスから価格の高い方のライセンスにアップグレードする際にも、利用者定義処理プログラムを書き換えたり再コンパイルしたりすることなく、ディスパッチング制御ルーチンを入れ替えるだけで、システムの移行をスムースに行え、ソフトウェアの販売者にとっても利用者にとっても手間がかからないというメリットが得られる。
【0036】
以上、図面を参照してこの発明の実施形態を詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0037】
【発明の効果】
以上説明したように、この発明によれば、データ構造定義情報記憶部がデータの構造を定義したデータ構造定義情報を記憶し、処理フロー定義情報記憶部が前記データを用いた処理フローを定義した処理フロー定義情報を記憶する。そして、プログラム生成部は、データ構造定義情報記憶部から読み出したデータ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に処理フロー定義情報記憶部から読み取った処理フロー定義情報に基づく処理をコンピュータに実行させるための業務処理プログラムを生成する。これにより、利用者が定義した処理フローに基づいて、自動的に並列化処理を行うプログラムを生成できる。従って、利用者が処理を定義する際にその並列性を意識する必要が無く、かつデータの処理時間を短縮することができる。これにより、熟練プログラマが、効率の良い並列処理プログラムをわざわざ作成する必要が無い。
【0038】
また、本発明によれば、プログラム生成部が生成する業務処理プログラムは、業務処理コンピュータプログラムを実行する環境に関する実行環境情報を実行環境情報記憶部から読み出し該実行環境情報に基づいて処理フロー定義情報に基づく処理をコンピュータに並列的に実行させる。これにより、生成されたプログラムを実行環境情報に応じて最適な状況で並列的に実行させることが可能となる。例えば、クラスタリング構成を有する実行環境などにおいて、処理の並列化を実現できるため、業務処理にスケーラビリティを持たせることが可能となる。
【0039】
また、本発明によれば、ディスパッチングプログラムは、当該ディスパッチングプログラムに入力さえるデータを並列処理可能な単位に分割する過程と、プログラム部品として予め用意されており処理フロー定義情報からは独立な処理として利用者定義処理プログラムをディスパッチする処理を行うディスパッチング制御ルーチンを呼び出す過程とをコンピュータに実行させる。即ち、ディスパッチング制御ルーチンを利用者定義処理からは独立な共通プログラムとして切り出している。これにより、例えば、ディスパッチング制御ルーチンとして、クラスタ環境対応用のものと非対応用のものとの2種類を用意し、これを使い分けることにより、プログラム生成装置あるいはプログラム生成プログラムの機能を変えることができる。また、利用者がこれら異なる機能間で移行を行う際にも、ディスパッチング制御ルーチンを入れ替えるだけで利用者定義処理プログラムを再作成あるいは再コンパイル等することなく、簡単な移行が行えるようになる。
【図面の簡単な説明】
【図1】この発明の一実施形態によるプログラム生成装置の構成を示すブロック図である。
【図2】同実施形態において、処理対象となる入力データの一例を示す概略図である。
【図3】同実施形態において、データ構造定義情報記憶部に記憶されるデータ構造定義情報の例を示す概略図である。
【図4】同実施形態において、処理フロー定義情報記憶部に記憶される処理フロー定義情報の一部であるフローチャート情報の例を示す概略図である。
【図5】図4に含まれるXMLオーダー情報構文解析処理に対応する詳細処理情報を示す概略図である。
【図6】図4に含まれるオーダー書き込み処理に対応する詳細処理情報を示す概略図である。
【図7】プログラム生成部が生成するディスパッチングプログラムの処理手順を示すフローチャートである。
【図8】クラスタリングを実施しない場合の実行環境における動きを示す概略図である。
【図9】クラスタリングを実施する場合の実行環境における動きを示す概略図である。
【符号の説明】
1 プログラム生成装置
10 プログラム生成部
11 データ構造定義部
12 処理フロー定義部
21 データ構造定義情報記憶部
22 処理フロー定義情報記憶部
31 プログラム記憶部
91 表示装置
92 入力装置
【発明の属する技術分野】
この発明は、コンピュータのプログラム作成を必要とせずに業務処理システムを実現するための、いわゆるノンプログラミングツールを用いたプログラム生成装置およびその方法に関する。
【0002】
【従来の技術】
従来、コンピュータプログラムの自動生成あるいは半自動生成のための研究・開発は数多く為されている。それらの成果の一部としては、プログラマの個性に依存せずに一定の品質のプログラムを生成することを目的として、利用者との対話形式により情報を取得し、この情報に基づいて、プログラムスケルトンを用いてアプリケーションプログラムを生成出力する装置が考案されている(例えば、特許文献1参照)。
【0003】
また、近年インターネットの普及により、企業間取引をインターネットを通じて行うことをサポートするB2Bi(Business−to−Business Integration;企業対企業統合)製品が市場に出回ってきている。企業内では部門毎に独自に構築を行ってきたシステムの連携を図り、業務連携による業務の効率化をサポートするEAI(Enterprise Application Integration;企業内アプリケーション統合)製品も市場に出回り、これら2つの機能を統合した製品も出荷され始めている。これらの製品には、GUI(Graphical User Interface;グラフィカルユーザインタフェース)を通じて、プログラム作成なしで、つまりノンプログラミングで、業務処理を実現するためのデータ構造定義ツールや処理フローを定義する各種ダイアグラムが用意されている。
【0004】
一例として、XML(Extensible Markup Language)によって記述された注文メッセージを受信し、そのXMLメッセージの構文解析を行い、その結果をJava(登録商標)言語で取扱可能なオブジェクトに変換して、そのオブジェクトをメモリ上に展開し、このメモリ展開された注文情報を加工してデータベースに書き込むという一連の業務処理を考える。
この場合、利用者(システム開発者)は、上記のようなノンプログラミングツールを用いて、処理手順をフローチャート等で定義するとともに、XMLメッセージにおけるデータ定義とメモリ展開されたオブジェクトのデータ定義とデータベースに書き込まれるレコードのデータ定義とそれら各定義間の関係とを、GUIツールを用いて定義する。
【0005】
【特許文献1】
特開平8−202539号公報
【0006】
【発明が解決しようとする課題】
前述の例において1件のXMLメッセージに複数件の注文情報のデータが含まれている場合、従来のツールでは、受信したXMLメッセージを全部まとめてメモリ展開し、メモリ展開が終わってからそれぞれの注文情報データをシーケンシャルに処理し、データベースに書き込んでいくような方式を採る。このような方式で処理した場合、1件のXMLメッセージに含まれる注文情報のデータ件数が多い(例えば、数百万件のオーダー)ときには、オブジェクトの展開のために膨大な量のメモリが必要となるという問題がある。また、データベースへの書き込みは、通常、ハードディスク装置などといった外部記憶媒体への書き込みを伴うため、CPU上の処理に比べて数千倍程度の時間がかかることがあるが、すべての注文情報データをシーケンシャルにデータベースに書き込むことによって、そのために必要な処理時間も膨大なものとなる。
【0007】
仮に熟練プログラマが上記のような処理を行うプログラムを作成する場合には、受信したXMLメッセージ全部を一度にメモリ展開するのではなく、XMLメッセージの中から注文情報データ1件分ずつを取り出して、この1件分のみをメモリ展開して処理するようなプログラムコードを記述することにより、メモリ使用量を抑制する。また、すべての注文情報データをシーケンシャルにデータベースに書き込むのではなく、数件分のデータベース書き込みを並列的に実行するようなプログラムコードを記述することにより、全体の処理時間を短縮する。しかしながら、このようなプログラムコードを記述するためには、プログラマが、コンピュータアーキテクチャを良く理解しており、メモリの物理的なイメージを持っているとともに、並列処理の概念を理解していてそれを具体的に実現するだけのスキルを持っている必要がある。
【0008】
ところが、そのような熟練プログラマの数は限られており、特に安価で調達することは困難である。また、そもそもノンプログラミングツールを利用する背景には、コンピュータアーキテクチャなどについて深い理解をしているプログラマがいなくても、業務処理(ビジネスロジックなど)を理解している者が効率的にシステムを開発しようという目的がある。従って、並列処理などを記述することのできる熟練プログラマがいなくても、データ構造や業務内容さえ正しく記述しさえすれば、メモリ効率が良く且つ処理時間の短い業務処理を実現できるようにすることが望ましい。
【0009】
例えば、注文情報データ1件分のデータ量が1000バイトで、1件のXMLメッセージに100万件の注文情報データが含まれている場合、このXMLメッセージ全体を一度にメモリ展開すると、約1GB(ギガバイト)近くのメモリが必要となってしまう。これが、例えば、せいぜい6件の注文情報データしか同時にメモリ展開しないようにした場合、必要なメモリ量は6000バイトで済む。
また、例えば、注文情報データ1件を処理するために必要な時間が120ms(ミリ秒)で、このうちデータベースに書き込む際の入出力待ちの時間が100msである場合、残りの20msがCPU処理に必要な時間である。そして、100万件のデータを全てシーケンシャルに処理した場合には、
120[ms]×1,000,000=120,000,000[ms]
で、12万秒、すなわち約33.3時間の処理時間が必要となる。一方、例えば、前記の100msの入出力待ち時間の間に、他の注文情報データの処理を並列的に実行すると、6件程度の注文情報データの処理を同時に行えることになり(120/20=6)、全体の処理時間は六分の一の2万秒、すなわち5.6時間程度に短縮することができる。
このように、並列化などによる処理の効率化の効果は非常に大きい。
【0010】
本発明は、上記のような事情を考慮して為されたものであり、利用者によって定義されたデータ構造と処理フローとに基づき、並列処理を含んだ効率の良いプログラムコードを生成するプログラム生成装置および生成方法を提供することを目的とする。
【0011】
【課題を解決するための手段】
上記の課題を解決するために、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成するプログラム生成部とを具備することを特徴とするプログラム生成装置を要旨とする。
【0012】
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部は、前記処理フロー定義情報に基づく処理をコンピュータに並列的に実行させる業務処理プログラムを生成することを特徴とするものである。
このような構成により、前記のように並列処理可能な単位に分けられたデータ毎に処理フロー定義情報に基づく処理を並列的に実行させることが可能となり、処理時間を短くすることが出来る。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する業務処理プログラムは、前記処理フロー定義情報によって定義された処理を前記並列処理可能な単位のデータ毎に実行する利用者定義処理プログラムと、該利用者定義処理プログラムによる処理を並列的に実行する制御を行うディスパッチングプログラムとを含むことを特徴とするものである。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する前記ディスパッチングプログラムは、前記業務処理コンピュータプログラムを実行する環境に関する実行環境情報を実行環境情報記憶部から読み出し該実行環境情報に基づいて、前記利用者定義処理プログラムによる処理を並列的に実行する制御を行うものであることを特徴とする。
このような構成により、実行環境情報に基づいて、例えばクラスタリング構成などといった実行環境に応じて適切な並列処理を実現することが可能となる。
また、本発明は、上記のプログラム生成装置において、前記プログラム生成部が生成する前記ディスパッチングプログラムは、当該ディスパッチングプログラムに入力されるデータを前記並列処理可能な単位に分割する過程と、プログラム部品として予め用意されており前記処理フロー定義情報からは独立な処理として前記利用者定義処理プログラムをディスパッチする処理を行うディスパッチング制御ルーチンを呼び出す過程との処理をコンピュータに実行させるものであることを特徴とする。
【0013】
また、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部とを具備するプログラム生成装置において業務処理プログラムを生成するプログラム生成方法であって、前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程を有することを特徴とするものである。
また、本発明は、データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部とを具備するプログラム生成装置において業務処理プログラムを生成する処理をコンピュータに実行させるプログラム生成プログラムであって、前記データ構造定義情報記憶部から読み出した前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報記憶部から読み出した前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程をコンピュータに実行させるプログラム生成プログラムである。
【0014】
【発明の実施の形態】
以下、図面を参照しこの発明の一実施形態について説明する。図1は、本実施形態によるプログラム生成装置の構成を示すブロック図である。この図において、符号1はプログラム生成装置、91はプログラム生成装置1が出力する情報を利用者に対して表示する表示装置、92は利用者からプログラム生成装置1への入力を受け付ける入力装置である。表示装置91の具体例は、CRT(Cathode Ray Tube;陰極線管)や液晶やPDP(Plasma Display Panel;プラズマディスプレイパネル)などを利用したディスプレイ装置である。また、入力装置92の具体例は、マウスなどのポインティングデバイスやキーボード、あるいはそれらを組み合わせたものである。
【0015】
プログラム生成装置1の内部には、利用者から入力される情報などに応じてデータ構造を定義する処理を行うデータ構造定義部11と、データ構造定義部11によって定義されたデータ構造定義情報を記憶するデータ構造定義情報記憶部21と、同じく利用者から入力される情報などに応じて処理フローを定義する処理を行う処理フロー定義部12と、処理フロー定義部12によって定義された処理フロー定義情報を記憶する処理フロー定義情報記憶部22とが存在している。プログラム生成装置1において、プログラム生成部10は、データ構造定義情報記憶部21と処理フロー定義情報記憶部22とから読み出した情報に基づいて、業務処理を実現するためのプログラムを生成し、このプログラムをプログラム記憶部31に書き込む。プログラム記憶部31は、プログラム生成装置1の内部に設けられていても良いし、外部のコンピュータ等に設けられていても良い。
なお、プログラム記憶部31に書き込まれたプログラムは、実行環境において実行可能な形式に変換し、実行することができる。本例では、プログラム生成部は、利用者定義処理プログラムとディスパッチングプログラムとを生成する。詳細については後述するが、利用者定義プログラムは、分割されたデータに関して利用者が定義した処理をコンピュータに実行させるプログラムである。また、ディスパッチングプログラムは、データを分割するとともに、分割されたデータ毎に利用者定義処理プログラムによる処理をディスパッチするプログラムである。なお、プログラム記憶部31には、ディスパッチング制御ルーチンがプログラム部品として記憶されている。前記のディスパッチングプログラムは、内部において、このディスパッチング制御ルーチンを呼び出すようになっている。
つまり、ディスパチング制御ルーチンは、プログラム部品として予め用意されており、処理フロー定義情報からは独立な処理として、実行環境情報記憶部から読み出した実行環境情報(後述)に基づいて、利用者定義処理プログラムをディスパッチする処理を行う。
プログラム生成部10が生成したディスパッチングプログラムと、部品としてのディスパッチング制御ルーチンとは、実行時までに静的にリンクされるか、実行時に動的にリンクされるかのいずれかの方法により連係をとる。
【0016】
次に、業務処理において処理の対象となるデータの例について説明する。
図2は、処理対象となる入力データの一例を示す概略図である。この図に示すデータはXMLで記述されたテキスト形式の注文情報データの例である。このデータに含まれる各種のタグが、このデータの構造を規定している。例えば、「<RECORD>」というタグは1件の注文情報データの始まりを表し、「</RECORD> 」というタグは1件の注文情報データの終わりを表している。つまり、図示するデータの1行目から17行目までが1件目のレコードであり、同じく18行目から34行目までが2件目のレコードである。本例では入力データ内に2件のレコードが含まれているが、実際には任意の件数のレコードを入力データ内に含むようにすることができる。
【0017】
また、各レコード内において、「<ORDER_NO>」および「</ORDER_NO>」のタグによって囲まれる部分はは注文番号を表す。同様に、「<CUST_ID>」および「</CUST_ID>」のタグによって囲まれる部分は顧客識別情報を表す。また、「<DATE>」および「</DATE> 」のタグによって囲まれる部分は注文日付を表す。
また、「<ITEM>」および「</ITEM> 」のタグによって囲まれる部分は、当該注文に含まれる注文品の情報を表し、この注文品の情報において、「<NO>」および「</NO>」のタグによって囲まれる部分は当該注文内における注文品の番号(注文枝番)を表し、「<HINMEI>」および「</HINMEI> 」のタグによって囲まれる部分は品名を表し、「<TANKA> 」および「</TANKA>」のタグによって囲まれる部分は単価を表し、「<SUURYOU> 」および「</SUURYOU>」のタグによって囲まれる部分は注文品の数量を表す。
【0018】
次に、プログラムを生成する元となる各情報について説明する。
図3は、データ構造定義情報記憶部21に記憶されるデータ構造定義情報の例を示す概略図である。図3の(a)〜(d)に示すデータは本装置独自の形式で記述されたテキスト形式のデータであり、それぞれ、入力データを基に1件毎のトランザクションデータを取り出すために必要となる定義情報を表すデータである。
図3(a)に示すデータは、トランザクションデータが「<RECORD>」タグで始まり「</RECORD> 」タグで終わることを表している。図2に例示した入力データは、この図3(a)のデータ構造定義情報に対応している。
図3(b)に示すデータは、入力データに含まれる各トランザクションデータが改行(Carriage Return )文字(「¥n」と表記している)によって区切られることを表している。
図3(c)に示すデータは、入力データに含まれる各トランザクションデータが固定長で区切られるレコードに対応していることを表している。
図3(d)に示すデータは、入力データに含まれる各トランザクションデータが可変長のレコードに対応しているものであり、そのレコード長を表すフィールドが各レコードの先頭0バイト目から4バイト分であることを表している。
【0019】
次に、処理フロー定義情報について説明する。ここでは、処理フロー定義情報は、業務処理の流れを表すフローチャート情報と、より詳細な処理の内容を表す処理詳細情報とからなる。
図4は、処理フロー定義情報記憶部22に記憶される処理フロー定義情報の一部であるフローチャート情報の例を示す概略図である。図示するように、本例では、まずXMLオーダー情報(XMLで記述された注文情報データ)が入力される。次に、入力されたXMLオーダー情報に基づいて、XMLオーダー情報構文解析処理が行われる。この構文解析処理が成功した場合はオーダー情報(注文情報データ)がメモリに展開され、エラーの場合にはエラーログにエラー情報が書き込まれる。なお、エラーログは、磁気ディスクや磁気テープなどといった記録媒体に記録される。そして、構文解析処理によってメモリ展開されたオーダー情報に基づいて、次に、オーダー書き込み処理が行われる。このオーダー書き込み処理が成功した場合には結果としてオーダーデータベースにオーダー情報が書き込まれ、エラーの場合にはエラーログにエラー情報が書き込まれる。なお、オーダーデータベースは、磁気ディスクなどといった媒体にその情報を保持する。
【0020】
図5は、図4に含まれるXMLオーダー情報構文解析処理に対応する詳細処理情報を示す概略図である。図示するように、詳細処理情報は、入力データ(Input )の定義と、処理内容そのものの定義と、出力データ(Output)の定義とから成る。図5の例では、入力データは、前述したXMLオーダー情報(注文情報データ)である。また、出力データは、メモリ展開されたオーダー情報とエラーログである。
【0021】
そして、処理内容としては、入力されたXMLオーダー情報を基にXML構文解析処理を行う(「XML構文解析」という関数の引数が「XMLオーダー情報」)。
この構文解析処理においてエラーが無かった場合には「1.1エラーなし」の部分に定義された処理を行う。即ち、入力データ中の「ORDER_NO」のデータをメモリ展開されたオブジェクトの「oreder_no」に格納する。入力データ中の「CUST_ID 」のデータをメモリ展開されたオブジェクトの「cust_id 」に格納する。また、入力データ中の「ITEM[*].NO」、「ITEM[*].HINMEI」、「ITEM[*].TANKA 」、「ITEM[*].SUURYOU 」をそれぞれメモリ展開されたオブジェクトの「item[*].no」、「item[*].hinmei」、「item[*].tanka 」、「item[*].suuryou 」に格納する。なお、「item」は、構造体の配列であり、「item[*] 」はこの配列のすべての要素を表す。つまり、この「*」は、配列の添え字のすべてを表す。また、例えば、「item[*].no」は、構造体のメンバー「no」を表す。このようにして、構文解析処理においてエラーが無い場合には入力データがメモリ展開されるという処理が定義されている。
また、構文解析処理においてエラーがあった場合には、「1.2エラーあり」の部分に定義された処理を行う。即ち、システムで管理している時刻(実行時の時刻)をエラーログの「time」に格納し、システムエラーコードを同じく「err_code」に格納し、システムエラーメッセージを「err_msg 」に格納し、処理を終了する。
【0022】
図6は、図4に含まれるオーダー書き込み処理に対応する詳細処理情報を示す概略図である。図示するように、オーダー書き込み処理の入力データは、上述したXMLオーダー情報構文解析処理においてメモリ展開されたオーダー情報である。また、出力データは、オーダーデータベース内の伝票テーブルおよび明細テーブルと、エラーログとである。オーダーデータベースにおいて、伝票テーブルの主キーは注文番号を表す「ORDER_NO」であり、伝票テーブルのその他の属性項目としては顧客識別情報を表す「CUST_ID 」がある。また、明細テーブルの主キーは上記の「ORDER_NO」と注文枝番に相当する「NO」との複合キーであり、明細テーブルのその他の属性項目としては「HINMEI」と「TANKA 」と「SUURYOU 」とがある。なお、伝票テーブルと明細テーブルとは、項目「ORDER_NO」によって結合される。
【0023】
そして、処理内容は次の通りである。即ち、「1.オーダーデータベース書き込み」において、メモリ展開されているオーダー情報の「order_no」と「cust_id 」を、それぞれ、伝票テーブルの「ORDER_NO」と「CUST_ID 」の各項目に格納するようなレコードのデータを作成する。また、メモリ展開されているオーダー情報の配列「item[]」の各要素について、その要素の「no」と「hinmei」と「tanka 」と「suuryou 」を、それぞれ、明細テーブルの「NO」と「HINMEI」と「TANKA 」と「SUURYOU 」の各項目に格納するようなレコードのデータを作成する。また、明細テーブルの「ORDER_NO」には上記の「order_no」が格納される。そして、これらの各レコードが、それぞれ、オーダーデータベースの伝票テーブルおよび明細テーブルに挿入(insert)される。
上記のデータの挿入においてエラーがなかった場合には、「1.1.エラーなし」の処理が行われ、つまり、そのまま処理を終了する。
また、上記のデータの挿入においてエラーがあった場合には、「1.2.エラーあり」の処理が行われ、システム時刻とシステムエラーコードとシステムエラーメッセージとをエラーログに書き出して処理を終了する。
【0024】
次に、実行環境情報記憶部が記憶する実行環境情報について、説明する。実行環境情報は、実行時に参照される情報であり、上で定義された業務処理を実行するコンピュータの構成に関する情報である。特にこの実行環境情報が意味を持つのは、業務処理を複数台のコンピュータで分散処理する場合である。1つの業務処理を複数台のコンピュータで分散処理する場合、それら複数台のコンピュータはクラスタリンググループを形成する。そして、実行環境情報は、最低限このクラスタリンググループに属するコンピュータを識別する為の、各コンピュータのアドレス情報(ホスト名あるいはIPアドレスなど)を含んでいる。
なお、業務処理を複数台のコンピュータで分散処理させずに単一のコンピュータで処理する場合には、実行環境情報にそのような単一のコンピュータによる構成であることを表わす情報を含むようにしても良いし、実行環境情報記憶部そのものを持たないようにしても良い。後者の場合には、実行環境情報記憶部が無いときには、実行時に、実行環境は単一のコンピュータによる構成であると解釈することが出来る。
【0025】
プログラム生成部(図1の符号10)は、以上説明したデータ構造定義情報と処理フロー定義情報とを各記憶部から読み出し、これらの情報に基づいてプログラムを生成する。ここで説明している例の場合、プログラム生成部は、XMLオーダー情報構文解析処理プログラムと、オーダー書き込み処理プログラムと、ディスパッチングプログラムの3つのプログラムを生成する。
これら3つのプログラムのうち、XMLオーダー情報構文解析処理プログラムと、オーダー書き込み処理プログラムとは、利用者によって定義された処理フロー情報に従って、1件分の処理データを処理する利用者定義処理プログラムである。なお、1件分のデータとは、前述のデータ構造定義情報の定義によって取り出される単位であり、具体的には、例えば、図2に示したデータの「<RECORD>」タグで始まって「</RECORD> 」タグで終了するレコードである。
また、ディスパッチングプログラムは、入力データから1件分ずつデータを取り出し、これをトランザクションデータとして、トランザクションをディスパッチし、実行環境に応じて複数のトランザクションを並列的に実行させるような制御を行うプログラムである。なお、ここで、トランザクションとは、XMLオーダー情報構文解析処理プログラムとオーダー書き込み処理プログラムとによって1件分のデータを処理する処理単位である。
【0026】
図7は、プログラム生成部が生成するディスパッチングプログラムの処理手順を示すフローチャートである。以下、このフローチャートに沿って説明する。
まず、ステップS51において、変数「parallel」を0に初期化する。この変数「parallel」はトランザクション実行の並列度を表すものである。
次に、ステップS52において、変数「parallel」が定数「MAX」以上かどうかを判断する。この定数「MAX」は、実行環境情報等に基づいて定められ、トランザクション実行時の最大並列度を表すものである。判断結果が「YES」ならばステップS57へ飛び、「NO」ならば次のステップS53へ進む。
次に、ステップS53において、入力データが既に終了しているかどうかを判断する。この判断は、例えば、入力データを読み込むための命令を実行して、その結果として「EOF(end of file) 」コードが返されるかどうかにより行う。判断結果が「YES」ならばステップS57へ飛び、「NO」ならば次のステップS54へ進む。
【0027】
次に、ステップS54において、入力データから1トランザクション分のデータを取り出し、割り当てられたメモリにこのデータを展開する。なお、1トランザクション分のデータを取り出す方法は、前述のデータ構造定義情報記憶部に記憶されている情報によって決まる。例えば、図3(a)に示したデータ構造定義情報を用いてデータを取り出す場合には、入力データを字句解析することにより、「<RECORD>」で始まり「</RECORD> 」で終わる部分のデータを1トランザクション分のデータとする。
次に、ステップS55において、変数「parallel」に1を加算する。これは、下でディスパッチするトランザクションにより、並列度が1だけ増加することを表す。
そして、ステップS56において、ディスパッチ先を選択し、上で取り出したデータによるトランザクションをディスパッチする。なお、このステップにおけるディスパッチ先の選択のしかたは、実行環境情報記憶部に記憶された情報に基づいて決まる。ディスパッチ先は、ディスパッチングプログラムと同じコンピュータである場合もあるし、他のコンピュータあるいは他のCPUである場合もある。
【0028】
次に、ステップS57では、トランザクションの終了を待つ。既にディスパッチしたトランザクションのいずれかが終了すると、その結果を受けてこの待ちを抜け出し、次のステップへ進む。
次に、ステップS58では、終了したトランザクション結果の後処理を行う。次に、ステップS59では、変数「parallel」から1を減算する。これは、上でトランザクションが終了したため、並列度が1だけ減少することを表す。
そして、ステップS60では、終了条件の判定を行う。すなわち、入力データがすべて終了しており、かつ、変数「parallel」が0(実行中のトランザクションが無いことを表す)であれば、処理を終了する。そうでなければ、ステップS52に戻って処理を続ける。
なお、ディスパッチングプログラムの処理機能のうち、ディスパッチングの制御に関する部分だけを共通のディスパッチング制御ルーチンとして切り出す場合には、例えば、図7の処理におけるステップS52、S55、S56、S57の機能をディスパッチング制御ルーチンに持たせるようにする。そして、このディスパッチング制御ルーチンは、個々の具体的な業務処理からは独立なプログラム部品として用意する。但し、上記のような機能の切り出し方は単なる一例であり、他の方法でプログラム部品の機能分割を行っても良い。
【0029】
最後に、生成されるプログラムの実行環境等について説明する。
実行環境情報記憶部に記憶されている情報に基づいてトランザクションのディスパッチ先が決定されることは既に述べた通りであるが、この実行環境情報にクラスタリンググループが定義されている場合、ディスパッチングプログラムは、まず同じクラスタリンググループに所属するホストのアドレス情報(ホスト名又はIPアドレス等)を取得し、クラスタリンググループに所属する他のマシン上で利用者定義処理プログラムを実行する。このとき、データベースなどの入出力対象資源は、同じクラスタリンググループに所属するマシン間で共有されているものとする。
前述のように、ディスパッチングプログラムは、同じクラスタリンググループに属する他のマシンに利用者定義処理プログラムの実行を依頼するが、このとき、負荷の高いマシンに処理を依頼するより、負荷の低いマシンに処理を依頼するほうが全体の処理効率が良いので、負荷の低いマシンを選んで処理を依頼するようにする。そして、他のマシンが全て自分自身より処理負荷が高い場合には、自分自身に処理を依頼するようにする。
【0030】
クラスタリング処理を行う場合、処理に関わるマシンの数が増えるので、その中のいずれかのマシンが障害となる確率も高くなる。従って、障害に備えたフェイルセーフ機能を組み込んでおく。ディスパッチングプログラムは、処理を依頼した先のマシンが処理を完了したかどうかを監視し、依頼先のマシンのシステムダウン等の障害を検知した場合には、そのトランザクションを他のマシンに引き継がせるようにすることで、耐障害性を向上させる。
また、同様に、ディスパッチングプログラムが稼動しているマシンがダウンすることも考えられる。ディスパッチングプログラムからトランザクション処理を依頼された先のマシンは、常にディスパッチ元のマシンを監視し、ディスパッチングプログラムが稼動するマシンがダウンした場合には、ディスパッチングの処理を途中から引き継ぐようにする。処理の引き継ぎのために、ディスパッチングプログラムは、常に、処理が完了したデータを記録することによってどこまでの処理が完了したかを管理する。ディスパッチングプログラムの処理を引き継ぐマシンは、処理再開時に、処理済のデータを読み飛ばし、処理が済んでないデータのみについて処理を行うようにする。
【0031】
図8は、クラスタリングを実施しない場合の実行環境における動きを示す概略図である。この図において、ディスパッチングプログラムおよび利用者定義処理プログラムは、それぞれプログラム記憶部(図示せず)から読み出されて、業務処理プログラム実行コンピュータにローディングされる。この図の例では、ディスパッチングプログラムの一部の処理であるディスパッチング制御ルーチンが、サブルーチンとして呼び出される。そして、利用者定義処理プログラムは、ディスパッチングプログラムが実行される業務処理プログラム実行コンピュータと同一のコンピュータ上で実行される。なお、業務処理プログラム実行コンピュータとプログラム生成装置とは同一のコンピュータであっても良いし、異なるコンピュータであっても良い。
なお、図8に示す例では、ディスパッチングプログラム内のディスパッチング制御ルーチンが実行環境情報記憶部から実行環境情報を読み出すようになっているが、前述の通り、クラスタリングを実施しない場合には、実行環境情報記憶部を持たないようにしても良い。
【0032】
図9は、クラスタリングを行う場合の実行環境における動きを示す概略図である。図9が図8と異なる点は、ディスパッチングプログラムが実行されるコンピュータと利用者定義処理プログラムが実行されるコンピュータとが異なっており、また利用者定義処理プログラムが複数の異なるコンピュータ上で実行されることである。ディスパッチングプログラムは、実行環境情報記憶部からクラスタリンググループに関する情報を得て、クラスタリングクループを形成する各メンバー(業務処理プログラム実行コンピュータ)に業務処理プログラムの実行を依頼する。
【0033】
上述したプログラム生成装置はコンピュータシステムを用いて実現している。そして、プログラム生成装置におけるデータ構造定義部と処理フロー定義部とプログラム生成部における各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【0034】
なお、ディスパッチング制御ルーチンをプログラム部品として切り出すことにより、次のようなことも可能である。
本実施形態によるプログラム生成装置の機能をコンピュータに実行させるプログラムをライセンス販売の形態で販売する場合には、例えば、実行環境においてクラスタリングを行う場合と行わない場合とで、プログラム生成プログラムのライセンス価格に変化を持たせたい場合がある。つまり、その場合には価格の異なる2種類のライセンスを用意して、価格が安い方のライセンスでは業務処理のクラスタリングを行わないようにして、価格が高いほうのライセンスのみにおいて業務処理のクラスタリングを行えるようにする。そして、このライセンスの種類に応じて、プログラム部品として提供されるディスパッチング制御ルーチンも2種類用意し、この2種類のディスパッチング制御ルーチンのうちの一方がクラスタリング環境での利用者定義処理のディスパッチングを行い、他方では単一コンピュータ上での利用者定義処理のディスパッチングのみを行うようにする。
【0035】
これにより、ディスパッチング制御ルーチンを入れ替えるだけで、2種類のライセンスを適切に販売することができる。
また、ある利用者が、価格の安い方のライセンスから価格の高い方のライセンスにアップグレードする際にも、利用者定義処理プログラムを書き換えたり再コンパイルしたりすることなく、ディスパッチング制御ルーチンを入れ替えるだけで、システムの移行をスムースに行え、ソフトウェアの販売者にとっても利用者にとっても手間がかからないというメリットが得られる。
【0036】
以上、図面を参照してこの発明の実施形態を詳述してきたが、具体的な構成はこれらの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0037】
【発明の効果】
以上説明したように、この発明によれば、データ構造定義情報記憶部がデータの構造を定義したデータ構造定義情報を記憶し、処理フロー定義情報記憶部が前記データを用いた処理フローを定義した処理フロー定義情報を記憶する。そして、プログラム生成部は、データ構造定義情報記憶部から読み出したデータ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に処理フロー定義情報記憶部から読み取った処理フロー定義情報に基づく処理をコンピュータに実行させるための業務処理プログラムを生成する。これにより、利用者が定義した処理フローに基づいて、自動的に並列化処理を行うプログラムを生成できる。従って、利用者が処理を定義する際にその並列性を意識する必要が無く、かつデータの処理時間を短縮することができる。これにより、熟練プログラマが、効率の良い並列処理プログラムをわざわざ作成する必要が無い。
【0038】
また、本発明によれば、プログラム生成部が生成する業務処理プログラムは、業務処理コンピュータプログラムを実行する環境に関する実行環境情報を実行環境情報記憶部から読み出し該実行環境情報に基づいて処理フロー定義情報に基づく処理をコンピュータに並列的に実行させる。これにより、生成されたプログラムを実行環境情報に応じて最適な状況で並列的に実行させることが可能となる。例えば、クラスタリング構成を有する実行環境などにおいて、処理の並列化を実現できるため、業務処理にスケーラビリティを持たせることが可能となる。
【0039】
また、本発明によれば、ディスパッチングプログラムは、当該ディスパッチングプログラムに入力さえるデータを並列処理可能な単位に分割する過程と、プログラム部品として予め用意されており処理フロー定義情報からは独立な処理として利用者定義処理プログラムをディスパッチする処理を行うディスパッチング制御ルーチンを呼び出す過程とをコンピュータに実行させる。即ち、ディスパッチング制御ルーチンを利用者定義処理からは独立な共通プログラムとして切り出している。これにより、例えば、ディスパッチング制御ルーチンとして、クラスタ環境対応用のものと非対応用のものとの2種類を用意し、これを使い分けることにより、プログラム生成装置あるいはプログラム生成プログラムの機能を変えることができる。また、利用者がこれら異なる機能間で移行を行う際にも、ディスパッチング制御ルーチンを入れ替えるだけで利用者定義処理プログラムを再作成あるいは再コンパイル等することなく、簡単な移行が行えるようになる。
【図面の簡単な説明】
【図1】この発明の一実施形態によるプログラム生成装置の構成を示すブロック図である。
【図2】同実施形態において、処理対象となる入力データの一例を示す概略図である。
【図3】同実施形態において、データ構造定義情報記憶部に記憶されるデータ構造定義情報の例を示す概略図である。
【図4】同実施形態において、処理フロー定義情報記憶部に記憶される処理フロー定義情報の一部であるフローチャート情報の例を示す概略図である。
【図5】図4に含まれるXMLオーダー情報構文解析処理に対応する詳細処理情報を示す概略図である。
【図6】図4に含まれるオーダー書き込み処理に対応する詳細処理情報を示す概略図である。
【図7】プログラム生成部が生成するディスパッチングプログラムの処理手順を示すフローチャートである。
【図8】クラスタリングを実施しない場合の実行環境における動きを示す概略図である。
【図9】クラスタリングを実施する場合の実行環境における動きを示す概略図である。
【符号の説明】
1 プログラム生成装置
10 プログラム生成部
11 データ構造定義部
12 処理フロー定義部
21 データ構造定義情報記憶部
22 処理フロー定義情報記憶部
31 プログラム記憶部
91 表示装置
92 入力装置
Claims (7)
- データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、
前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、
前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成するプログラム生成部と
を具備することを特徴とするプログラム生成装置。 - 請求項1に記載のプログラム生成装置であって、
前記プログラム生成部は、前記処理フロー定義情報に基づく処理をコンピュータに並列的に実行させる業務処理プログラムを生成することを特徴とするプログラム生成装置。 - 請求項1又は請求項2に記載のプログラム生成装置であって、
前記プログラム生成部が生成する業務処理プログラムは、前記処理フロー定義情報によって定義された処理を前記並列処理可能な単位のデータ毎に実行する利用者定義処理プログラムと、該利用者定義処理プログラムによる処理を並列的に実行する制御を行うディスパッチングプログラムとを含むことを特徴とするプログラム生成装置。 - 請求項3に記載のプログラム生成装置であって、
前記プログラム生成部が生成する前記ディスパッチングプログラムは、前記業務処理コンピュータプログラムを実行する環境に関する実行環境情報を実行環境情報記憶部から読み出し該実行環境情報に基づいて、前記利用者定義処理プログラムによる処理を並列的に実行する制御を行うものであることを特徴とするプログラム生成装置。 - 請求項4に記載のプログラム生成装置であって、
前記プログラム生成部が生成する前記ディスパッチングプログラムは、
当該ディスパッチングプログラムに入力されるデータを前記並列処理可能な単位に分割する過程と、
プログラム部品として予め用意されており前記処理フロー定義情報からは独立な処理として前記利用者定義処理プログラムをディスパッチする処理を行うディスパッチング制御ルーチンを呼び出す過程と、
の処理をコンピュータに実行させるものであることを特徴とするプログラム生成装置。 - データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、
前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、
を具備するプログラム生成装置において業務処理プログラムを生成するプログラム生成方法であって、
前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程を有することを特徴とするプログラム生成方法。 - データの構造を定義したデータ構造定義情報を記憶するデータ構造定義情報記憶部と、
前記データを用いた処理フローを定義した処理フロー定義情報を記憶する処理フロー定義情報記憶部と、
を具備するプログラム生成装置において業務処理プログラムを生成する処理をコンピュータに実行させるプログラム生成プログラムであって、
前記データ構造定義情報記憶部から読み出した前記データ構造定義情報に基づいて前記データのうちの並列処理可能な単位を把握することによって、前記データを該並列処理可能な単位に分けられたデータ毎に前記処理フロー定義情報記憶部から読み出した前記処理フロー定義情報に基づく処理をコンピュータに実行させる業務処理プログラムを生成する生成過程をコンピュータに実行させるプログラム生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002344484A JP2004178316A (ja) | 2002-11-27 | 2002-11-27 | プログラム生成装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002344484A JP2004178316A (ja) | 2002-11-27 | 2002-11-27 | プログラム生成装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004178316A true JP2004178316A (ja) | 2004-06-24 |
Family
ID=32705956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002344484A Withdrawn JP2004178316A (ja) | 2002-11-27 | 2002-11-27 | プログラム生成装置および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004178316A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016129056A (ja) * | 2009-07-14 | 2016-07-14 | アビニシオ テクノロジー エルエルシー | フォールトトレラントバッチ処理 |
JP2018067218A (ja) * | 2016-10-21 | 2018-04-26 | 株式会社日立製作所 | アプリケーション開発支援装置およびアプリケーション開発支援方法 |
-
2002
- 2002-11-27 JP JP2002344484A patent/JP2004178316A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016129056A (ja) * | 2009-07-14 | 2016-07-14 | アビニシオ テクノロジー エルエルシー | フォールトトレラントバッチ処理 |
JP2018067218A (ja) * | 2016-10-21 | 2018-04-26 | 株式会社日立製作所 | アプリケーション開発支援装置およびアプリケーション開発支援方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001521B2 (en) | Meta-date driven implementation of business objects and their transactional behavior | |
JP5710852B2 (ja) | 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク | |
US7694272B2 (en) | Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language | |
US8799857B2 (en) | XML application framework | |
US8793649B2 (en) | XML application framework | |
JP5173128B2 (ja) | フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル | |
US6003095A (en) | Apparatus and method for demand loading a dynamic link library | |
US8037471B2 (en) | Systems and methods for constructing relationship specifications from component interactions | |
US8229778B2 (en) | Constructing change plans from component interactions | |
US7472379B2 (en) | Flexible navigation of a workflow graph | |
US8074228B2 (en) | Systems and methods for providing mockup business objects | |
US20090313606A1 (en) | System and Method for Testing a Software Product | |
US20060074734A1 (en) | Declarative representation for an extensible workflow model | |
US20090254881A1 (en) | Code generation techniques for administrative tasks | |
US7752599B2 (en) | Systems and methods extending an existing programming language with constructs | |
JP2007519104A (ja) | 抽象テストケース表現からの自動テストスクリプトのルールベース生成のための方法及びシステム | |
KR20010040348A (ko) | 확장가능한 분산된 기업용 애플리케이션 통합 시스템 | |
JP2007519105A (ja) | 自動テストスクリプトの永続性を持つ抽象テストケース表現への変換のための方法、及びシステム | |
US20050022164A1 (en) | Systems and methods utilizing a workflow definition language | |
US8060885B2 (en) | Creating task queries for concrete resources using alias selection fields specifying formal resources and formal relationships | |
US20060048140A1 (en) | Method, system and article for generating installation merge packages | |
US20110296373A1 (en) | Command line shell command generation based on schema | |
US20090254896A1 (en) | Simplifying Bundling Of Fixes Used To Resolve Errors In Pre-Installed Software | |
JP2004178316A (ja) | プログラム生成装置および方法 | |
US7827567B2 (en) | System and method for defining and dynamically invoking polymorphic call flows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040813 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040813 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |