(57)【要約】【課題】電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化する。【解決手段】コンピュータ１００が、入力部１０５で受けた入力電文から電文の識別情報を読み取り、該識別情報をシーケンス情報１１２に照合し、入力電文に対し応答すべき応答電文を特定する処理と、特定した応答電文について辞書情報１１３にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して入力電文中で合致するデータを特定する処理と、特定したデータを入力電文より抽出し、該抽出した値を応答電文における該当データの値として設定し、当該応答電文を出力部１０６に出力する処理を実行する。【選択図】図１
2013122722.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置間における電文授受をシミュレートするシステムであって、
一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部と、
入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、
前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、
前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理を実行する演算部と、
を備えることを特徴とする電文シミュレーションシステム。
【請求項２】
前記電文におけるデータ構造が各データによる階層構造をなすものであり、
前記演算部は、
前記データを特定する処理に際し、前記応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定するとともに、該特定したデータの上位階層のデータについて、前記応答電文と前記入力電文との間でデータ構造における該当データの位置および意味が合致するか判定し、該上位階層のデータについても合致をみた場合に、前記特定したデータを前記応答電文における該当データの値とするものであることを特徴とする請求項１に記載の電文シミュレーションシステム。
【請求項３】
前記記憶部は、
各電文を構成するデータのうち値が可変であるものについて、その可変範囲の情報を更に格納しており、
前記演算部は、
前記応答電文を構成する各データのうち、前記入力電文より抽出した値を設定していないデータ項目について値の可変範囲の情報を記憶部より抽出し、前記応答電文における該当データ項目の表示に合わせて、前記可変範囲の情報が示す各値を選択可能に出力部にて表示し、ユーザからの値選択を入力部にて受け付け、該受け付けた選択値を応答電文における該当データ項目に設定するものである、
ことを特徴とする請求項１または２に記載の電文シミュレーションシステム。
【請求項４】
一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部を備え、情報処理装置間における電文授受をシミュレートするコンピュータが、
入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、
前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、
前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理と、
を実行することを特徴とする電文シミュレーション方法。
【請求項５】
一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部を備え、情報処理装置間における電文授受をシミュレートするコンピュータに、
入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、
前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、
前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理と、
を実行させることを特徴とする電文シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電文シミュレーションシステム、電文シミュレーション方法、および電文シミュレーションプログラムに関するものであり、具体的には、電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化する技術に関する。
【背景技術】
【０００２】
金融分野における資金決済、証券決済、その他様々な業務に伴い、金融機関やその他組織のシステム間で様々な種類の電文が授受されている。このような電文を処理して業務を行うシステムを開発する場合、様々な電文を作成、送受信し処理する機能を開発することになる。このうち電文については、ＩＳＯ２００２２に沿った標準化が進展しており、電文のフォーマットを統一的な手法で開発し、電文の解釈処理、相互流通を容易化する努力が始まっている。
【０００３】
こうした電文の生成に関する従来技術として、例えば、ＷＳＤＬ（Ｗｅｂ  Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ：ウェブサービス記述言語）ファイルを簡易、迅速、確実に生成する技術（特許文献１参照）などが提案されている。この技術によれば、システム間で授受するメッセージのフォーマットを明確に特定することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−２６７３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した電文処理機能を開発するにあたり、電文を送受する相手となる接続先システムをシステムの開発時やテスト時に利用できれば、開発やテストを効率よく行うことができる。しかし実際には、接続先システム自体も開発中であったり、開発、テストでの利用が制限されていたりする場合があるため、接続先システムの動作を模擬するシミュレータを用いることがある。しかしながら、このシミュレータの開発には、接続先システムにおける電文の送受信、応答電文作成の各機能を実際に開発する際のコストと同等の開発コストがかかってしまう難点がある。一方、従来技術の如くＷＳＤＬを利用するとしても、このＷＳＤＬでは入力電文、応答電文のフォーマットが定義されるのみで、応答電文内の各項目に適宜な値を自動的に設定し応答電文の自動生成を行うことはできない。
【０００６】
そこで本発明の目的は、電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明の電文シミュレーションシステムは、情報処理装置間における電文授受をシミュレートするシステムであって、一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部と、入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理を実行する演算部と、を備えることを特徴とする。
【０００８】
また、本発明の電文シミュレーション方法は、一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部を備え、情報処理装置間における電文授受をシミュレートするコンピュータが、入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理と、を実行することを特徴とする。
【０００９】
また、本発明の電文シミュレーションプログラムは、一連の電文授受の流れを構成する電文の送受信順序を規定したシーケンス情報と、各電文のデータ構造と該データ構造をなす各データの意味を示す辞書情報とを格納した記憶部を備え、情報処理装置間における電文授受をシミュレートするコンピュータに、入力部で受けた入力電文から電文の識別情報を読み取り、該識別情報を前記シーケンス情報に照合し、前記入力電文に対し応答すべき応答電文を特定する処理と、前記特定した応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定する処理と、前記特定したデータを前記入力電文より抽出し、該抽出した値を前記応答電文における該当データの値として設定し、当該応答電文を出力部に出力する処理と、を実行させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化できる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態における電文シミュレーションシステムを含むネットワーク構成図である。
【図２】本実施形態における電文シミュレーションシステムの構成例を示す図である。
【図３】本実施形態におけるシーケンス例を示す図である。
【図４】本実施形態におけるシーケンス情報の構成例を示す図である。
【図５】本実施形態における入力電文の例を示す図である。
【図６】本実施形態における応答電文の例を示す図である。
【図７】本実施形態における入力電文のメタ情報例を示す図である。
【図８】本実施形態における応答電文のメタ情報の例を示す図である。
【図９】本実施形態における辞書情報の例を示す図である。
【図１０】本実施形態における値候補テーブルの例を示す図である。
【図１１】本実施形態の電文シミュレーション方法の処理手順例を示すフロー図である。
【図１２】本実施形態における画面例を示す図である。
【発明を実施するための形態】
【００１２】
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態の電文シミュレーションシステム１００を含むネットワーク構成図であり、図２は本実施形態における電文シミュレーションシステムの構成例を示す図である。図１に示す電文シミュレーションシステム１００は、電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化するコンピュータシステムである。本実施形態においては、電文シミュレーションシステムをシミュレータ１００として示している（以下同様）。
【００１３】
シミュレータ１００は、例えば、金融機関で運用される決済システム等に関して、その電文授受をシステム開発時やテスト時にシミュレートするためのコンピュータである。以下では、シミュレータ１００が、開発中システムであるテスト対象システム２００から電文を受信した時に、テスト対象システム２００への応答電文を自動作成する状況を一例として想定している。従って、テスト対象システム２００は開発中のシステムであり、電文授受に関しテストを行って機能の確認を行おうとしているシステムとなる。
【００１４】
なお、本実施形態においては、開発中システムであるテスト対象システム２００とシミュレータ１００がそれぞれ１つずつの構成を例にあげているが、この構成に限定されず、複数のテスト対象システム２００に対してシミュレータ１００を接続した構成なども採用できる。この場合は、シミュレータ１００が各テスト対象システム２００に対して並行して処理を実行することとなる。
【００１５】
また本実施形態においては、ＩＳＯ２００２２において定義される電文のメタ情報を利用するものとする。メタ情報とは、ＩＳＯ２００２２において電文の書式や構造を定めるのみではなく、業務における各項目の位置づけや項目間の関係を定義した情報である。ＩＳＯ２００２２では、このメタ情報を組み合わせることで電文を定義している。なお、現在、ＩＳＯ２００２２ではＸＭＬを用いた電文が主として利用されている。本実施形態においても、以降、ＸＭＬの電文を例としてあげる。勿論、本実施形態で例示する電文シミュレーション手法を、ＸＭＬ以外のフォーマットの電文に適用してもよい。また、電文を構成するデータすなわちＸＭＬの要素（タグに囲まれた部分）の階層構造において、上位の要素を「親」、その下位の要素を「子」と称する。また、ある要素から見て上位階層に連なる各要素は「祖先」と称し、ある要素から見て下位階層に連なる各要素は「子孫」と称することとする。
【００１６】
上述したシミュレータ１００のハードウェア構成は以下の如くとなる。図２に示すように、前記シミュレータ１００は、ハードディスクドライブなど適宜な不揮発性記憶装置で構成される記憶部１０１、ＲＡＭなど揮発性記憶装置で構成されるメモリ１０３、記憶部１０１に保持されるプログラム１０２をメモリ１０３に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうＣＰＵ１０４（演算部）、ユーザからの入力を受け付けるキーボード等の入力部１０５、処理データの表示を行うディスプレイ等の出力部１０６、ネットワーク１５０と接続しテスト対象システム２００との電文授受を担う通信部１０７、を備える。これら各部１０１〜１０７はバスにより相互に接続されている。
【００１７】
なお、記憶部１０１内には、本実施形態の電文シミュレーションシステムとして必要な機能を実装する為のプログラム１０２と、シーケンス情報１１２、辞書情報１１３、および値候補テーブル１１４が少なくとも記憶されている。シーケンス情報１１２、および辞書情報１１３は、ＩＳＯ２００２２のメタ情報となる。
【００１８】
続いて、本実施形態のシミュレータ１００が備える機能について説明する。上述したように、以下に説明する機能は、例えばシミュレータ１００が備えるプログラム１０２を実行することで実装される機能と言える。
【００１９】
シミュレータ１００は、入力部１０５で受けた入力電文から電文の識別情報を読み取り、該識別情報を記憶部１０１のシーケンス情報１１２に照合し、入力電文に対し応答すべき応答電文を特定する機能を備えている。
【００２０】
また、シミュレータ１００は、上記で特定した応答電文について記憶部１０１の辞書情報１１３にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して入力電文中で合致するデータを特定する機能を備えている。
【００２１】
また、シミュレータ１００は、上記で特定したデータを入力電文より抽出し、該抽出した値を応答電文における該当データの値として設定し、当該応答電文を出力部１０６に出力する機能を備えている。
【００２２】
なお、シミュレータ１００は、前記特定した応答電文について記憶部１０１の辞書情報１１３にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して入力電文中で合致するデータを特定するに際し、該特定したデータの上位階層のデータについて、応答電文と入力電文との間でデータ構造における該当データの位置および意味が合致するか判定し、該上位階層のデータについても合致をみた場合に、前記特定したデータを応答電文における該当データの値とする機能も備えている。
【００２３】
また、シミュレータ１００は、応答電文を構成する各データのうち、入力電文より抽出した値を設定していないデータ項目について値の可変範囲の情報を記憶部１０１の値候補テーブル１１４より抽出し、応答電文における該当データ項目の表示に合わせて、可変範囲の情報が示す各値を選択可能に出力部１０６にて表示し、ユーザからの値選択を入力部１０５にて受け付け、該受け付けた選択値を応答電文における該当データ項目に設定する機能を備えている。
【００２４】
−−−データ構造例−−−
次に、本実施形態のシミュレータ１００が用いる各種データの構造例について説明する。まずは、シーケンス情報１１２について説明する。シーケンス情報１１２は、一連の電文授受の流れを構成する電文の送受信順序を規定した情報となる。一連の電文授受の流れ、すなわちシーケンスの例としては、図３において、ＩＳＯ２００２２の電文開発（電文のフォーマットの定義）で定義される、資金の支払業務を模したシーケンス図を示す。ここで、支払人３１１は支払業務における支払人のシステム、銀行３１２は支払を仲介する銀行のシステム、受取人３１３は銀行が仲介した支払の受取人のシステムを示す。
【００２５】
このシーケンスの場合、電文フロー３２１は支払人３１１から銀行３１２へ電文として「ＰＡＹＭＥＮＴ０１」が送信されることを示す。また、電文フロー３２２は、銀行３１２が電文「ＰＡＹＭＥＮＴ０１」を受信した後に、電文「ＰＡＹＭＥＮＴ０２」を支払人３１１へ送信することを示す。電文フロー３２３は、支払人３１１が電文「ＰＡＹＭＥＮＴ０２」を受信した後に、電文「ＰＡＹＭＥＮＴ０３」を銀行３１２へ送信することを示す。最後に、電文フロー３２４は、銀行３１２が電文「ＰＡＹＭＥＮＴ０３」を受信した後に、電文「ＰＡＹＭＥＮＴ０４」を受取人３１３に送信することを示す。
【００２６】
このように、ある業務処理に関して電文が連なったシーケンスの情報は、シミュレータ１００がシーケンス情報１１２として記憶部１０１に記憶している。このシーケンス情報１１２は、シミュレータ１００が入力部１０５あるいは通信部１０７を介してユーザ等からの入力を受け、これを記憶部１０１に格納したものとする。
【００２７】
上述した図３のシーケンス図に対応したシーケンス情報１１２の例を図４に示す。図４に例示するシーケンス情報１１２において、１つのレコードは、図３のシーケンス図における１つの電文フローの情報に対応する。このシーケンス情報１１２は、送信元４１１、送信先４１２、電文ＩＤ４１３、および次電文ＩＤ４１４、の各データを含むレコードの集合体となっている。
【００２８】
上述の送信元４１１は、シーケンスにおける各電文フロー（図３：電文フロー３２１、電文フロー３２２など）の送信元の情報となる。図３の例であれば、電文フロー３２１において送信元となる支払人３１１の情報となる。また、送信先４１２は、シーケンスにおける各電文フローの送信先の情報となる。図３の例であれば、電文フロー３２１において送信先となる銀行３１２の情報となる。また、電文ＩＤ４１３は、シーケンスにおける各電文フローのＩＤ（図３：ＰＡＹＭＥＮＴ０１、ＰＡＹＭＥＮＴ０２など）となる。図３の例であれば、電文フロー３２１において、「ＰＡＹＭＥＮＴ０１」の値となる。また、次電文ＩＤ４１４は、シーケンスにおいて、電文ＩＤ４１３に保持した該当電文フローの次に実行されるべき電文フローのＩＤとなる。図３の例であれば、電文フロー３２１に関しては、次の電文フローである電文フロー３２２のＩＤ「ＰＡＹＭＥＮＴ０２」が次電文ＩＤ４１４の値となる。
【００２９】
なお、図４においてはシーケンス情報１１２をテーブルの形式で示したが、ＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）で定義されているシーケンス図の情報は例えばＸＭＬを用いたＸＭＩ（ＸＭＬ  Ｍｅｔａｄａｔａ  Ｉｎｔｅｒｃｈａｎｇｅ）の形式で表現されていてもよい。
【００３０】
次に図５を用いて、金融機関間で授受する電文の例を示す。図５に示す入力電文５０１はテスト対象システム２００がシミュレータ１００に送信してくる電文であり、すなわちシミュレータ１００の入力となる。この入力電文５０１はＸＭＬ形式で記述された電文であり、複数の項目（データの項目）を開始タグ、終了タグで囲み、階層的な構造を持つ。図５に例示した入力電文５０１は、金融機関での支払業務において支払人が銀行に支払を依頼する電文、すなわち支払指図を表す電文を模したもので、例えば、支払方法を特定する要素「ＰａｙｍｅｎｔＭｅｔｈｏｄ」、支払人を特定する要素「Ｄｅｂｔｏｒ」、支払金額を特定する要素「ＩｎｓｔｒｕｃｔｉｏｎＡｍｏｕｎｔ」、受取人を特定する要素「Ｃｒｅｄｉｔｏｒ」などの各項目を含んでいる。
【００３１】
同様に図６を用いて応答電文の例を示す。図６に示す応答電文６０１は、図５で示した支払指図を表す入力電文５０１がシミュレータ１００に入力された場合に、シミュレータ１００が支払人のシステムに送信する確認電文に該当し、テスト対象システム２００の入力となる。この応答電文６０１も上述の入力電文５０１と同様、階層的な構造を持つＸＭＬ形式で記述された電文である。
【００３２】
なお、図６の応答電文６０１の要素のうち、「Ａｍｏｕｎｔ」、「Ｄｅｂｔｏｒ」、「Ｃｒｅｄｉｔｏｒ」は入力電文５０１の同名の要素と同じ値が設定される。一方で、要素「ＴｒａｎｓａｃｔｉｏｎＳｔａｔｕｓ」は、銀行のシステムが新たに値を設定する要素であり、支払の状況を表す項目となる。この要素において、例えば「ＲＪＣＴ」は、Ｒｅｊｅｃｔ（拒否）を表し、銀行において支払依頼が拒絶されたことを意味する。
【００３３】
本実施形態のシミュレータ１００では、応答電文６０１を生成するために、入力電文５０１から複数の項目の値を、それぞれ対応する応答電文６０１における合致項目にコピーして利用する。ある業務における入力電文５０１と応答電文６０１において、対応する項目が多数存在する場合には、上記のような項目の値のコピーにより、応答電文６０１の多くの項目の値を自動設定することが可能である。なお、入力電文５０１と応答電文６０１との要素間の対応は必ずしも明確ではない。例えば入力電文や応答電文には、名前を記述する複数の要素や、金額を記述する複数の要素が存在するかもしれない。各データの要素名（ＸＭＬの場合はタグ名等）の一致や型の一致で対応付けられる場合もあるが、同様の要素が多数存在する場合には、その対応付けが難しい。この対応付けを実現するために、本実施形態では電文のメタ情報を利用する。電文のメタ情報は、電文の構造に加えて、各要素の意味を表す情報である。
【００３４】
図７を用いて入力電文５０１のメタ情報７０１を示す。電文のメタ情報は、電文の構造として電文名とその電文を構成する要素名（データ項目の名）、要素の型、要素の親子関係からなる書式、構造に関する情報と、それぞれの要素や型のベースとなっている意味情報として業務要素または業務関係の情報を含んでいる。
【００３５】
業務要素とは業務の中での位置づけを特定する情報である。また業務関係とは業務要素間の関係を表す情報である。図７の例では、階層構造の最上位にあるデータ項目たる要素７０２は該当電文の電文種別を示すデータであり、値は「ＰＡＹＭＥＮＴ０１」である。また、要素７０３は該当電文の要素名「ＰａｙｍｅｎｔＩｎｆｏｒｍａｔｉｏｎ」を示しており、この要素７０３は図７のＸＭＬ構造における最上位の要素となる。また要素７０３の型７０４は、「ＰａｙｍｅｎｔＩｎｓｔｒｕｃｔｉｏｎＩｎｆｏｒｍａｔｉｏｎ」となっている。要素７０３の下位の構造は、要素７０３の型７０４により決定される。
【００３６】
また図７の例では、型７０４の下位には要素７０７他、３つの要素があることを示している。また、メタ情報７０１は、要素や型に関して、業務における意味の情報を含む。例えば型７０４、型７０５の意味は業務要素７０６が表し、図７の例ではこれらの型は「支払指示」に関係していることを表している。また、要素７０７のメタ情報としては、業務関係７０８として「「組織」は「支払」の支払人」と定義されている。これは要素７０７の型７０９「ＰａｒｔｙＩｄｅｎｔｉｆｉｃａｔｉｏｎ」のメタ情報が業務要素７１０として「組織」と定義されているため、型７０９の下位の構造の情報が、該当組織の情報を表し、その組織が「支払」という業務の中で「支払人」という位置づけであることを示している。同様に図７に示すメタ情報は、入力電文５０１を構成する要素について、その要素の型、階層の情報（ＸＭＬにおけるタグの親子関係）、要素や型のメタ情報を表している。
【００３７】
図８に応答電文６０１のメタ情報８０１を示す。応答電文６０１のメタ情報８０１も入力電文５０１のメタ情報７０１と同様、電文の構造として電文名とその電文を構成する要素名、要素の型、要素の親子関係からなる書式、構造に関する情報と、それぞれの要素や型のベースとなっている意味情報として、業務要素または業務関係の情報を保持する。
【００３８】
図７や図８に示すメタ情報を、シミュレータ１００は記憶部１０１に辞書情報１１３として保持する。上述のメタ情報に基づいた辞書情報１１３の構成例を図９に示す。この場合の辞書情報１１３は、種別９０１、名前９０２、型９０３、親項目９０４、子項目９０５、ベース９０６、およびポインタ９０７の各データを含むレコードからなるテーブルであり、各レコードは電文または型または要素の情報を保持している。シミュレータ１００は辞書情報１１３を電文の種類毎に保持している。
【００３９】
種別９０１は、電文、要素、型の種別を保持し、名前９０２は、電文種別や要素、型の名前を保持し、型９０３はそのレコードが要素である場合に、その要素の型の名前を保持する。階層構造において上位階層である親要素を持つ「要素」に関して、該当レコードにおける親項目９０４にてその親要素の名前を保持する。また、下位階層である子要素を持つ「型」に関して、種別が「要素」である子要素の名前を子項目９０５にて保持する。
【００４０】
また、ベース９０６は当該項目がベースとする業務要素または業務関係の情報を保持する。また、ポインタ９０７は、以降で説明する図１０の値候補テーブル１１４中より該当レコードのデータを参照する際のキーとなるポインタ情報を保持する。
【００４１】
図９の辞書情報１１３において、ある電文の構造を抽出する場合には、まず、種別９０１が「電文」であり、名前９０２が対象電文より抽出した電文種別の名前と一致するレコードを抽出する。次にそのレコードの子項目９０５の値を名前９０２に持ち、種別９０１が「要素」であるレコードを抽出する。これが電文の最上位の要素の情報である。以降、最上位の要素から、下位の要素へ親要素からその子要素を順にたどり、構造の情報を順次、次のように抽出する。親要素から子要素を抽出するには、種別９０１が「要素」であり、名前９０２が「型」のレコードの子項目９０５に含まれる文字列のいずれかと同じであり、親項目９０４が「型」のレコードの名前９０２と同じであるレコードを子要素の情報のレコードとして抽出する。なお、「型」のレコードの子項目９０５に複数の文字列が記載されている場合には、複数の子の要素が存在することを意味する。
【００４２】
また上記と同様に、子要素から親要素を抽出することも可能である。具体的には、子要素の情報を表すレコードの親項目９０４の値が名前９０２と一致し、かつ種別９０１が「型」である型の情報のレコードを抽出する。さらに、「型」のレコードの親項目９０４の値が名前９０２と一致し、かつ種別９０１が「要素」である要素の情報のレコードを抽出する。
【００４３】
電文の構造の抽出は、辞書情報１１３から上記のように電文種別の名前から、子の要素、さらにその子の要素の抽出を繰り返して行うことである。抽出された情報の中で、上記に示したように階層構造となっている要素の親要素、子要素を相互に特定することができ、これを繰り返すことで、親の階層をたどる（祖先の要素、その型、ベースの情報の抽出）、子の階層をたどる（子孫の要素、その型、ベースの情報の抽出）ことが可能である。
【００４４】
続いて図１０を用いて値候補テーブル１１４の構成について説明する。値候補テーブル１１４は、各電文を構成するデータのうち値が可変であるものについて、その可変範囲の情報を格納したテーブルである。換言すれば、応答電文への値の設定に際して、シミュレータ１００により自動的に値を設定出来ない要素について、その値候補の情報を保持するテーブルとなる。よって、図１０に示す例では、値の可変範囲が定まっているものの他に、特に範囲が定まっておらずユーザから直接入力してもらうものについても当該テーブルにレコードが含まれている。
【００４５】
この値候補テーブル１１４は、参照ポインタ１１０２、項目名１１０３、値候補フラグ１１０４、値候補１１０５、およびデータ型１１０６の各データを含むレコードの集合体となっている。参照ポインタ１１０２は、辞書情報１１３中での該当要素（すなわち値を自動設定出来ない要素）のレコードを特定する値である。また、項目名１１０３は、該当要素の要素名を保持する。値候補フラグ１１０４は、シミュレータ１００が該当要素のとり得る値（可変範囲）を予め特定できるか否かを示す情報（例：特定できる場合には「１」、特定できない場合には「ｎｕｌｌ」）を保持する。値候補１１０５は、該当要素のとり得る値の情報を保持する。このとき値候補１１０５は、該当要素のとり得る値の情報を、例えばカンマ区切りで保持してもよい。また、データ型１１０６は、該当要素のデータ型情報（例えば、日付型である「ＩＳＯＤａｔｅ」や、もしくは「ｔｒｕｅ」と「ｆａｌｓｅ」のいずれかの値をとり、真または偽のいずれかを表す「ＹｅｓＮｏＩｎｄｉｃａｔｏｒ」など）を保持する。  
−−−処理手順例−−−
以下、本実施形態における電文シミュレーション方法の実際手順について図に基づき説明する。以下で説明する電文シミュレーション方法に対応する各種動作は、シミュレータ１００がメモリ１０３に読み出して実行するプログラム１０２によって実現される。そして、このプログラム１０２は、以下に説明される各種の動作を行うためのコードから構成されている。
【００４６】
図１１は、本実施形態における電文シミュレーション方法の処理手順例を示すフロー図である。ここでは、シミュレータ１００が、テスト対象システム２００から入力電文を受信し、テスト対象システム２００への応答電文を作成して送信する処理について説明する。
【００４７】
はじめにシミュレータ１００は、テスト対象システム２００からの入力電文を通信部１０７より受信し（ステップ１００１）、ここで受信した入力電文をメモリ１０３または記憶部１０１に記憶する。
【００４８】
次にシミュレータ１００は、前記ステップ１００１で記憶した入力電文の電文種類を特定する（ステップ１００２）。この処理は、図５の入力電文５０１の例では、最上位の要素（図５：“Ｄｏｃｕｍｅｎｔ”要素）のｉｄ属性の値（図５：“ＰＡＹＭＥＮＴ０１”）を取得する処理となる。なお、電文種類の特定は、業務で用いる電文の形式に応じて、ＸＭＬの要素名や名前空間ＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ）、その他通信処理におけるメッセージヘッダ等の情報を用いてもよい。
【００４９】
続いてシミュレータ１００は、シーケンス情報１１２に基づいて、前記入力電文に対応する応答電文の種類を特定する（ステップ１００３）。この場合、シミュレータ１００は、前記ステップ１００２で特定した入力電文の電文種別が、シーケンス情報１１２の電文ＩＤ４１３に現れるレコードを検索し、該当レコードの次電文ＩＤ４１４の値を取得することで、入力電文に対する応答電文の電文種類を特定する。
【００５０】
次に、シミュレータ１００は、前記ステップ１００２で特定した入力電文種類、および、前記ステップ１００３で特定した応答電文種類について、記憶部１０１の辞書情報１１３を用いて該当電文の構造に関する情報を取得する（ステップ１００４）。電文の構造に関する情報の取得に際しては、図９での説明にて述べたように、入力電文の電文種類から、最上位の要素と型、その下位の要素と型、といった階層構造での階層順にメタ情報から情報を抽出する処理である。
【００５１】
続いてシミュレータ１００は、前記ステップ１００４で取得した入力電文の構造情報に基づき、入力電文で値が設定されている要素および当該要素の上位の要素の意味情報を取得する（ステップ１００５）。
【００５２】
この場合、シミュレータ１００は、例えば図５の入力電文５０１において要素名が“Ｄｏｃｕｍｅｎｔ”である要素のｉｄ属性の値を記憶部１０１に保持し、以降、前記構造における子の要素について、値が設定されている要素までの各要素名を、記憶部１０１に順に、例えばリスト構造で保持する。
【００５３】
またシミュレータ１００は、前記ステップ１００４で取得した入力電文の構造情報について、前記リスト構造の先頭要素であるｉｄ属性の値が名前９０２と一致するレコードを見つける。続いて、前記レコード中の子項目９０５の値が名前９０２の値と一致し、かつ前記リスト構造の２番目の要素の値と一致するレコードを見つける。
【００５４】
シミュレータ１００は、こうした処理を、前記リスト構造において前記値が設定されている要素まで続けることで、辞書情報１１３中での、入力電文で値が設定されている要素のレコードを特定することができる。またシミュレータ１００は、入力電文で或る要素に複数の子の要素がある場合には、それらの子の要素すべてについて同様の処理を行う。次にシミュレータ１００は、上記処理で特定した、入力電文で値が設定されている要素の親の階層をたどり（図９の説明で述べた処理）、各要素とその型、およびベースの情報をメモリ１０３に例えばリスト構造で記憶する。
【００５５】
前記ステップ１００５に続き、シミュレータ１００は、前記ステップ１００４で取得した、入力電文の値が設定されている要素と、同じ意味情報をベースとし、同じ型である要素を、応答電文において特定する（ステップ１００６）。これは、入力電文の値が設定されている要素について、その設定されている値をそのまま応答電文に設定することが可能な、応答電文の要素を特定する処理である。具体的には次のように行う。シミュレータ１００は、まず、入力電文で値が設定されている要素について、その入力電文の要素と同じ意味情報をベースとし、同じ型である応答電文の要素を特定する。これは入力電文と応答電文の辞書情報１１３によって行う。すなわち、入力電文で値が設定されている要素（辞書情報１１３で種別９０１は「要素」となっている）のレコードにおけるベース９０６、型９０３の値と、応答電文の辞書情報１１３のレコードにおけるベース９０５、型９０３と一致するような応答電文のレコードを抽出する。ただし、この抽出処理では応答電文の要素が複数抽出される場合もある。
【００５６】
例えば図５における入力電文５０１において、２つある「Ｎａｍｅ」要素の場合、応答電文６０１にも２つの「Ｎａｍｅ」要素があるが、そのいずれも辞書情報１１３においては図８に示すように型は「Ｔｅｘｔ」でありベースは業務要素：「名前」である。このような場合には、入力電文５０１の１つの「Ｎａｍｅ」要素が応答電文のいずれの「Ｎａｍｅ」要素と対応するのかを決定することが必要である。なお、図７、図８の例では「Ｎａｍｅ」要素の上位の要素を見れば対応は分かるが、要素名は電文中のその位置で要素を識別するものであり、入力電文と応答電文との間で対応を決定するためには一般には不十分である。
【００５７】
応答電文の要素が複数抽出された場合、前記ステップ１００５で取得した入力電文５０１の当該要素の上位の構造のベースと、応答電文の複数抽出された要素の上位の構造のベースとを比較する。ここで上位の構造とは、辞書情報１１３において親項目９０４の値と一致する名前９０２をたどる要素や型のつらなりにあたる（図７、図８で階層を上位にたどる処理で得る。種別９０１が「型」である項目の１つ上位の種別９０１は「要素」であり、そのさらに１つ上位の種別９０１は「型」（最上位の場合は電文）である）。図８の例では、「Ｎａｍｅ」要素は２つあるが、それぞれの上位の構造のベースは、図８の一つ目の「Ｎａｍｅ」要素については順に「業務要素：組織」、「業務関係：「組織」は「支払」の支払人」、「業務要素：名前」であり、二つ目の「Ｎａｍｅ」要素については順に、「業務要素：組織」、「業務関係：「組織」は「支払」の受取人」、「業務要素：名前」である。
【００５８】
一方、例えば入力電文５０１の一つ目の「Ｎａｍｅ」要素の上位の構造のベースは、図７に示すように順に「業務要素：名前」、「業務要素：組織」、「業務関係：「組織」は「支払」の支払人」、「業務要素：支払指示」となっている。このように、入力電文５０１の要素と応答電文６０１の要素の上位の構造のベースを下位から順に比較していくと、応答電文の一つ目の「Ｎａｍｅ」要素は「業務関係：「組織」は「支払」の支払人」まで同一であるが、応答電文６０１の二つ目の「Ｎａｍｅ」要素は同じ３番目のベースの情報が「業務関係：「組織」は「支払」の受取人」であり異なる。よってこの例では入力電文５０１の一つ目の「Ｎａｍｅ」要素は応答電文６０１の二つ目の「Ｎａｍｅ」要素と対応することを決定できる。
【００５９】
この対応の決定のためにシミュレータ１００は、前記ステップ１００５で記憶したベースの情報と、応答電文での各階層のベースを比較する。応答電文の要素が複数抽出された場合には、この比較を複数の要素それぞれに対して実行し、最も多くの階層に関して一致が続いた要素が１つのみあるとき、このときの応答電文の要素を、入力電文の値が設定されている要素と、同じ意味情報をベースとし、同じ型である要素として特定できたものとする。
【００６０】
次にシミュレータ１００は、すべての要素が空要素からなる応答電文を作成し、前記ステップ１００６で特定した応答電文の要素に、前記応答電文の要素と対応する入力電文の要素の値を設定する（ステップ１００７）。なお、応答電文の作成では、シミュレータ１００は、前記ステップ１００６で対応が確定した要素とその上位の要素（最上位の要素まで）を作成する。ここで要素を作成するとは、例えばＸＭＬの処理で一般的なＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）と呼ばれるＸＭＬを操作するためのプログラミングインターフェースを用いて、ＸＭＬの要素とその階層構造をメモリ１０３中に作成する。そして、項目が確定した応答電文の要素に、入力電文の対応する要素の値を設定する。シミュレータ１００は、すべての対応する要素の値に関して前記設定が完了したのち、メモリ１０３中のＸＭＬの要素と階層構造をＸＭＬファイル（応答電文）として出力部１０６に出力する。なお、このＸＭＬファイルの出力もＤＯＭの機能で対応可能である。
【００６１】
次に、前記ステップ１００７の処理で値が設定されなかった応答電文の要素について、シミュレータ１００は、入力部１０５からユーザによる入力を受付け、ここで受け付けた値を該当要素に設定する（ステップ１００８）。シミュレータ１００は、前記ユーザに対し、入力部１０５から値を設定するための前記要素の値候補を出力部１０６にて表示する。
【００６２】
この場合のシミュレータ１００は、作成途中の応答電文において、最も上位の要素から子を順に辿り、値が設定されていない要素（例えば要素名“ＴｒａｎｓａｃｔｉｏｎＳｔａｔｕｓ”の要素）を見つける。このとき、前記ステップ１００５の処理と同様、最上位の要素から前記値が設定されていない要素までの要素名のリスト構造を記憶部１０１に保持しているものとする。シミュレータ１００は、前記リスト構造から、前記ステップ１００５の処理と同様、該当項目のレコードが特定できる（例えば要素名“ＴｒａｎｓａｃｔｉｏｎＳｔａｔｕｓ”の要素である場合、ポインタ９０７の値が“＃３”であるレコード）。
【００６３】
続いて、シミュレータ１００は、前記レコード中のポインタ９０７の値から、値候補テーブル１１４での該当レコードを参照する。該当レコードにおいて、値候補フラグ１１０４の値が「ｎｕｌｌ」でないとき、シミュレータ１００は、値候補１１０５の値を参照し、値の候補（例えば要素名が“ＴｒａｎｓａｃｔｉｏｎＳｔａｔｕｓ”のとき、“ＡＣＣＰ、ＡＣＷＣ”などの値）を、応答電文の構造を表示に含む入力補助画面１２０１（図１２）中に表示する。図１２の例では、応答電文の構造中における該当項目（値が設定されていない要素）に関して、値の入力欄１２０２を表示させ、この入力欄１２０２を起点として、値候補欄１２０３を表示している。値候補欄１２０３は、該当項目がとりうる値の範囲をユーザが選択可能に表示した、例えば、プルダウンメニューとなる。
【００６４】
このとき、図１２において、例えば要素名が“Ｕｎｉｔ”である要素について、値候補テーブル１１４の該当レコード中のデータ型１１０６の値により、前記入力補助画面１２０１で設定する値のデータサイズが３バイト、設定する値の内容が０から９までの数字であることが分かるとき（ＩＳＯ２００２２によりデータサイズや値の属性が規定されている為）、シミュレータ１００は、値候補欄１２０４において値の入力数を制限すべく３バイト分の入力スペース１２０５のみを表示し、値の内容を制限すべく０から９までの数字１２０６のみを表示する、といった制御を行ってもよい。
【００６５】
最後にシミュレータ１００は、前記ステップ１００７および前記ステップ１００８で各要素に値を設定した応答電文を通信部１０７により、テスト対象システム２００へ送信し（ステップ１００９）、処理を終了する。
【００６６】
以上により、テスト対象システム２００から電文を受信し、シーケンス情報１１２や辞書情報１１３などのメタ情報を基に、応答電文の一部の要素に入力電文の対応する要素の値を自動的に設定し、残りの要素にユーザ指定の値を設定することで応答電文を完成させ、テスト対象システム２００へ送信する処理が実現される。
【００６７】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００６８】
こうした本実施形態によれば、電文処理のシミュレータにおける、入力電文に対する応答電文の作成を効率化できる。
【００６９】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、前記電文シミュレーションシステムにおいて、前記電文におけるデータ構造が各データによる階層構造をなすものであり、前記演算部は、前記データを特定する処理に際し、前記応答電文について前記辞書情報にてデータ構造と各データの意味の情報を取得し、該取得したデータ構造における各データの位置および意味に関して前記入力電文中で合致するデータを特定するとともに、該特定したデータの上位階層のデータについて、前記応答電文と前記入力電文との間でデータ構造における該当データの位置および意味が合致するか判定し、該上位階層のデータについても合致をみた場合に、前記特定したデータを前記応答電文における該当データの値とするものである、としてもよい。
【００７０】
また、前記電文シミュレーションシステムにおいて、前記記憶部は、各電文を構成するデータのうち値が可変であるものについて、その可変範囲の情報を更に格納しており、前記演算部は、前記応答電文を構成する各データのうち、前記入力電文より抽出した値を設定していないデータ項目について値の可変範囲の情報を記憶部より抽出し、前記応答電文における該当データ項目の表示に合わせて、前記可変範囲の情報が示す各値を選択可能に出力部にて表示し、ユーザからの値選択を入力部にて受け付け、該受け付けた選択値を応答電文における該当データ項目に設定するものである、としてもよい。
【符号の説明】
【００７１】
１００  シミュレータ（電文シミュレーションシステム）
１０１  記憶部
１０２  プログラム
１０３  メモリ
１０４  ＣＰＵ（演算部）
１０５  入力部
１０６  出力部
１０７  通信部
１１２  シーケンス情報
１１３  辞書情報
１５０  ネットワーク
２００  テスト対象システム
【図１】
2013122722.tif 000003
【図２】
2013122722.tif 000004
【図３】
2013122722.tif 000005
【図４】
2013122722.tif 000006
【図５】
2013122722.tif 000007
【図６】
2013122722.tif 000008
【図７】
2013122722.tif 000009
【図８】
2013122722.tif 000010
【図９】
2013122722.tif 000011
【図１０】
2013122722.tif 000012
【図１１】
2013122722.tif 000013
【図１２】
2013122722.tif 000014