JP2016009423A - 情報処理装置、情報処理装置の制御方法、およびプログラム - Google Patents

情報処理装置、情報処理装置の制御方法、およびプログラム Download PDF

Info

Publication number
JP2016009423A
JP2016009423A JP2014131025A JP2014131025A JP2016009423A JP 2016009423 A JP2016009423 A JP 2016009423A JP 2014131025 A JP2014131025 A JP 2014131025A JP 2014131025 A JP2014131025 A JP 2014131025A JP 2016009423 A JP2016009423 A JP 2016009423A
Authority
JP
Japan
Prior art keywords
unit
data
error
update
units
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.)
Pending
Application number
JP2014131025A
Other languages
English (en)
Inventor
文洋 柴本
Fumihiro Shibamoto
文洋 柴本
ゆみ 石塚
Yumi Ishizuka
ゆみ 石塚
勲 上田
Isao Ueda
勲 上田
鈴木 智子
Tomoko Suzuki
智子 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Marketing Japan Inc
Canon IT Solutions Inc
Original Assignee
Canon Marketing Japan Inc
Canon IT Solutions Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Marketing Japan Inc, Canon IT Solutions Inc filed Critical Canon Marketing Japan Inc
Priority to JP2014131025A priority Critical patent/JP2016009423A/ja
Publication of JP2016009423A publication Critical patent/JP2016009423A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Retry When Errors Occur (AREA)

Abstract

【課題】バッチ処理の際に、リトライしたとしても解消することのないエラーの場合に、エラー原因となったデータを容易に特定する情報処理装置、情報処理装置の制御方法、およびプログラムを提供する。
【解決手段】ユニット単位を1つのトランザクション1601として、データの更新処理を行った後、エラーとなったユニット1602が存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度ユニット分けし、更新処理を再度行う。これにより、エラーとなったユニットに含まれるデータ数を少なくすることができるため、どのデータに不具合があるのか特定することが容易になる。
【選択図】図16

Description

本発明は、バッチ処理を行う情報処理装置、情報処理装置の制御方法、およびプログラムに関する。
近年、企業内では、クライアント端末に特別なアプリケーションをインストールすることなく業務が行えるように、業務用アプリケーションのWeb化が急速に進んでいる。そしてこのような業務アプリケーションの開発現場においては、開発スキル不足や要員不足を解決するために、Webアプリケーションをプログラミングレスで容易に作成できる開発ツールが用いられている。このような開発ツールを用いると、プログラミングう言語の知識を有していなくても、業務・設計ノウハウを活用して基本設計情報を定義するだけで、Webアプリケーションを自動生成することができる。
ところで、このようなWebアプリケーションを用いて入力されるデータベースでは、例えば、大量に発生するデータの更新や不要データの削除など、定期的なメンテナンスが必要となる場合がある。このような大量のデータメンテナンスを、1件ごとに行うことは困難であるため、バッチプログラムを開発してトランザクション単位で処理されることが一般的である。
Webアプリケーションの管理者は、このようなバッチプログラムも用いることで、定期的にデータのメンテナンスを行うことになるが、このようなバッチ処理は毎回処理が成功するとは限らず、処理中にエラーが発生して処理が中断してしまうことがある。このようなエラーの原因としては、ネットワークやメモリ等の利用環境に不具合がある場合や、トランザクション内のデータに不整合がある場合や、バッチプログラムの不具合がある場合など、複数の理由が考えられる。
このような不具合の種類によっては何回かバッチプログラムを実行すると処理が行えることもあるため、エラーが発生した場合にはバッチプログラムを再度実行(リトライ)することが通常である。しかしながらエラーの種類によってはバッチプログラムを再度実行してもエラーが解消しないこともあるため、リトライを際限なく繰り返さないようにする仕組みが必要となる。このような仕組みとして特許文献1には、リトライ回数が規定の回数より少ない場合のみリトライし、規定回数以上となった場合にはリカバリ処理を行わないようにすることが開示されている。さらに特許文献1では、エラーの種類ごとにリトライ回数を定めておくことにより、エラー種別に応じて適切な数だけリカバリ処理が行えることが開示されている。
特開2010−176303号公報
しかしながら、特許文献1の方法を用いたとしても、リトライ回数を超えて異常終了となった場合、管理者はトランザクション内のエラー原因となっているデータを特定し、適宜修正を行う必要であった。そして、1トランザクション内には複数のデータが含まれており、不整合のデータの特定作業はかなり煩雑であることから、エラーの原因となっているデータを容易に特定できる仕組みが求められている。
本実施形態は、上記課題を鑑みてなされたものであり、バッチ処理においてエラーが発生したとしても、当該エラーの原因となったデータを容易に特定することができる仕組みを提供することを目的としている。
複数のデータを記憶する記憶手段を備えたサーバ装置と通信可能に設けられた情報処理装置であって、前記複数のデータを複数のユニットに区分けする第1の区分手段と、前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新手段と、前記更新処理でエラーとなったユニットが存在するか否かを特定する特定手段と、前記特定手段でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分手段と、前記特定手段でエラーとなったユニットが存在すると特定された場合には、前記第2の区分手段で再度区分けされたユニット単位で、前記更新手段に前記更新処理を再度行わせるリトライ手段と、を有することを特徴とする情報処理装置。
このように、1つのトランザクションで処理されるデータの数が減るようにリトライ処理を行うことで、エラーとなったユニットに含まれるデータ数を少なくすることができる。これにより、バッチ処理においてエラーが発生したとしてもエラーの原因となるデータを容易に特定することができる。
Webアプリケーション自動生成システム(情報処理システム)のシステム構成の一例を示す図である。 開発用端末101、サーバ102、利用者用端末103、バッチ処理端末104のハードウェア構成を示す図である。 Webアプリケーション自動生成システムの機能構成を説明するための図である。 データベース定義111の一例を説明するための図である。 データモデル定義112の一例を説明するための図である。 ビジネスプロセス定義113の一例を説明するための図である。 入出力定義114の一例を説明するための図である。 Webアプリケーションを自動生成する際の流れを説明するためのフローチャートである。 ユーザ登録画面901の一例を示す図である。 ユーザ一覧画面1001の一例を示す図である。 バッチ入出力定義151の一例を説明するための図である。 バッチアプリケーションを自動生成する際の流れを説明するためのフローチャートである。 バッチ処理時の流れを説明するためのフローチャートである。 バッチ処理時の流れを説明するためのフローチャートである。 エラー処理時の流れを説明するためのフローチャートである。 トランザクションのエラーリトライ処理を説明するための概念図である。
以下、図面を参照して、本発明の実施形態を詳細に説明する。
図1は、本実施形態におけるWebアプリケーション自動生成システム(以下、情報処理システムとも称する)のシステム構成を示す図である。本発明のWebアプリケーション自動生成システムは、開発用端末101、サーバ102(サーバ装置)、利用者用端末103、バッチ処理用端末104が、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワーク105を介して相互にデータ通信可能に接続されている。
Webアプリケーションとは、企業内で用いられる業務用アプリケーションをWeb上で実施することができるアプリケーションのことであり、クライアント端末上に特別なアプリケーションをインストールすることなく業務を行うことができるため、近年広く用いられている。本発明のWebアプリケーションシステムは、このようなWebアプリケーションを指定した要件定義情報からプログラミングレスで自動生成することができるシステムである。このようなシステムを用いることにより、開発スキルが不足していたしても各企業内で容易にWeb上の業務アプリケーションを開発することができる。
図1に示す開発用端末101には、Webアプリケーション(プログラム)を自動生成する際に開発者が使用する端末でありプログラムを自動生成する開発ツールがインストールされている。この端末で予め要件定義を行い、開発ツールに読み込ませて自動生成処理を行うことでWebアプリケーション130(プログラム)が生成される。また、Webアプリケーションで生成されたデータの更新作業をバッチ処理として行う際に用いる要件定義行っておき、同様にこれを開発ツールに読み込ませて自動生成処理を行うことで、バッチアプリケーション170(プログラム)が生成される。
サーバ102は、開発用端末101で生成されたWebアプリケーション(プログラム)を保持運用し、業務アプリケーションを本番環境として提供するために用いられる。そして、利用者用端末103を介してWebアプリケーション130(プログラム)へのアクセスを受け付ける。そして、Webアプリケーションを用いて生成されたデータをデータベース140内に記憶している。
利用者用端末103は、一般に本番環境において業務アプリケーションを利用するユーザが利用する端末であり、本端末を用いてサーバ102に接続することで、Web化されたアプリケーションを利用することができる。
バッチ処理端末104は、Webアプリケーションを管理する管理者が使用する端末であり、バッチアプリケーション170を記憶しており、当該バッチアプリケーション170を用いてサーバ102に記憶されたデータの更新処理をバッチ処理として行う指示を出す際に用いられる。
図2は、開発用端末101、サーバ102、利用者用端末103、バッチ処理端末104のハードウェア構成を示す図である。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211(記憶手段)には、CPU201の制御プログラムであるBIOS(Basic Input/OutputSystem)やオペレーティングシステムプログラム(以下、OS)や、開発用端末101、サーバ102、利用者用端末103、バッチ処理端末104の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードや不図示のマウス等のポインティングデバイス等の入力デバイス209からの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器の種類はCRTや、液晶ディスプレイを想定するが、これに限らない。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明の開発用端末101、サーバ102、利用者用端末103、バッチ処理端末104が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行可能となるものである。
さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
図3は、Webアプリケーション自動生成システムの構成図および生成されたアプリケーション等の機能構成を説明するための図である。
開発用端末101は、Webアプリケーション定義部110とバッチアプリケーション定義部150とWebアプリケーション生成部120とソースコード保持部121とバッチアプリ生成部160を有している。
サーバ102は、開発用端末101のWebアプリ生成部120で生成されたWebアプリケーション130を保持し、利用者用端末103から入力データ等をデータベースに記憶している。
バッチ処理用端末104は、開発用端末101のバッチアプリ生成部160で生成されたバッチアプリケーション170と、バッチ処理のために用いるファイルの入力を受け付けるファイル入力部190と、バッチ処理でエラーとなったデータが出力されるエラー出力部180を有している。
(Webアプリケーションの自動生成処理)
次に、図3乃至図10を用いて、開発者がWebアプリケーションを開発用端末101で自動生成する際の流れを説明する。図4乃至7は、図3のWebアプリケーション定義部110に記憶されるデータベース定義111、データモデル定義112、ビジネスプロセス定義113、入出力定義114等の開発者によって予め設定した定義の一例を示したものである。
図4はWebアプリケーションがアクセスするサーバの設定を記憶したデータベース定義111である。図4に示すように、データベース定義には、サーバ102のコード401、サーバの名前402、接続URL情報403、サーバの種類404、データベース名405、アプリケーションがデータベースにアクセスする際に必要となるユーザ名406及びパスワード407が定義されている。
図5は、スキーマ情報として定義されるデータモデル定義112である。図5(a)に示すように、各データモデル定義は、コード501と名前502を付与して管理されており、詳細定義もそれぞれ定義されている。例えば図5(a)のコード『User』では、図5(b)に示す項目510と図5(c)に示す操作コード520が詳細定義されている。
図5(b)は、データベース上で受け付ける項目として、項目コード511、項目の名前512、NULLを許可するか否かを設定する項目513、桁数514、データタイプ515を定義している。この例では、データモデル「USERS」に対して、「ID」から「PHONE」までのデータモデル項目を定義している。ここで定義する各項目はWebアプリケーションが接続するデータベースのテーブルのカラム名と一致する。
図5(c)は、データモデルに対する操作をどのように受け付けるかを設定した操作コードであり、操作コード521、当該操作の名前522、操作タイプ523が定義されている。すなわち、データモデルが関連するテーブルに対して操作内容を定義するものである。ここでは、操作コード『REGIST』というコードを有するユーザ登録操作は、操作タイプ『INSERT』であると定義されており、つまりユーザ登録操作で入力されたデータがデータベースに挿入されるというように定義されている。
図6は、Webアプリケーションの業務フローを定義するためのビジネスプロセス定義113である。図6(a)に示すように、各ビジネスプロセス定義は、コード601と名前602を付与して管理されており、詳細なロジック定義もそれぞれ定義されている。なお、ビジネスプロセスのコード601は、後述する入出力定義からの呼び出し指定するコードとして用いられる。詳細なロジック定義としては、図6(b)に示すように、制御コード611、データモデルコード612、機能コード613、パラメータ614、作業コード615が設定されている。
例えば図6(a)のコード『USER_REGIST_BP』のビジネスプロセス定義では、制御コード611の設定順に以下のような処理が行われる。この例ではWeb画面の入力内容を制御コード「IN」で受け取り、受け取ったデータを作業コード「INPUT」として定義している。次に制御コード「CALL」でデータモデル「USER」に対する操作を定義している。つまり、まず(1)『IN』制御として、図5のUSER(ユーザマスタ)というデータモデルコード501から、入力データを取得する。その際に、当該作業コードに『INPUT』というコードを付与する。次に、(2)『CALL』制御として、図5(c)のデータモデル定義の操作コードとして設定されており『INSERT』処理を、『IN』制御で読み込んだ入力データ(作業コード『INPUT』)に対して行うビジネスロジックが定義している。
図7は、Web画面に配置する各表示項目の入出力定義114である。ここで設定されている項目が、利用者用端末103の表示画面に表示され、本番環境時にユーザが用いる画面として用いられる。図7(a)に示すように、各入出力定義は、コード701と名前702を付与して管理されており、詳細な項目定義もそれぞれされている。例えば図7(a)のコード『USER_REGIST』では、図7(b)に示す項目タイプ711、項目コード712、名前713、表示714、加工式715、次入出力716、データモデルコード717、データモデル項目コード718が定義されている。
この例では、項目タイプ「IO入出力」と定義されている項目は入出力項目(データを入力およびデータを表示する「フィールド」)である。項目タイプ「Aアクション」と定義されている項目はアクション項目(処理を呼び出し、画面を遷移する「ボタン」)である。この例における、項目コード「REGIST_BP」はアクション項目である。アクション項目「REGIST_BP」の加工式715には、「USER_REGIST_BP」が定義されている。「REGIST_BP」のアクションでは、ビジネスプロセス「USER_REGIST_BP」が呼び出されることを示す定義である。そして、次入出力先として、「USER_LIST」のコードが定義されている。すなわち、「登録」アクションが行われると、「USER_REGIST_BP」の加工式で定義されたアクションが実行された後、「USER_LIST」に画面遷移することが定義されている。
図9が、入出力定義114で定義された「USER_REGIST(ユーザ登録)」のWeb画面の一例である。この画面により利用者用端末103を介してユーザがユーザ登録処理を行うことができる。ユーザID902、ユーザ名903、ふりがな904、性別905、年齢906、誕生日907、電話番号908、登録ボタン909、戻るボタン910は、それぞれ図7(b)の項目名前713に設定された項目に対応している。
図10は、入出力定義114で定義された「USER_LIST(ユーザ一覧)」のWeb画面の一例である。つまりこの例では、図9の画面で各項目が入力され登録ボタン909が押下されると、「USER_REGIST_BP」の加工式で定義されたユーザ登録処理が行われ、その結果「USER_LIST」として表示されるように定義されている。
図8は、図4乃至7に示すようなWebアプリケーション定義部110に記憶されているデータベース定義111、データモデル定義112、ビジネスプロセス定義113、入出力定義114等の要件定義がされた後、Webアプリケーションを自動生成する際の流れを説明するためのフローチャートである。
このような処理は、開発用端末101のCPU201が記憶されている制御プログラムを読み出して実行することにより実現される。
まず、S801では、開発用端末101のCPU201が、データベース定義111をWebアプリケーション定義部110から読み込む。S802では、データモデル定義112をWebアプリケーション定義部110から読み込む。S803では、ビジネスプロセス定義113をWebアプリケーション定義部110から読み込む。S804では、入出力定義114をWebアプリケーション定義部110から読み込む。
このような定義はXML形式で記述されているため、S805では、開発用端末101のCPU201が、XMLファイルを構造解析し、必要な定義内容をメモリ上にオブジェクトデータとして保存する。
次に、S806では、生成処理は開発用端末101のCPU201がWebアプリ生成部120として機能し、予め設定されているソースコードテンプレートを、ソースコード保持部121から読み込み、S807でメモリ上に保存した定義データをソースコードテンプレートに埋め込んだ、ソースコードファイル、すなわちWebアプリケーションを生成する。
以上のように、予め定義した要件定義とソースコードを用いることにより、Webアプリケーションが自動生成される。開発者は、このように生成したWebアプリケーションを、サーバ102に保存して業務アプリケーションの開発作業を終了する。
(バッチアプリケーションの自動生成処理)
次に、図3、図11及び図12を用いて、Webアプリケーションの管理者がデータベース140に記憶されたデータの更新をバッチ処理として行う際に用いる、バッチアプリケーションを、開発者が開発用端末101で自動生成する際の流れを説明する。
一般的にWebアプリケーションを運用していくためには適宜バッチ処理を行い、データのメンテナンスを行うということが必要となる。本実施形態ではWebアプリケーションを用いてユーザ登録をする例で説明しているが、このようなアプリケーションを用いた業務で1日に大量のユーザ登録がなされた場合や一度に大量のユーザデータの編集が行われる際には、処理を一括で進めることができるようにバッチ処理を行うことが通常である。このようなバッチ処理に用いるアプリケーションは、個別開発を行うことが一般的であるが、本実施形態におけるバッチアプリケーションは、Webアプリケーションで画面単位に行っていた処理をバッチ化するのみでよいため、多くの部分で共通な領域が存在する。このバッチアプリケーションの自動生成処理ではWebアプリケーション定義をそのまま用い、最小限の定義を追加するだけで、Webアプリケーションで行っていた操作の機能を有するバッチアプリケーションを容易に作成することができる。
図11のバッチ入出力定義は、バッチアプリケーションへの入力データとなる項目一覧を定義したもので、図3のバッチアプリケーション定義部150に記憶されるバッチ入出力定義151の一例を示したものである。Webアプリケーションの入出力定義と異なり、バッチアプリケーションは利用者による入出力がWeb画面上で行われることはないため、画面定義としては不要であるが、このように、入出力定義114に対応する項目をバッチ入出力定義151として用意しておくことにより、Webアプリケーション定義部110に定義された、データベース定義111、データモデル定義112、ビジネスプロセス定義113、を再度バッチ処理用に用意することなくそのまま利用し、バッチアプリケーションを自動生成させることができる。
図11(a)に示すように、バッチ入出力定義151は、コード1101と名前1102と、dataUnit値1103を付与して管理されており、さらに詳細な項目定義もされている。例えば図11(a)のコード『USER_REGIST_BATCH』では、図11(b)に示す項目タイプ1111、項目コード1112、名前1113、表示1114、加工式1115、次入出力1116、データモデルコード1117、データモデル項目コード1118が定義されている。
これらの図11(b)の項目は図7の入出力定義114の項目とほぼ同じであり、大きく異なるのはdataUnit値1103が定義されている点である。なお、バッチアプリケーションでは、アクション項目「B戻る」が定義されていないが、これは、バッチ処理においては、元の画面へ「戻る」処理が不要であるからである。
dataUnit値1103とはバッチアプリケーションによる大量のデータ処理に対して、何件毎にコミット処理を行うかを設定する値である。例えば、1万件のユーザ登録に対して、dataUnitを100に設定すると、100回のトランザクション処理が発生し、100回コミットするバッチ処理となる。ここで設定されるdataUnit値が小さすぎると、データベース接続、コミット処理、クローズ処理に係る処理時間が大きくなり、バッチ処理全体のパフォーマンスが悪くなる。一方、dataUnit値が大きすぎると、トランザクション当たりのデータ量が多くなり、メモリエラーが発生する可能性が高くなる。そのため、バッチアプリケーションに合わせた最適なdataUnit値を決定する必要がある。
バッチ入出力定義に定義されているアクション項目「EXEC_ACTION登録」の加工式1115には、「USER_REGIST_BP」が定義されている。この「USER_REGIST_BP」は図6に示すWebアプリケーションで利用しているビジネスプロセス定義のコードである。すなわち、このように定義しておくことによりバッチアプリケーションからもWebアプリケーションと同様のビジネスプロセス定義を利用することが可能であり、バッチアプリケーション用にビジネスプロセスを作成する必要がない。Webアプリケーションのビジネスプロセス定義をバッチアプリケーションでも利用することにより、そしてビジネスプロセス定義で利用されているデータモデル定義、さらにはデータベース定義についても、Webアプリケーションで利用した定義をそのまま利用することができる。
図16は、図4乃至6に示すようなWebアプリケーション定義部110に記憶されているデータベース定義111、データモデル定義112、ビジネスプロセス定義113、等の要件定義がされ、さらに図11に示すバッチアプリケーション定義部150に記憶されているバッチ入出力定義151がされた後に、バッチアプリケーションを自動生成する際の流れを説明するためのフローチャートである。
このような処理は、開発用端末101のCPU201が記憶されている制御プログラムを読み出して実行することにより実現される。
まず、S1201では、開発用端末101のCPU201が、データベース定義111をWebアプリケーション定義部110から読み込む。S1202では、データモデル定義112をWebアプリケーション定義部110から読み込む。S1203では、ビジネスプロセス定義113をWebアプリケーション定義部110から読み込む。S1204では、バッチ入出力定義151をバッチアプリケーション定義部150から読み込む。
このような定義はXML形式で記述されているため、S1205では、開発用端末101のCPU201が、XMLファイルを構造解析し、必要な定義内容をメモリ上にオブジェクトデータとして保存する。
次に、S1206では、開発用端末101のCPU201がバッチアプリ生成部160として機能し、予め設定されているソースコードテンプレートを、ソースコード保持部121から読み込み、S1207でメモリ上に保存した定義データをソースコードテンプレートに埋め込んだ、ソースコードファイル、すなわちバッチアプリケーションを生成する。
以上のように、予め定義した要件定義とソースコードを用いることにより、バッチアプリケーションが自動生成される。開発者は、このように生成したバッチアプリケーションを、バッチ処理用端末104に保存してバッチアプリケーションの生成作業を終了する。
(バッチアプリケーションによるバッチ処理)
通常Webアプリケーションの管理者は、上記のように生成されたバッチプログラムを用いて定期的にデータのメンテナンスを行うが、このようなバッチプログラムによるバッチ処理は毎回成功するとは限らず、処理中にエラーが発生して処理が中断してしまうことがある。このようなエラーの原因としては、ネットワークやメモリ等の利用環境に不具合がある場合や、トランザクション内のデータに不整合がある場合や、バッチプログラムの不具合がある場合など、複数の理由が考えられる。このような不具合の種類によっては何回かバッチプログラムを実行するとエラーが解消して処理が行えることもあるため、エラーが発生した場合にはバッチプログラムを再度実行(リトライ)することが通常である。しかしながらエラーの種類によってはバッチプログラムを再度実行してもエラーが解消しないこともあるため、所定回数繰り返したのちリトライを行ことなく異常終了させ、管理者が事後的にエラーの原因となったデータを特定し、適宜修正を行っていた。
しかし1トランザクション内にはdataUnit値1103として設定されているように、複数のデータが一括して処理するように設定されており、管理者による不整合のデータの特定作業はかなり煩雑である。そのためこのようなエラーの原因となっているデータを容易に特定できるバッチ処理方法が求められている。
ここでは、図3、図13乃至図16を用いて、エラーの原因となっているデータを容易に特定できるようなバッチ処理を説明する。
Webアプリケーションの管理者は、バッチ処理端末104に記憶されたバッチアプリケーションを用いてバッチ処理を行う。このようなバッチ処理はサーバ102に負荷がかかるため、他の業務が行われない深夜等にまとめて行われるのが一般的である。
バッチ処理用端末104には、図3に示すようにバッチアプリケーション170と、バッチ処理に用いるファイル入力部190と、バッチ処理に失敗した際に生成されるエラーファイル181が出力されるエラー出力部180が設けられている。
ファイル入力部190からは、例えばCSV形式のバッチ処理に用いるファイル入力を受け付けることができる。バッチアプリケーション170は、ファイル取得部172と、バッチ処理部171と、バッチエラー出力部173と、dataUnit値管理部174とを有している。ファイル入力部190から入力された入力ファイルは、ファイル取得部172で取得される。そしてバッチ処理動作が実行されると、詳細は後述するがバッチ処理部171がデータベース140に対して1つのトランザクションごとに処理を行いコミットさせるか、エラーが発生したとしてトランザクションをロールバックさせる。
バッチエラー出力部173は、バッチ処理部171でエラーが発生したトランザクションについてのエラーファイル181をエラー出力部180に出力させる。そして、ファイル取得部172は、このようなエラーファイル181を更新データとして用いてリトライ処理を行う。
次に図13乃至図15のフローチャートを用いて本実施形態におけるバッチ処理及びリトライ処理についての流れを説明する。このような処理は、バッチ処理用端末104のCPU201が記憶されている制御プログラムを読み出して実行することにより実現される。
S1301では、バッチ処理用端末104のCPU201のファイル取得部172が、ファイル入力部190から入力されたファイルを取得する。
S1302では、バッチ処理用端末104のCPU201がバッチアプリケーションとして定義されたdataUnit値1103を初期のdataUnit値として取得し、dataUnit値管理部174に記憶する。
S1303では、バッチ処理用端末104のCPU201のバッチ処理部171が区分手段として機能し、ファイル取得部172で取得したファイルの入力データを、dataUnit値管理部174に記憶されたdataUnit値を用いて複数に区分けする。ここでは、区分けされたデータ一覧の単位を1つのトランザクションとして更新処理されるユニットと呼ぶ。
S1304では、バッチ処理用端末104のCPU201がユニット分だけ繰り返して図14に示すバッチ処理を行う。
S1401では、バッチ処理用端末104のCPU201がデータベース140に対してデータをユニット単位で更新するトランザクション処理の実行を行う(更新処理)。
S1402では、バッチ処理用端末104のCPU201が、トランザクション処理中にエラーが発生したかを判断する。
トランザクション処理中にエラーが発生しなかったと判断した場合には、S1403では、バッチ処理用端末104のCPU201が、更新処理は無事に終了したとして、トランザクションのコミット待ち領域に当該処理結果を格納する。そして、S1404では、当該ユニットに関するトランザクションをコミットする。
一方、トランザクション処理が成功しなかった場合には、S1405に進み、当該ユニットに含まれるデータをすべてエラーファイルに出力する。そしてエラーファイルに出力後、S1406にて当該ユニットに関するトランザクションをロールバックする。
このようなバッチ処理を、S1303で区分けして生成されたユニット分繰り返し行う。そしてすべてのユニットに関する処理が完了すると、バッチ処理の繰り返しは終了する。
次に、全ユニット分のバッチ処理が終了した後に、S1305において、S1307で行われたリトライ処理の回数が既に所定の回数未満であるか判断する。リトライ回数は、管理者が任意に設定することができる値であり、この所定の回数以上である場合には、トランザクションのリトライ処理が必要以上に多すぎてサーバ等に負荷をかけることになるため、まだエラーが含まれているユニットとして「異常終了」ユニットとしてエラー出力部180に記憶させて終了する。このように異常終了されたユニットは、管理者が個別に更新処理を行う。
一方、S1305においてリトライ回数が所定未満の場合には、再度リトライ処理に進むべくS1306に進む。そして、S1306では、バッチ処理用端末104のCPU201が、エラー出力部180にエラーファイル181として出力されたファイルが存在するか否かを判断する。S1306でエラーファイル181が存在しないと判断された場合には、全てのユニットでエラーが発生することなくバッチ処理が完了したとして、処理を終了する。
一方、S1306でエラー出力部180にエラーファイル181として出力したファイルが存在すると判断、すなわち更新処理でエラーとなったユニットが存在すると特定した場合には、S1307に進み、図15に示すリトライ処理を行う。
S1501では、まずdataUnit値管理部174に記憶されているdataUnit値(n)を2で除して、dataUnit値(n+1)を算出する。算出されたdataUnit値(n+1)が、小数点以下を含む場合には、切り捨てをおこない、整数となるようにする。なお、ここでの算出処理は、dataUnit値(n+1)が、予め記憶されているdataUnit値より小さな値となればよく、2で除する場合に限られない。
S1502では、バッチ処理用端末104のCPU201が、S1501で算出されたdataUnit値(n+1)が所定の値未満か判断する。所定の値未満である場合には、ユニットのデータ数をこれ以上小さくできないため、処理を終了する。なお、本実施例では、所定の値が1を例示しているが、この値は適宜管理者が設定することが可能である。
S1502でdataUnit値(n+1)が所定の値以上と判断された場合には、S1503に進み、dataUnit値管理部174に記憶されているdataUnit値をS1501で算出されたdataUnit値(n+1)に更新する。
S1504では、バッチ処理用端末104のCPU201が、エラー出力部180に出力されたエラーファイル181を取得する(メモリ内に読み込む)。そして、S1505で、エラーファイル181を、dataUnit値管理部174に記憶されたdataUnit値を用いて複数に区分けする。つまりのバッチ処理用端末104のCPU201のバッチ処理部171が区分手段として機能し、初期のdataUnit値を2で除して算出されたdataUnit値(n+1)を用いて、エラーファイル181に含まれるデータの区分けを行う。ここでは、区分けされたデータ一覧の単位を1つのトランザクションとして再更新処理されるエラーユニットと呼ぶ。なお、S1504で取得されたエラーファイル181は、取得後に削除される。
そしてS1506では、S1304と同様に図14に示したバッチ処理がエラーユニット分繰り返し行われる。そして、S1506のバッチ処理で再度エラーが発生した場合には、S1305に戻る。すなわち、リトライ回数が予め設定された所定回数に達するまで、ユニットに含まれるデータ数を細分化しながらリトライ処理を繰り返し行う。
図16にこのようなリトライ処理によるバッチ処理の概念図を示す。最初のトランザクション内の処理単位は、dataUnit値管理部174に初期値として記憶されたdataUnit値(1)となっている。ここでエラー有とされたユニット1602は、エラーリトライ処理(1)においては、初期のdataUnit値(1)を2で除して算出されたdataUnit値(2)で区分けされるため、トランザクション内の処理単位は、初期のユニット1601の単位の半分となっている。ここでエラーとなったエラーユニット1604は、再度、前回のリトライ処理で用いたdataUnit値(2)を2で除して算出されたdataUnit値(3)で区分けされるため、トランザクション内の処理単位は、エラーユニット1604の半分となっている。
なお、実施形態では、バッチ処理を行う際に用いられる入力データはCSV形式の入力ファイルによるデータの場合を例に説明したが、データベース140にアクセスして抽出したデータを用いても同様に行うことができる。
以上のように、リトライ処理が繰り返されるごとに、1つのトランザクションで処理されるデータの数が減るようにdataUnit値を更新していくことにより、エラーとなったユニットに含まれるデータ数を少なくすることができる。これにより、バッチ処理においてエラーが発生したとしてもエラーの原因となるデータを容易に特定することができる。さらに、異常終了として処理が行われなかったトランザクション内に含まれる正常のデータ数も少ないことから、管理者が個別にデータ更新処理する際にかかる時間も削減することができる。
また、本実施形態では、リトライ時に1つのユニットを複数に再区分けすることを例に説明をしたが、リトライ時に複数のユニットでエラーが発生していた場合には、複数のユニット内のデータをまとめて区分けしなおしてもよい。言い換えると、例えば2つのエラーが発生したユニットを3つエラーユニットとして再度区分けしてもよい。
なお、本実施形態においては、Webアプリケーション及びバッチアプリケーションを自動生成するツールで生成されたバッチアプリケーションによるバッチ処理のリトライ時の仕組みを例に説明を行ったが、このような仕組みはアプリを自動生成するツールで生成されたバッチアプリケーソン(プログラム)に限られず、バッチ処理するプログラムのいずれにも適用できることは言うまでもない。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置の情報処理装置が前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理を情報処理装置で実現する(実行可能とする)ために、前記情報処理装置にインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理を情報処理装置で実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行して情報処理装置にインストールさせて実現することも可能である。
また、情報処理装置が、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、情報処理装置上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、情報処理装置に挿入された機能拡張ボードや情報処理装置に接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
101 開発用端末
102 サーバ
103 利用者用端末
104 バッチ処理端末
130 Webアプリケーション
170 バッチアプリケーション
171 バッチ処理部
173 バッチエラー出力部
174 dataUnit値管理部

Claims (11)

  1. 複数のデータを記憶する記憶手段を備えたサーバ装置と通信可能に設けられた情報処理装置であって、
    前記記憶手段に記憶された複数のデータを複数のユニットに区分けする第1の区分手段と、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新手段と、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定手段と、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分手段と、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、前記第2の区分手段で再度区分けされたユニット単位で、前記更新手段に前記更新処理を再度実行させるリトライ手段と、を有することを特徴とする情報処理装置。
  2. 前記リトライ手段は、前記特定手段でエラーとなったユニットが存在する場合には、前記第2の区分け手段による再度の区分けと、前記リトライ手段による前記更新処理とを繰り返すことを特徴とする請求項1に記載の情報処理装置。
  3. 前記リトライ手段は、前記第2の区分手段による再度の区分けと、前記リトライ手段による前記更新処理との繰り返しは、繰り返し回数が所定回数に達するまで行うことを特徴とする請求項2に記載の情報処理装置。
  4. 前記リトライ手段は、前記第2の区分手段による再度の区分けと、前記リトライ手段による前記更新処理との繰り返しは、ユニットに含まれるデータ数が所定の数未満となるまで繰り返すことを特徴とする請求項2に記載の情報処理装置。
  5. 前記更新手段は、前記更新処理でエラーが発生した場合には、エラーが発生したユニットのトランザクションをロールバックすることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記記憶手段のデータの更新に用いる更新データを取得する取得手段を更に有し、
    前記更新手段は、前記取得手段で取得した更新データを用いて、更新処理を行うことを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
  7. 複数のデータを記憶する記憶手段を備えたサーバ装置と通信可能に設けられた情報処理装置の制御方法であって、
    前記複数のデータを複数のユニットに区分けする第1の区分工程と、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新工程と、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定工程と、
    前記特定工程でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分工程と、
    を有し、
    前記特定工程でエラーとなったユニットが存在すると特定された場合には、前記第2の区分工程で再度区分けされたユニット単位で、前記記憶手段のデータの更新処理を行うリトライ工程と、を有することを特徴とする制御方法。
  8. 複数のデータを記憶する記憶手段を備えたサーバ装置と通信可能に設けられた情報処理装置で実行可能なプログラムであって、
    前記情報処理装置を、
    前記複数のデータを複数のユニットに区分けする第1の区分手段、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新手段、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定手段、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分手段、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、前記第2の区分手段で再度区分けされたユニット単位で、前記更新手段に前記更新処理を再度実行させるリトライ手段、
    として機能させることを特徴とするプログラム。
  9. 複数のデータを記憶する記憶手段を備えた情報処理装置であって、
    前記記憶手段に記憶された複数のデータを複数のユニットに区分けする第1の区分手段と、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新手段と、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定手段と、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分手段と、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、前記第2の区分手段で再度区分けされたユニット単位で、前記更新手段に前記更新処理を再度実行させるリトライ手段と、を有することを特徴とする情報処理装置。
  10. 複数のデータを記憶する記憶手段を備えた情報処理装置の制御方法であって、
    前記複数のデータを複数のユニットに区分けする第1の区分工程と、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新工程と、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定工程と、
    前記特定工程でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分工程と、
    を有し、
    前記特定工程でエラーとなったユニットが存在すると特定された場合には、前記第2の区分工程で再度区分けされたユニット単位で、前記記憶手段のデータの更新処理を行うリトライ工程と、を有することを特徴とする制御方法。
  11. 複数のデータを記憶する記憶手段を備えた情報処理装置で実行可能なプログラムであって、
    前記情報処理装置を、
    前記複数のデータを複数のユニットに区分けする第1の区分手段、
    前記区分けされたユニットを1つのトランザクションとして、前記記憶手段のデータの更新処理を行う更新手段、
    前記更新処理でエラーとなったユニットが存在するか否かを特定する特定手段、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、当該ユニットを前回のデータ数よりも少ないデータ数となるように再度区分けする第2の区分手段、
    前記特定手段でエラーとなったユニットが存在すると特定された場合には、前記第2の区分手段で再度区分けされたユニット単位で、前記更新手段に前記更新処理を再度実行させるリトライ手段、
    として機能させることを特徴とするプログラム。
JP2014131025A 2014-06-26 2014-06-26 情報処理装置、情報処理装置の制御方法、およびプログラム Pending JP2016009423A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014131025A JP2016009423A (ja) 2014-06-26 2014-06-26 情報処理装置、情報処理装置の制御方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014131025A JP2016009423A (ja) 2014-06-26 2014-06-26 情報処理装置、情報処理装置の制御方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2016009423A true JP2016009423A (ja) 2016-01-18

Family

ID=55226915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014131025A Pending JP2016009423A (ja) 2014-06-26 2014-06-26 情報処理装置、情報処理装置の制御方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP2016009423A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005445A (ja) * 2016-06-30 2018-01-11 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2018010616A (ja) * 2016-06-30 2018-01-18 キヤノンマーケティングジャパン株式会社 情報処理装置とその処理方法及びプログラム
KR20190088636A (ko) * 2018-01-19 2019-07-29 전북대학교산학협력단 트랜잭셔널 메모리 분할 장치 및 방법
KR20210071942A (ko) * 2019-12-03 2021-06-16 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 트랜잭션 처리 방법, 장치 및 기기, 그리고 컴퓨터 저장 매체

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018005445A (ja) * 2016-06-30 2018-01-11 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2018010616A (ja) * 2016-06-30 2018-01-18 キヤノンマーケティングジャパン株式会社 情報処理装置とその処理方法及びプログラム
JP2018028948A (ja) * 2016-06-30 2018-02-22 キヤノンマーケティングジャパン株式会社 情報処理装置とその処理方法及びプログラム
KR20190088636A (ko) * 2018-01-19 2019-07-29 전북대학교산학협력단 트랜잭셔널 메모리 분할 장치 및 방법
KR102110027B1 (ko) * 2018-01-19 2020-05-12 전북대학교산학협력단 트랜잭셔널 메모리 분할 장치 및 방법
KR20210071942A (ko) * 2019-12-03 2021-06-16 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 트랜잭션 처리 방법, 장치 및 기기, 그리고 컴퓨터 저장 매체
KR102510195B1 (ko) 2019-12-03 2023-03-14 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 트랜잭션 처리 방법, 장치 및 기기, 그리고 컴퓨터 저장 매체

Similar Documents

Publication Publication Date Title
US11074068B1 (en) Systems and methods of a metadata orchestrator augmenting application development
US20200387372A1 (en) Microservice file generation system
CN108762743B (zh) 一种数据表操作代码生成方法及装置
US9552214B2 (en) Tool for automated extraction and loading of configuration settings
US20140136958A1 (en) Relating to distributed access infrastructure for a database
US11630647B2 (en) Method and system for configuring processes of software applications using activity fragments
JP2016009423A (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
US20190179857A1 (en) Decision program, decision apparatus and decision method
JP2019101829A (ja) ソフトウェア部品管理システム、計算機および方法
JP6231260B2 (ja) 画面制御システム、画面制御プログラム、画面作成支援プログラム及び画面制御方法
CN115469849A (zh) 一种业务处理系统、方法、电子设备和存储介质
US20140040785A1 (en) Browser-based process flow control responsive to an external application
US9405514B1 (en) Process fragment management
JP7385436B2 (ja) 管理システム
JP6552162B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP6836077B2 (ja) 情報処理装置と、その処理方法及びプログラム
CN112256257A (zh) 界面构造方法、可读存储介质和电子设备
JP2016033709A (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
JP6442083B2 (ja) 情報項目記憶方法、情報項目記憶システム、情報項目記憶装置、情報項目記憶用プログラムおよびコンピュータの読取可能な記憶媒体
JP2016081126A (ja) ジョブ制御言語自動生成プログラム
JP2016051242A (ja) 情報処理装置、情報処理装置の制御方法、およびプログラム
JP4630640B2 (ja) 設計情報検証装置および設計情報検証方法
US11921688B2 (en) Environment construction support device and environment construction support method
JP6348817B2 (ja) 画面表示制御装置及び画面表示方法
JP2008009966A (ja) 業務プロセス設定装置及び業務プロセス設定方法

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20161101

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161101