(57)【特許請求の範囲】
【請求項１】
取得先から取得して送信先へ送信される伝票データに要求される一連の複数の処理を１つのタスクとして実行するコンピュータのための伝票処理プログラムにおいて、
前記取得先の伝票データ記憶部から取得される伝票データについて前記一連の複数の処理のうちある処理が終了したことに応じて前記ある処理で処理された前記伝票データが前記ある処理の次の処理に引渡されながら、前記一連の複数の処理が実行される過程において、前記伝票データについて前記一連の複数の処理のうち最後の処理まで終了したか否かを判定し、
前記最後の処理まで終了した場合、いくつの処理を詰めて実行しているのかを示す実行中の多重度を１だけデクリメントし、
前記実行中の多重度が最大多重度より小さいか否かを判定し、
前記実行中の多重度が前記最大多重度より小さい場合、前記伝票データ記憶部に保持される未取得分の伝票データの件数が１件以上であるか否かを判定し、
前記未取得分の伝票データの件数が１件以上である場合、前記未取得分の伝票データのうち最大取得件数の伝票データの情報、又は前記未取得分の伝票データのうち前記最大取得件数を超えるグループの切れ目までの伝票データの情報を取得し、
取得した伝票データの情報を、前記一連の複数の処理のうち、１つ以上の伝票データを集約する処理である先頭の処理に通知するとともに、前記実行中の多重度を１だけインクリメントする、
処理を前記コンピュータに実行させることを特徴とする伝票処理プログラム。
【請求項２】
前記コンピュータは、前記取得した伝票データの情報の件数が前記最大取得件数以上であるか否かを判定し、前記取得した伝票データの情報の件数が前記最大取得件数以上である場合、前記最後の処理まで終了したか否かを判定する処理以降の処理を繰り返すことを特徴とする請求項１記載の伝票処理プログラム。
【請求項３】
取得先から取得して送信先へ送信される伝票データに要求される一連の複数の処理を１つのタスクとして実行する伝票処理装置において、
前記取得先の伝票データ記憶部から取得される伝票データについて前記一連の複数の処理のうちある処理が終了したことに応じて前記ある処理で処理された前記伝票データが前記ある処理の次の処理に引渡されながら、前記一連の複数の処理が実行される過程において、前記伝票データについて前記一連の複数の処理のうち最後の処理まで終了したか否かを判定し、前記最後の処理まで終了した場合、いくつの処理を詰めて実行しているのかを示す実行中の多重度を１だけデクリメントし、前記実行中の多重度が最大多重度より小さいか否かを判定し、前記実行中の多重度が前記最大多重度より小さい場合、前記伝票データ記憶部に保持される未取得分の伝票データの件数が１件以上であるか否かを判定し、前記未取得分の伝票データの件数が１件以上である場合、前記未取得分の伝票データのうち最大取得件数の伝票データの情報、又は前記未取得分の伝票データのうち前記最大取得件数を超えるグループの切れ目までの伝票データの情報を取得し、取得した伝票データの情報を出力するとともに、前記実行中の多重度を１だけインクリメントする手段と、
出力された伝票データの情報を、前記一連の複数の処理のうち、１つ以上の伝票データを集約する処理である先頭の処理に通知する手段と、
を備えることを特徴とする伝票処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝票データ処理プログラム、伝票データ処理方法、および、伝票データ処理装置に関する。
【背景技術】
【０００２】
システム間で伝票データがやり取りされることがある。例えば、送信側システムで使用される伝票のフォーマットと受信側システムで使用される伝票のフォーマットが異なっていたり、１つの送信側システムから複数の受信側システムに伝票データを送信しなければならなかったりする場合がある。
【０００３】
このような場合、それら送信側システムと受信側システムの間に、伝票データに対する要求に沿って、その伝票データに必要な処理を行う装置が通常設けられる。
システム間では、伝票の順番を保持することが要求されることが多い。また、伝票の冗送、欠落の防止、運用を考慮したデータ保障も要求されることがある。
【０００４】
本願の発明者による特許文献１には、伝票データに一意番号と管理番号を付与して集約したデータを生成し、伝票データに対して実行される複数の処理の間では、集約したデータがやり取りされるようにするとともに、個々の処理内部では、集約したデータを単票データに分割して処理を行う技術が開示されている。
【０００５】
しかし、例えば、ＥＡＩ（Enterprise Application Integration）等の分野における、リアルタイム性に対する要求は、近年、一層厳しくなっており、さらなる伝票データの処理の高速化が望まれている。
【特許文献１】特開２００５−３０１６４４号公報  「伝票多重処理方法、プログラム及び装置」
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、伝票データに対して要求される処理を高速に行うことが可能な伝票データ処理プログラム、伝票データ処理方法、および、伝票データ処理装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の第１態様の伝票データ処理プログラムは、取得先から取得して送信先に送信される伝票データに要求される処理をコンピュータに実行させる伝票処理プログラムにおいて、前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成するステップと、前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、決定された宛先に変換されたデータを送信するステップと、前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップと、前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態を記憶する処理実行状態記憶部から削除するとともに、そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加するステップ、を前記コンピュータに実行させることを特徴とする伝票データ処理プログラムである。
【０００８】
ここで、取得先に対応するルールを実行するタスクにおいて、そのタスクが備えるそれぞれの処理ステップ（集約、変換および宛先決定、送信）のうちの、いずれかのステップの終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態を記憶する処理実行状態記憶部から削除するとともに、そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加している。これにより、１つのタスク内において、それぞれの処理ステップの実行状態を管理することができる。したがって、そのタスクが備える処理ステップ間で、例えば、詰めて処理ステップを実行することができ、伝票データの処理速度を高速化できる。
【０００９】
また、タスクの先頭の処理ステップで、処理するデータを１つに集約しているので、後続の処理ステップにおいて処理を行う場合に、その後続の処理を１回呼び出すだけで済み、処理するデータが複数存在し、その都度、その後続の処理を呼び出す場合に比較して処理速度を高速化できる。
【００１０】
さらに、複数の取得先からの伝票データを処理する場合のように、取得先の間では、処理するデータの順序を保障する必要がない場合、それら取得先に対応するタスクを非同期（並列）に実行できるので、伝票データの処理速度を高速化できる。
【００１１】
上記第１態様において、前記複数の処理実行状態記憶部はそれぞれがキューであり、そのキューに格納された最も古いデータについての情報の実行状態が待ち状態であった場合にのみ、その最も古いデータについての情報に対応するデータをその処理ステップで実行するようにしてもよい。
【００１２】
このようにすれば、１つの取得先に対応するタスク内の個々の処理において、同時に２つのデータが処理されることがなくなり、１つの取得先から取得した伝票データについては、その取得先に格納された順番を保障して、送信側システムに渡すことが可能となる。
【００１３】
本発明の第２態様の伝票データ処理方法は、取得先から取得して送信先に送信される伝票データに要求される処理をコンピュータが実行する伝票処理方法において、前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成するステップと、前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、決定された宛先に変換されたデータを送信するステップと、前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップと、前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態を記憶する処理実行状態記憶部から削除するとともに、そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加するステップ、を備えることを特徴とする伝票データ処理方法である。
【００１４】
本発明の第３態様の伝票データ処理装置は、取得先から取得して送信先に送信される伝票データに要求される処理を実行する伝票処理装置において、前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成し、かつ、実行する処理実行部を備え、前記処理実行部は、前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、決定された宛先に変換されたデータを送信するステップと、前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップを実行し、前記終了状態情報を設定するそれぞれのステップの処理実行状態を記憶する複数の処理実行状態記憶部をさらに備え、前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態記憶部から削除するとともに、そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加することを特徴とする伝票データ処理装置である。
【発明の効果】
【００１５】
本発明によれば、タスクの先頭の処理ステップで、処理するデータを１つに集約しているので、後続の処理ステップにおいて処理を行う場合に、その後続の処理を１回呼び出すだけで済み、処理するデータが複数存在し、その都度、その後続の処理を呼び出す場合に比較して処理速度を高速化できる。
【００１６】
また、本発明によれば、１つのタスク内において、それぞれの処理ステップの実行状態を管理することができる。したがって、そのタスクが備える処理ステップ間で、例えば、詰めて処理ステップを実行することができ、伝票データの処理速度を高速化できる。
【００１７】
また、本発明によれば、複数の取得先からの伝票データを処理する場合のように、取得先の間では、処理するデータの順序を保障する必要がない場合、それら取得先に対応するタスクを非同期（並列）に実行できるので、伝票データの処理速度を高速化できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
なお、以下の説明において、伝票データとは、何らかの業務を行うシステム間で送受されるデータのことをいう。社内の発注、受注、売上、等のデータの他に、図面データ等あらゆるデータが伝票データに含まれる。伝票データは、単票、すなわち、１つのデータとして存在する場合もあれば、集約されて存在する場合、すなわち、単票データの複数件が１つのデータにまとめられて存在する場合もある。
【００１９】
例えば、後述の図１の伝票データ記憶部１１１、１１２には、一般に、単票データや、集約されたデータが伝票データとして、対応するシステムから出力されて格納される。図１の処理実行部１８は、伝票データ記憶部１１１、１１２から取得した伝票データ（単票データまたは集約されたデータ）に対して、（更なる）集約処理を、適用されるルールの最初のステップで実行する。
【００２０】
図１は、本発明の一実施形態の伝票処理システムの構成を示す図である。
図１に示すように、伝票処理システムは、複数の伝票データを格納することが可能な伝票データ記憶部（伝票データ格納キュー）１１１、１１２をそれぞれ備える送信側システム１２１、１２２、前記伝票データの取得先（送信側システムの伝票データ記憶部）と、その取得先から取得した伝票データを処理後に送信する先（伝票データ記憶部）の組との対応付けに対する識別情報であるアクション、そのアクションに対して後述の処理決定部１９を介して決定された、取得先からの伝票データに対して実行する複数の処理であるルール、等の定義情報を記憶する定義情報記憶部１４、定義情報記憶部１４を基に、監視対象とする伝票データ記憶部の数だけ、その伝票データ記憶部を監視する監視プロセス（図では、監視プロセス１３１、１３２が、伝票データ記憶部１１１、１１２をそれぞれ監視するプロセスとなっている）を生成するとともに、それら生成した監視プロセスを介して、監視対象の伝票データ記憶部への伝票データの格納状況を監視する監視処理制御部１５、定義情報記憶部１４を基に、監視対象の伝票データ記憶部（伝票データの取得先）に対応するアクションに対し、その取得先からの伝票データに対して実行することが可能な、それぞれが複数の処理であるルールを１以上提示し、ユーザの指示を介してその１以上のルールのいずれかを実行するルール（複数の処理）として決定する、ユーザインターフェイスである処理決定部１９、あるアクションの伝票データに対する処理の開始時（その伝票データの初回の取得時）には、伝票データに対して決定された処理を実行するタスク（図では、タスク１７１が、伝票データ記憶部１１１から取得した伝票データに対して実行されるタスクであり、タスク１７２が、伝票データ記憶部１１２から取得した伝票データに対して実行されるタスクである）を、監視処理制御部１５の監視プロセスから通知された取得した１以上の伝票データについての情報、および、定義情報記憶部１４を基に生成するとともに、初回および初回以降の伝票データの取得時には、監視処理制御部１５の監視プロセスから通知された取得した１以上の伝票データについての情報を、生成したタスク内の対応する処理に通知する、タスク生成部１６、タスク生成部１６によって生成されたタスクを実行するとともに、そのタスクの処理結果の伝票データを受信側システム（不図示）の伝票データ記憶部（不図示）に送信する処理実行部１８、を備える。
【００２１】
なお、伝票データ記憶部１１１、１１２は、複数の伝票データを格納順が先のものから先に出すキュー（ＦＩＦＯ（First-In First-Out））である。
アクションに対応して生成されるタスクを構成する個々の処理は、その多くが定型的な処理であるとともに、処理順についても代表的なパターンが決まっている。
【００２２】
図２は、図１の処理決定部１６がアクションに対応して実行する複数の処理（適用するルール）の一例を示した図である。すなわち、そのアクションに対応する送信側システムの伝票データ記憶部から取得した伝票データに対して、処理決定部１６が実行する複数の処理（適用するルール、タスク）の一例を示した図である。
【００２３】
図２において、「集約」とは、送信側システムの伝票データ記憶部から取得した１以上の伝票データをまとめて１つのデータにすることである。なお、取得される個々の伝票データは、単票データの場合もあれば、複数件の単票データが集約されたデータの場合もある。また、「分割」とは、集約されたデータを単票データに分割することをいう。
【００２４】
「変換」とは、送信側システムで使用されるデータのフォーマットと受信側システムで使用されるデータのフォーマットが異なる場合等に、受信側システムのフォーマットに揃えるように、送信側システムのデータフォーマットを変換することである。
【００２５】
「振分」とは、伝票データの送信先が複数存在する場合（伝票データに含まれる単票データ毎に送信先が異なる場合を含む）に、送信先毎に単票データをまとめたり、または、指定された複数の送信先にデータをブロードキャストする場合に、送信先の数だけ、それぞれのデータをコピーして生成したりすることである。
【００２６】
「送信」とは、「指定された送信先」に処理された伝票データを送信することである。
ここで、「指定された送信先」とは、上述したように、送信側システムの１つの伝票データ記憶部と、受信側システムの１以上の伝票データ記憶部とのリンクに対する識別情報であるアクション中に指定される送信先のいずれかである。
【００２７】
処理実行部１８による処理時には、この「指定された送信先」情報は、「振分」または「変換」処理の処理結果のデータ中に初めて設定される。例えば、振分処理において、伝票データに含まれる社名を参照して送信先を決定する場合などである。
【００２８】
なお、上述の「集約」、「分割」、「変換」、「振分」、「送信」のそれぞれの処理は、すべてのルールにおいて共通のものが用いられる。「集約」、「分割」、「変換」、「振分」、「送信」のそれぞれの処理は、どの引数の組が渡されたかによって自身がどのルールに属するのかを認識する。
【００２９】
例えば、図１では、伝票データ記憶部１１１から取得した伝票データに対しては、データ集約処理、データ振分処理、データ変換処理、データ送信処理が実行される。このうち、データ集約処理、データ変換処理、データ送信処理については、タスク１７１のものが用いられる場合もあれば、タスク１７２のものが用いられる場合もある。処理実行部１８によって指示された方のタスクの処理によって、データ集約処理、データ変換処理、データ送信処理は実行されることになる。
【００３０】
図３Ａは、図１の定義情報記憶部１４のデータ構造を示す図（その１）である。
図３Ａに示すように、定義情報記憶部１４は、アクション名、入力キュー名、最大多重度、最大取得件数、時間幅、の各項目を備える。
【００３１】
ここで、「アクション名」とは、上記したように、１つの入力キュー（送信側システムの伝票データ記憶部）と、１以上の出力キュー（受信側システムの伝票データ記憶部）とのリンクに対する識別情報である。
【００３２】
「入力キュー名」とは、そのアクションに対応する入力キューの識別情報（ＩＤ、または、番号）である。「最大多重度」の項目には、適用するルール（処理実行部１８上に生成されるタスク）が備えるステップ数が設定される。
【００３３】
例えば、あるアクションの伝票データ「Ｄａｔａ１」に対して、そのアクションに対応するルール内の処理ステップＡが終了した場合、その伝票データに、そのルール内の次の処理ステップである処理ステップＢを実行させ、その伝票データの後続の伝票データ「Ｄａｔａ２」に、処理ステップＡを実行させるようにする。このように考えると、アクションに対応するルールが備える処理ステップの数だけ、そのアクションの入力キュー内から取得したデータのかたまりを詰めて処理することができる。上記「最大多重度」とは、そのルール（タスク）に同時に何個の処理まで詰めて実行できるかを示す値である。その値は、通常、処理ステップの数に一致する。
【００３４】
「最大取得件数」は、入力キュー（送信側システムの伝票データ記憶部）から取得される伝票データの件数の上限値である。この値は、取得される伝票データがグループ属性を持つ場合には変更されることがある。
【００３５】
「時間幅」は、入力キューにそれほど伝票データがたまっていないと思われる場合に、どの位経ってからその入力キューに対する監視を再開するかを示す値である。
図３Ｂは、図１の定義情報記憶部１４のデータ構造を示す図（その２）である。
【００３６】
図３Ｂでは、アクションとルールとの対応が示されている。入力キュー（ＱＵＥＵＥ００１）と、出力キュー（ＱＵＥＵＥ００２、ＱＵＥＵＥ００３）とのリンクに対して、アクション（ＡＣＴ００１）という識別情報が付与されていること、ユーザがユーザインターフェイス（図１の処理決定部１６）を介して、このアクションと、ルール（ＲＵＬＥ００１）を対応付けたことが例えば、図３Ｂには示されている。
【００３７】
図３Ｂのアクション（ＡＣＴ００１）では、データを受信するキューが２つ（ＱＵＥＵＥ００２、ＱＵＥＵＥ００３）存在するので、例えば、図２に示したルール中で、「振分」処理を含むようなルールの一覧が、処理決定部１６によって、ユーザに提示され、その一覧中のいずれかのルールがユーザによって選択される。
【００３８】
なお、図３Ｂからは定かでないが、ルール名の項目に設定されるそれぞれのルールは、そのルールが備える複数の処理、および、それら処理の実行順を示す情報とリンクされている。
【００３９】
再び、図１の説明に戻る。
図１の処理実行状態記憶部２１は、同一名称の処理については、その処理が属するタスクを問わず、その処理の実行状態を、それぞれの処理実行状態記憶部（集約処理実行状態記憶部２３１、振分処理実行状態記憶部２３２、変換処理実行状態記憶部２３３、送信処理実行状態記憶部２３４）に記憶する。すなわち、処理実行状態記憶部２１は、処理実行部１８が実行する１以上のタスク内の全ての処理の状態を記憶する。
【００４０】
図４は、図１の処理実行状態記憶部２１をより詳細に示す図である。
図４に示すように、それぞれの処理実行状態記憶部は、アクション名、到着時刻、実行状態、データへのポインタ、データについての情報へのポインタ、の各項目によって構成される。図のそれぞれの行は、それぞれの処理において、処理中の、または、処理することになるデータについての情報である。
【００４１】
ここで、「実行状態」の項目には、「実行中（running）」または「待ち（wait）」の２つの状態のいずれかが設定される。また、「データへのポインタ」は、１つ前の処理における処理結果のデータの先頭アドレスである。
【００４２】
すなわち、「実行状態」の項目の値が「実行中」である場合は、「データへのポインタ」の項目に先頭アドレスが設定されるデータに対する現処理ステップでの処理が実行中であることを意味し、「実行状態」の項目の値が「待ち」である場合は、「データへのポインタ」の項目に先頭アドレスが設定されるデータに対する現処理ステップでの処理がまだ実行されていない（実行待ちである）ことを意味している。
【００４３】
例えば、集約処理、変換処理、送信処理は、２つのアクション（ＡＣＴ００１、ＡＣＴ００２）に共通なので、それら集約処理、変換処理、送信処理の実行状態記憶部（実行状態格納キュー）には、アクションＡＣＴ００１と、アクションＡＣＴ００２のデータが存在するが、振分処理はアクションＡＣＴ００１にしか存在しないので、振分処理の実行状態記憶部（実行状態格納キュー）には、アクションＡＣＴ００１のデータしか存在しない。
【００４４】
なお、「到着時刻」は、その行（データについての情報）が、対応する処理の処理実行状態記憶部に書き込まれた時刻を示す項目である。また、「データについての情報へのポインタ」は、到着時刻順に、それぞれの行の間に張られたポインタである。このポインタにより、それぞれの処理に対応する処理実行状態記憶部は、キューを構成することができる。
【００４５】
図５は、送信側システムの伝票データ記憶部に格納される伝票データのデータ構造を示す図である。
図５に示すように、送信側システムの伝票データ記憶部においては、伝票データは、メッセージヘッダと、メッセージから構成される。
【００４６】
メッセージヘッダ内のメッセージ識別子は、その伝票データに対して一意に付与される識別子（番号）である。この識別子は、送信側システムの伝票データ記憶部（入力キュー）を管理するキュー管理部（図１では不図示）によって、その伝票データのヘッダの対応部分に書き込まれる。
【００４７】
また、メッセージヘッダ内のトランザクション終了表示は、その伝票データがグループ属性を有するかどうかを指定するフラグ情報であるとともに、グループ属性を有する場合には、その同じグループに属する後続の伝票データがあるかどうかを示すフラグ情報である。すなわち、トランザクション終了表示は、下記の３つの値をとりうる。
＝初期化時の値：その伝票データは、グループ属性を有さない。
＝０：その伝票データは、グループ属性を有するとともに、その同じグループに属する後続の伝票データが存在する。
＝１：その伝票データは、グループ属性を有するとともに、そのグループは、この伝票データで終了する。
【００４８】
図６は、図１の監視処理制御部１５が実行する監視処理のフローチャートである。監視処理制御部１５は、アクション毎に監視プロセスを起動するが、このフローチャートは、そのアクション毎に起動された監視プロセスによって実行される。
【００４９】
図６において、まず、ステップＳ１０１で、監視プロセスは、メモリ上の予め定められた位置にあるフラグ情報を参照することで、同じアクション内の先行するデータについて最後の処理（送信処理）まで終了したかどうかを調べる。このメモリ上の位置に、その先行するデータが送信処理まで終了したことを示すフラグが設定されていた場合、監視プロセスは、実行するものと決定された複数の処理のうち、いくつの処理を現在詰めて実行しているのかを示す多重度を１つだけデクリメントする。
【００５０】
続く、ステップＳ１０２では、現在の多重度が最大多重度より小さいかが判定される。
ステップＳ１０２において、現在の多重度が最大多重度以上であると判定された場合、ステップＳ１０８において、所定時間、アイドル状態を経た後、再び、ステップＳ１０１に戻る。
【００５１】
一方、ステップＳ１０２において、現在の多重度が最大多重度より小さいと判定された場合、ステップＳ１０３において、送信側システム１２の伝票データ記憶部１１に保持される伝票データ（未取得分）の件数を取得する。
【００５２】
そして、ステップＳ１０４で、その取得した件数が１件以上あるかどうかが判定される。
ステップＳ１０４で、取得した件数が０件、すなわち、伝票データ記憶部１１に新規の伝票データが１件もないと判定された場合、ステップＳ１０８において、所定時間、アイドル状態を経た後、再び、ステップＳ１０１に戻る。
【００５３】
一方、ステップＳ１０４で、取得した件数が１件以上あると判定された場合、ステップＳ１０５で、伝票データ記憶部１１に保持される新規の伝票データについての情報を、最大取得件数を限度として取得する。ただし、伝票データにグループ属性が付与されている場合は、最大取得件数を超えたグループの最初の切れ目（その切れ目が最大取得件数に一致する場合は最大取得件数）までの新規の伝票データについての情報を取得する。
【００５４】
そして、ステップＳ１０６でその取得した新規の伝票データについての情報を、タスク生成部１６に通知するとともに、上述の多重度を１つだけインクリメントする。
ステップＳ１０７では、ステップＳ１０５で取得した新規の伝票データの件数が最大取得件数以上であるかどうかが判定される。
【００５５】
ステップＳ１０７で、ステップＳ１０５で取得した新規の伝票データの件数が最大取得件数より小さいと判定された場合、ステップＳ１０８において、所定時間、アイドル状態を経た後、再び、ステップＳ１０１に戻る。
【００５６】
一方、ステップＳ１０７で、ステップＳ１０５で取得した新規の伝票データの件数が最大取得件数以上であると判定された場合、ステップＳ１０８を介することなく、直ちに、ステップＳ１０１の処理に戻る。これは、ステップＳ１０５で最大取得件数以上の件数のデータが取得されたということは、伝票データ記憶部１１にはまだ処理待ちの伝票データが蓄積されている可能性があると考えられるためである。
【００５７】
なお、ステップＳ１０６で、取得した新規の伝票データについての情報を、通知されたタスク生成部１６は、以下のような処理を実行する。
１．その新規の伝票データについての情報の取得が、対象とするアクションの開始時のものであった場合は、その新規の伝票データについての情報および定義情報記憶部１４を基に、そのアクションに対応するルールを実行するタスクを生成するとともに、その通知された新規の伝票データについての情報を、その生成したタスクの先頭の処理（集約処理）に通知する。集約処理は、その通知された情報に含まれる新規の伝票データを送信側システムの伝票データ記憶部から取得する。
２．その新規の伝票データについての情報の取得が、対象とするアクションの開始時のものでない場合は、タスク生成部１６は、その通知された新規の伝票データについての情報を、対応するタスクの先頭の処理（集約処理）に通知する。
【００５８】
図７は、タスクのそれぞれの処理ステップが終了した場合に、図１の処理実行部１８が行う処理を示すフローチャートである。
なお、タスク内のそれぞれの処理（集約処理、振分処理、分割処理、変換処理、送信処理、等）は、処理終了時に、自身の終了状態を示すフラグ情報を、メモリ上の予め定められたアドレスに設定する。処理実行部１８は、実行中の１以上のタスクに含まれる全ての処理の終了状態のフラグの組（リスト）を、ステップＳ２０１において取得する。
【００５９】
そして、ステップＳ２０２において、その取得した終了状態のフラグのリストに含まれる個々のフラグ情報について、その値が正常終了であるかどうかを判定する。
ステップＳ２０２で、正常終了と判定されないフラグが存在した場合、すなわち、エラー終了した処理が存在した場合、ステップＳ２０３において、処理実行部１８は、そのエラー終了した処理が属するタスクにおいて、そのエラー終了した処理以前の処理（入力キューからの伝票データの取り出しを含む）を中断する。ユーザによって、エラーの修復が行われた後に、このタスクは、そのエラー終了した処理が処理していたデータの位置から再開される。
【００６０】
そして、（実行中の他のタスクが存在する場合は、）ステップＳ２０１に戻る。
一方、ステップＳ２０２で、正常終了と判定されたフラグが存在した場合、ステップＳ２０４において、処理実行部１８は、その正常終了した処理の処理実行状態記憶部（実行状態格納キュー）から、その正常終了した処理で処理していたデータについての情報を削除する。
【００６１】
そして、ステップＳ２０５において、処理実行部１８は、その正常終了した処理が属するタスク内でのそれぞれの処理の実行順を基に、次の処理の処理実行状態記憶部（実行状態格納キュー）の末尾に、その正常終了した処理で処理したデータについての情報を追加する。そして、ステップＳ２０１に戻る。
【００６２】
これにより、１つのタスク内において、それぞれの処理ステップの実行状態を管理することができ、したがって、そのタスクが備える処理ステップ間で、例えば、詰めて処理ステップを実行することができ、伝票データの処理速度を高速化できる。
【００６３】
なお、図８には、送信処理においてエラーが発生した場合が示されている。すなわち、（１）で、送信処理においてエラーが発生したことが、その終了状態フラグを基に判定されると、（２）で、そのエラー終了した処理（送信処理）が属するタスクの後続の処理を中断するとともに、（３）で、そのエラー終了した処理（送信処理）が属するタスクの集約処理が、そのタスクの入力キュー（送信側システムの伝票データ記憶部、送信側伝票データ格納キュー）から伝票データを取得することを中断する。
【００６４】
なお、図８に示されるように、伝票データに対して行われる処理の中にはチェック処理という処理もある。このチェック処理では、例えば、請求書データを伝票データとして処理する場合、請求金額と、単価および数量の間に整合性がとれているか等がチェック処理においてチェックを行う項目になりうる。チェック処理で行うチェックの内容は、通常、どのような種類の伝票データを処理するかに依存する。
【００６５】
図９は、タスクが備えるそれぞれの処理ステップが実行する処理のフローチャートである。
図９において、まず、ステップＳ３０１で、対応する実行状態格納キュー（処理実行状態記憶部）内のそれぞれのアクションのデータについての情報を検索する。そして、それぞれのアクションについて、そのアクションのデータについての情報のうちで、図４の到着時刻が最も古いものの、実行状態に設定された値に応じて処理を分岐する。
【００６６】
すなわち、ステップＳ３０１において、そのアクションの最も古い到着時刻を持つデータについての情報の実行状態が「実行中」であれば、ステップＳ３０５において、所定時間、アイドル状態を経た後、再び、ステップＳ３０１に戻る。
【００６７】
ステップＳ３０１において、そのアクションの最も古い到着時刻を持つデータについての情報の実行状態が「待ち」であれば、ステップＳ３０２において、そのアクションの最も古い到着時刻を持つデータについての情報の実行状態を「実行中」に変更し、ステップＳ３０３において、ステップＳ３０２で、実行状態を「実行中」に変更した（実行状態格納キュー中の）データについての情報に対応するデータを入力して、自身の処理において行うべき処理（集約、振分、変換、送信、等）を実行する。
【００６８】
そして、その行うべき処理が終了すると、ステップＳ３０４において、その終了状態のフラグをメモリ上の予め定められた位置（アドレス）に設定し、ステップＳ３０５において、所定時間、アイドル状態を経た後、再び、ステップＳ３０１に戻る。
【００６９】
なお、ステップＳ３０１で、対応する実行状態格納キュー内にデータについての情報がない場合も、ステップＳ３０５に進む。
このように、アクション毎に、実行状態格納キューに格納された最も古いデータについての情報の実行状態が「待ち」状態であった場合にのみ、その最も古いデータについての情報に対応するデータをその処理ステップで実行するようにしている。これにより、１つのアクションに対応するタスク内の個々の処理において、同時に２つのデータが処理されることがなくなり、送信側システムの１つの伝票データ記憶部から取得した伝票データについては、その伝票データ記憶部に格納された順番を保障して、送信側システムに渡すことが可能となる。
【００７０】
図１０Ａは、集約処理、振分処理、変換処理、送信処理を備えるタスクが、集約処理の結果として出力するデータのデータ構造を示す図である。
図１０Ａに示されるように、集約処理の結果のデータは、宛先、ヘッダ部、データ部分を備える。
【００７１】
図１０Ａでは、送信側システムの伝票データ格納キューから５つの伝票データ（それぞれのＩＤ（伝票一意番号）は、Ａ００００１、Ｂ０００１１、Ｂ０００１２、Ｂ０００１３、Ａ００００２で与えられる）が取得されて、集約処理において１つのデータに集約された場合が示されている。この５つの伝票データのうち、ＩＤが「Ｂ０００１１」、「Ｂ０００１２」、「Ｂ０００１３」で示される伝票データは、いずれもグループ番号Ｇ００００１００のグループに属している。また、この５つの伝票データに含まれるデータ部分（例えば、業務データ）は、固定長、可変長いずれの場合もあるが、制御文字（図は、改行文字であるが、改行文字列の代りにデータ長を設定することで、伝票の区切りを識別する場合がある。）によって区切られている。なお、集約処理の時点では、通常、宛先の項目に有効なデータは設定されない。
【００７２】
また、図１０Ａでは、データ部分の項目「伝票１」、「伝票２」、「伝票３」、「伝票４」、「伝票５」は、それぞれＩＤ＝Ａ００００１、Ｂ０００１１、Ｂ０００１２、Ｂ０００１３、Ａ００００２を持つ伝票データのデータ部分を表している。
【００７３】
図１０Ｂは、集約処理、振分処理、変換処理、送信処理を備えるタスクが、振分処理の結果として出力するデータのデータ構造を示す図である。
図１０Ｂでは、振分処理の結果として、図１０Ａのデータに含まれる５つの伝票データが、宛先「ｏｕｔｎｏｄｅ１」に送信される３つの伝票データ（Ｂ０００１１、Ｂ０００１２、Ｂ０００１３のＩＤを持つ３つの伝票データ）と、宛先「ｏｕｔｎｏｄｅ２」に送信される２つの伝票データ（Ａ００００１、Ａ００００２のＩＤを持つ２つの伝票データ）に振り分けられたことが示されている。
【００７４】
この振分処理時に、例えば、データ部分に含まれる、会社名等を参照して、宛先（出力キュー）が設定される。なお、宛先の設定処理は、振分処理または変換処理時に通常行われるが、振分処理と変換処理をともに備えるタスクでは、例えば、振分処理で決定した宛先を優先する。
【００７５】
図１０Ｃは、集約処理、振分処理、変換処理、送信処理を備えるタスクが、変換処理の結果として出力するデータのデータ構造を示す図である。
図１０Ｃでは、ＩＤ＝Ｂ０００１１、Ｂ０００１２、Ｂ０００１３を持つ伝票データのデータ部分が、「伝票２」、「伝票３」、「伝票４」から、この変換処理の結果、「伝票２’」、「伝票３’」、「伝票４’」に変換されている。また、ＩＤ＝Ａ００００１、Ａ００００２を持つ伝票データのデータ部分が、「伝票１」、「伝票５」から、この変換処理の結果、「伝票１’」、「伝票５’」に変換されている。なお、データ部分のデータの値、位置、長さ、文字コード等が変換処理によって変わる場合がある。
【００７６】
なお、図１０Ｃの変換処理後のデータは、送信処理によって、宛先以外の部分が、宛先に示される送信先に送信される。この例では、２つの送信先に対して、伝票データを集約して（１つのデータとして）送信しているが、この他に、ルール（タスク）によっては、伝票データを単票データに分割して送信先に送信する場合がある。
【００７７】
図１１は、図１のシステムの動作を説明する図である。
図１１では、送信側システムに設けられた入力キュー３１、３２から監視処理制御部１５を介して取り出されたデータが処理実行部１８において並列（非同期）に処理されている。入力キュー３１に対応するアクションと、入力キュー３２に対応するアクションは別のアクションであるので、このような非同期な処理の実行が可能となる。
【００７８】
以上では、図１１に示すように、複数の入力キューから取り出された伝票データを実行制御部１８で非同期に実行する場合を説明した。しかし、対象とする入力キューが１つしか存在しない場合も当然ありうる。そのような場合、１つの入力キューから取り出された伝票データについてのみ、実行制御部１８で対応するタスクを実行してもよいことは言うまでもない。
【００７９】
図１２は、記憶媒体例を示す図である。
本発明の伝票データに対して行う各種処理は、情報処理装置６１によって実現することが可能である。本発明の処理のためのプログラムやデータは、情報処理装置６１の記憶装置６５から情報処理装置６１のメモリにロードして実行することも、可搬型記憶媒体６３から情報処理装置６１のメモリにロードして実行することも、外部記憶装置６２からネットワーク６６を介して情報処理装置６１のメモリにロードして実行することも可能である。
【００８０】
本発明は下記構成でもよい。
（付記１）  取得先から取得して送信先に送信される伝票データに要求される処理をコンピュータに実行させる伝票処理プログラムにおいて、
前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成するステップと、
前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、
集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、
決定された宛先に変換されたデータを送信するステップと、
前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップと、
前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態を記憶する処理実行状態記憶部から削除するとともに、
そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加するステップ、を前記コンピュータに実行させることを特徴とする伝票データ処理プログラム。
（付記２）  前記複数の処理実行状態記憶部はそれぞれがキューであり、そのキューに格納された最も古いデータについての情報の実行状態が待ち状態であった場合にのみ、その最も古いデータについての情報に対応するデータをその処理ステップで実行することを特徴とする付記１記載の伝票データ処理プログラム。
（付記３）  前記伝票データの取得先を監視し、その取得先に新規に格納された伝票データについての情報を前記集約ステップに通知するステップ、をさらに備え、
通知された新規に格納された伝票データを取得先から取得して、前記集約ステップが実行されることを特徴とする付記１記載の伝票データ処理プログラム。
（付記４）  処理するデータに含まれる伝票データの送信先が複数存在する場合に、送信先毎に伝票データを集約する第１の振分ステップ、をさらに備えることを特徴とする付記１記載の伝票データ処理プログラム。
（付記５）  複数の送信先に処理するデータをブロードキャストする場合に、送信先の数だけ、それぞれのデータをコピーして生成する第２の振分ステップ、をさらに備えることを特徴とする付記１記載の伝票データ処理プログラム。
（付記６）  取得先から取得して送信先に送信される伝票データに要求される処理をコンピュータが実行する伝票処理方法において、
前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成するステップと、
前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、
集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、
決定された宛先に変換されたデータを送信するステップと、
前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップと、
前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態を記憶する処理実行状態記憶部から削除するとともに、
そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加するステップ、を備えることを特徴とする伝票データ処理方法。
（付記７）  前記複数の処理実行状態記憶部はそれぞれがキューであり、そのキューに格納された最も古いデータについての情報の実行状態が待ち状態であった場合にのみ、その最も古いデータについての情報に対応するデータをその処理ステップで実行することを特徴とする付記６記載の伝票データ処理方法。
（付記８）  前記伝票データの取得先を監視し、その取得先に新規に格納された伝票データについての情報を前記集約ステップに通知するステップ、をさらに備え、
通知された新規に格納された伝票データを取得先から取得して、前記集約ステップが実行されることを特徴とする付記６記載の伝票データ処理方法。
（付記９）  取得先から取得して送信先に送信される伝票データに要求される処理を実行する伝票処理装置において、
前記伝票データの取得先と、取得先からの伝票データに対して実行する複数の処理であるルールを対応付けた、伝票データ取得先・実行処理ステップ記憶部を基に、前記取得先に対応するルールを実行するタスクを生成し、かつ、実行する処理実行部を備え、
前記処理実行部は、前記タスクの実行時に、前記伝票データの取得先から１以上の伝票データを取得して１つのデータに集約するステップと、
集約されたデータを変換するとともに、その集約されたデータの内容を基に、宛先を決定するステップと、
決定された宛先に変換されたデータを送信するステップと、
前記集約、変換および宛先決定、送信のそれぞれのステップの処理の終了状態情報を記憶手段上の予め定められた位置に設定するステップを実行し、
前記終了状態情報を設定するそれぞれのステップの処理実行状態を記憶する複数の処理実行状態記憶部をさらに備え、
前記終了状態情報を設定するそれぞれのステップのうちの、いずれかのステップが終了し、その終了状態情報が正常終了であった場合に、そのステップで処理したデータについての情報を、そのステップの処理実行状態記憶部から削除するとともに、
そのステップで処理したデータについての情報を、そのステップの次のステップの処理実行状態記憶部に追加することを特徴とする伝票データ処理装置。
（付記１０）  前記複数の処理実行状態記憶部はそれぞれがキューであり、そのキューに格納された最も古いデータについての情報の実行状態が待ち状態であった場合にのみ、前記処理実行部は、その最も古いデータについての情報に対応するデータをその処理ステップで実行することを特徴とする付記９記載の伝票データ処理装置。
（付記１１）  前記伝票データの取得先を監視し、その取得先に新規に格納された伝票データについての情報を前記集約ステップに通知する監視部をさらに備え、
前記処理実行部は、通知された新規に格納された伝票データを取得先から取得して、前記集約ステップが実行されることを特徴とする付記９記載の伝票データ処理装置。
【図面の簡単な説明】
【００８１】
【図１】本発明の一実施形態の伝票処理システムの構成を示す図である。
【図２】図１の処理決定部がアクションに対応して実行する複数の処理（適用するルール）の一例を示した図である。
【図３Ａ】図１の定義情報記憶部のデータ構造を示す図（その１）である。
【図３Ｂ】図１の定義情報記憶部のデータ構造を示す図（その２）である。
【図４】図１の処理実行状態記憶部をより詳細に示す図である。
【図５】送信側システムの伝票データ記憶部に格納される伝票データのデータ構造を示す図である。
【図６】図１の監視処理制御部が実行する監視処理のフローチャートである。
【図７】タスクのそれぞれの処理ステップが終了した場合に、図１の処理実行部が行う処理を示すフローチャートである。
【図８】送信処理においてエラーが発生した場合に、図１の処理実行部が行う処理を説明する図である。
【図９】タスクが備えるそれぞれの処理ステップが実行する処理のフローチャートである。
【図１０Ａ】集約処理、振分処理、変換処理、送信処理を備えるタスクが、集約処理の結果として出力するデータのデータ構造を示す図である。
【図１０Ｂ】集約処理、振分処理、変換処理、送信処理を備えるタスクが、振分処理の結果として出力するデータのデータ構造を示す図である。
【図１０Ｃ】集約処理、振分処理、変換処理、送信処理を備えるタスクが、変換処理の結果として出力するデータのデータ構造を示す図である。
【図１１】図１のシステムの動作を説明する図である。
【図１２】記憶媒体例を示す図である。
【符号の説明】
【００８２】
１１  伝票データ記憶部
１２  送信側システム
１３  監視プロセス
１４  定義情報記憶部
１５  監視処理制御部
１６  処理決定部
１７  タスク
１８  処理実行部
２１  処理実行状態記憶部
３１、３２  入力キュー（送信側システムの伝票データ記憶部）
【図１】
0005226189.tif 000002
【図２】
0005226189.tif 000003
【図３Ａ】
0005226189.tif 000004
【図３Ｂ】
0005226189.tif 000005
【図４】
0005226189.tif 000006
【図５】
0005226189.tif 000007
【図６】
0005226189.tif 000008
【図７】
0005226189.tif 000009
【図８】
0005226189.tif 000010
【図９】
0005226189.tif 000011
【図１０Ａ】
0005226189.tif 000012
【図１０Ｂ】
0005226189.tif 000013
【図１０Ｃ】
0005226189.tif 000014
【図１１】
0005226189.tif 000015
【図１２】
0005226189.tif 000016