(57)【要約】【課題】メッセージを受信して連結する処理の迅速化を図る。【解決手段】順序管理部１２は、キュー１１１から取り出したメッセージが、連結可能メッセージのいずれかであるかを判定する際にキュー１２１にメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージをキュー１２１に格納し、キュー１１１またはキュー１２１から取り出したメッセージを連結に使用する場合は、ステータス１００の現在の値に状態遷移表１３で対応づけられている連結後ステータス値でステータス１００を更新する。【選択図】      図１
2004200796.tif 000002
【特許請求の範囲】
【請求項１】
受信したメッセージを先入れ先出し式のキューに格納した上で該キューから取り出したメッセージを連結するメッセージ受信連結装置において、
最も近い過去に連結に使用されたメッセージで決まる状態変数のなり得る値のそれぞれに対し、前記状態変数が当該値のときに連結での使用が可能なメッセージである連結可能メッセージが対応づけられ、この連結可能メッセージに対し、当該連結可能メッセージが連結に使用された後の前記状態変数の値である連結後ステータス値が対応づけられる状態遷移表と、
前記キューから取り出したメッセージが前記状態変数の現在の値に前記状態遷移表で対応づけられている連結可能メッセージのいずれかである場合は当該メッセージを連結に使用する一方いずれでもない場合は当該メッセージを他の先入れ先出し式のキューに格納し、前記連結可能メッセージのいずれかであるかを判定する際に前記他のキューにメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが前記連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージを前記他のキューに格納し、前記キューまたは前記他のキューから取り出したメッセージを連結に使用する場合は、前記状態変数の現在の値に前記状態遷移表で対応づけられている連結後ステータス値で当該状態変数を更新する手段と
を備えることを特徴とするメッセージ受信連結装置。
【請求項２】
前記状態遷移表は、前記状態変数のなり得る値の少なくとも１つには複数の連結可能メッセージが対応づけられたものであることを特徴とする請求項１記載のメッセージ受信連結装置。
【請求項３】
コンピュータのハードウェアを機能させて請求項１または２記載のメッセージ受信連結装置を構成させるコンピュータプログラム。
【請求項４】
コンピュータのハードウェアを機能させて請求項１または２記載のメッセージ受信連結装置を構成させるコンピュータプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メッセージを受信して連結する処理の迅速化を図ったメッセージ受信連結装置、プログラム及び記録媒体に関する。
【０００２】
【従来の技術】
送信の際に順序番号を付されないで到来した複数のメッセージを受信して送信の順序通りに連結するには、受信側で予めメッセージの連結の順序を記憶しておけばよい。かかる場合にあって、到来したメッセージの格納にはＦＩＦＯ（First In First Out)式のキューが用いられる。
【０００３】
このような処理は、送信側における負荷軽減を目的として行われる。すなわち、送信の順序通りに連結するには送信の際に順序番号を付与すればよいが、送信側で順序番号を付けるのは負荷が多くかかるのである。
【０００４】
かかる処理では、メッセージがキューから取り出され、連結に使用可能か否かが前記記憶された順序により判定され、連結に使用できない場合は、再びキューに戻された上で、他のメッセージの判定後における再判定を待つことになる。
【０００５】
かかる技術は下記の非特許文献１に掲載されている。
【０００６】
【非特許文献１】
[1] Masayoshi Shimamura et al.  ebXML Reliable Messaging Specificationv0-088. ebXML initiative 2000
<http://lists.ebxml.org/archives/ebxml-transport/200011/pdf00006.pdf>
【０００７】
【発明が解決しようとする課題】
しかしながら、このキューがＦＩＦＯ式であるため、キューにおけるメッセージの蓄積状況によっては、戻されたメッセージの再判定のタイミングが大きく遅れることになる。
【０００８】
例えば、「山田さんは」には「商品Ａを」または「商品Ｂ」を後続させ、「商品Ａを」には「注文した」を、「商品Ｂ」には「キャンセルした」をそれぞれ後続させ、その後「顧客番号はＸＸＸである」を後続させるように受信装置に情報が記憶された上で、送信装置からは「山田さんは」、「商品Ａを」、「注文した」、「顧客番号はＸＸＸである」という順でメッセージが送信され、キューには「山田さんは」、「注文した」、「商品Ａを」、「顧客番号はＸＸＸである」という順で格納されたことにする。
【０００９】
受信装置は、最初に取り出した「山田さんは」は、記憶された連結の順序によれば先頭のメッセージなのでキューに戻さずに、続いて、「注文した」を取り出す。この２番目に取り出した「注文した」は、記憶された連結の順序によれば「山田さんは」に後続できないのでキューに戻す。３番目には「商品Ａを」を取り出し、記憶された連結の順序により「山田さんは」に後続させる。４番目には「顧客番号はＸＸＸである」を取り出し、記憶された連結の順序によれば「商品Ａを」後続できないのでキューに戻す。５番目には「注文した」を取り出し、記憶された連結の順序により「商品Ａを」に後続させる。最後の６番目には「顧客番号はＸＸＸである」を取り出し、記憶された連結の順序により「注文した」に後続させる。
【００１０】
したがって、「顧客番号はＸＸＸである」までがキューに格納されてしまうと、「商品Ａを」の再判定のタイミングは、この「顧客番号はＸＸＸである」よりも後になってしまう。しかも、「商品Ａを」を連結するまでは、「顧客番号はＸＸＸである」を連結することは出来ないので、「顧客番号はＸＸＸである」の判定は無駄ということになる。
【００１１】
これは単なる例であるが、「顧客番号はＸＸＸである」の後に更に多くのメッセージが格納されてしまうと、「商品Ａ」の再判定のタイミングは更に遅れ、その間にも多くの無駄な判定が行われ、その結果、メッセージの連結完了が遅れることになる。
【００１２】
そこで本発明は、上記の従来の課題に鑑みてなされたものであり、その目的とするところは、受信したメッセージをＦＩＦＯ式のキューに格納した上でキューから取り出したメッセージを予め記憶された順序通りに連結する処理の迅速化を図ったメッセージ受信連結装置、プログラム及び記録媒体を提供することにある。
【００１３】
【課題を解決するための手段】
上記従来の課題を解決するために、請求項１の本発明は、受信したメッセージを先入れ先出し式のキューに格納した上で該キューから取り出したメッセージを連結するメッセージ受信連結装置において、最も近い過去に連結に使用されたメッセージで決まる状態変数のなり得る値のそれぞれに対し、前記状態変数が当該値のときに連結での使用が可能なメッセージである連結可能メッセージが対応づけられ、この連結可能メッセージに対し、当該連結可能メッセージが連結に使用された後の前記状態変数の値である連結後ステータス値が対応づけられる状態遷移表と、前記キューから取り出したメッセージが前記状態変数の現在の値に前記状態遷移表で対応づけられている連結可能メッセージのいずれかである場合は当該メッセージを連結に使用する一方いずれでもない場合は当該メッセージを他の先入れ先出し式のキューに格納し、前記連結可能メッセージのいずれかであるかを判定する際に前記他のキューにメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが前記連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージを前記他のキューに格納し、前記キューまたは前記他のキューから取り出したメッセージを連結に使用する場合は、前記状態変数の現在の値に前記状態遷移表で対応づけられている連結後ステータス値で当該状態変数を更新する手段とを備えることを特徴とするメッセージ受信連結装置をもって解決手段とする。
【００１４】
請求項１のメッセージ受信連結装置によれば、受信したメッセージを先入れ先出し式のキューに格納した上で該キューから取り出したメッセージを連結するメッセージ受信連結装置において、最も近い過去に連結に使用されたメッセージで決まる状態変数のなり得る値のそれぞれに対し、前記状態変数が当該値のときに連結での使用が可能なメッセージである連結可能メッセージが対応づけられ、この連結可能メッセージに対し、当該連結可能メッセージが連結に使用された後の前記状態変数の値である連結後ステータス値が対応づけられる状態遷移表と、前記キューから取り出したメッセージが前記状態変数の現在の値に前記状態遷移表で対応づけられている連結可能メッセージのいずれかである場合は当該メッセージを連結に使用する一方いずれでもない場合は当該メッセージを他の先入れ先出し式のキューに格納し、前記連結可能メッセージのいずれかであるかを判定する際に前記他のキューにメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが前記連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージを前記他のキューに格納し、前記キューまたは前記他のキューから取り出したメッセージを連結に使用する場合は、前記状態変数の現在の値に前記状態遷移表で対応づけられている連結後ステータス値で当該状態変数を更新する手段とを備えるので、単に１つのキューを用いた受信及び連結を行う装置に比較して、メッセージを迅速に連結しうる。
【００１５】
請求項２の本発明は、前記状態遷移表は、前記状態変数のなり得る値の少なくとも１つには複数の連結可能メッセージが対応づけられたものであることを特徴とする請求項１記載のメッセージ受信連結装置をもって解決手段とする。
【００１６】
請求項２のメッセージ受信連結装置によれば、前記状態遷移表は、前記状態変数のなり得る値の少なくとも１つには複数の連結可能メッセージが対応づけられたものであるので、複数のメッセージのいずれかを連結に使用することができる。
【００１７】
請求項３の本発明は、コンピュータのハードウェアを機能させて請求項１または２記載のメッセージ受信連結装置を構成させるコンピュータプログラムをもって解決手段とする。
【００１８】
請求項３のコンピュータプログラムによれば、単に１つのキューを用いた受信及び連結を行う装置に比較してメッセージを迅速に連結しうるという本発明の流通性を通信回線等を用いて高めることができる。
【００１９】
請求項４の本発明は、コンピュータのハードウェアを機能させて請求項１または２記載のメッセージ受信連結装置を構成させるコンピュータプログラムを記録した記録媒体をもって解決手段とする。
【００２０】
請求項４の記録媒体によれば、単に１つのキューを用いた受信及び連結を行う装置に比較してメッセージを迅速に連結しうるという本発明の流通性を配送等により高めることができる。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の実施例の構成を示す図である。
メッセージ受信連結装置１は、メッセージを受信する受信部１１と、受信されたメッセージについて連結での使用が可能か否かを判定しながら１メッセージずつ連結していく順序管理部１２と、連結に使用可能であるメッセージを求めるための状態遷移表１３とを備える。
【００２２】
ここでメッセージとは、Ｈ．３２３などのＶｏＩＰ呼制御においてゲートキーパとクライアント間でやりとりされるものや、その他の任意の通信におけるメッセージをいう。
【００２３】
受信部１１はキュー１１１を、順序管理部１２はキュー１２１をそれぞれ有する。これらキューは、共にＦＩＦＯ（First In First Out：先入れ先出し)式の記憶部である。メッセージ受信連結装置１は、最も近い過去に連結に使用されたメッセージで決まる状態変数であるステータス１００を記憶するようになっている。状態遷移表１３にあっては、ステータス１００のなり得る値（図１では現在の値５０〜５５）のそれぞれに対し、ステータス１００が当該値のときに連結での使用が可能なメッセージである連結可能メッセージ（図１ではメッセージ４１〜４６で示す）が対応づけられ、これらの各連結可能メッセージに対し、該値に対応するメッセージが連結に使用された後のステータス１００の値である連結後ステータス値（図１では連結後の値５０〜５４で示す）が対応づけられている。
【００２４】
かかる構成のメッセージ受信連結装置１は、送信部２１を備えるメッセージ送信装置２に対し、メッセージの到達順序を保証しないネットワーク３を介して接続されている。ネットワーク３にあっては、例えば遅延によりメッセージが送信順に到達しなくなる。
【００２５】
図２は、状態遷移表１３によるメッセージの連結の様子を示す図である。
現在のステータス１００である値５０に対しては連結可能メッセージ４１と連結後のステータス１００である値５１が対応づけられているので、ステータス１００が値５０のときは、連結可能メッセージ４１は連結での使用が可能であり、連結後のステータス１００の値は値５１となる。
【００２６】
現在のステータス１００である値５１に対しては、連結可能メッセージ４２と連結可能メッセージ４３が対応づけられているので、ステータス１００が値５１であるときは、これら複数の連結可能メッセージのいずれかは連結での使用が可能であり、連結可能メッセージ４２を連結させた後のステータス１００の値は値５２となる一方で連結可能メッセージ４３を連結させた後のステータス１００の値は値５３となる。
【００２７】
現在のステータス１００である値５２に対しては連結可能メッセージ４４と連結後のステータス１００である値５４が対応づけられているので、ステータス１００が値５２のときは、連結可能メッセージ４４は連結での使用が可能であり、連結後のステータス１００の値は値５４となる。
【００２８】
現在のステータス１００である値５３に対しては連結可能メッセージ４５と連結後のステータス１００である値５４が対応づけられているので、ステータス１００が値５３のときは、連結可能メッセージ４５は連結での使用が可能であり、連結後のステータス１００の値は値５４となる。
【００２９】
現在のステータス１００である値５４に対しては連結可能メッセージ４６と連結後のステータス１００である値５０が対応づけられているので、ステータス１００が値５４のときは、連結可能メッセージ４６は連結での使用が可能であり、連結後のステータス１００の値は値５０となる。
【００３０】
次に、メッセージ受信連結装置１の動作を説明する。
図３は、順序管理部１２の動作を示すフローチャートである。
受信部１１により受信されたメッセージはキュー１１１に対し受信の順に格納される。
【００３１】
順序管理部１２は、状態遷移表１３から現在のステータス１００に対応する全ての連結可能メッセージを読み出す（ステップＳ１）。これらを連結可能メッセージ４０と総称する。
【００３２】
次に、キュー１２１に未チェックの状態のメッセージ（後述するステップ１９の判定のなされていないメッセージをいう）が有るか否かを判定する（ステップＳ３）。ここでＮＯと判定されたときは、キュー１１１から１メッセージを読み出す（ステップＳ５）。これをメッセージ４０１とする。このメッセージ４０１が、連結可能メッセージ４０の中のいずれかであるか否かを判定する（ステップＳ７）。
【００３３】
ここでＹＥＳと判定されたときは、最も近い過去に連結に使用されたメッセージにメッセージ４０１を連結する（ステップＳ９）。なお、最も近い過去に連結に使用されたメッセージがない場合は、先頭のメッセージとして記憶する。本発明の連結での使用には、かかる処理も含むことにする。
【００３４】
そして、状態遷移表１３において現在のステータス１００に対応する連結後ステータス値を読み出す（ステップＳ１１）。そして、該値でステータス１００を更新する（ステップＳ１３）。そして、キュー１２１にメッセージが有れば未チェックの状態にし（ステップＳ１４）、ステップＳ１へと戻る。
【００３５】
一方、ステップＳ７でＮＯと判定されたときは、メッセージ４０１をキュー１２１へ格納し（ステップＳ１５）、ステップＳ３へ移る。
【００３６】
さて、ステップＳ３でＹＥＳと判定されたときは、キュー１２１から１メッセージを読み出す（ステップＳ１７）。これをメッセージ４０２とする。
【００３７】
そして、メッセージ４０２が、連結可能メッセージ４０の中のいずれかであるか否かを判定する（ステップＳ１９）。ここでＹＥＳと判定されたときは、最も近い過去に連結に使用されたメッセージにメッセージ４０２を連結し（ステップＳ２１）、ステップＳ１１へ移る。
【００３８】
一方、ステップＳ１９でＮＯと判定されたときは、メッセージ４０２をキュー１２１へ戻し（ステップＳ２３）、ステップＳ３へ移る。
【００３９】
ここでより具体的に説明する。
連結可能メッセージ４１を「山田さんは」、連結可能メッセージ４２を「商品Ａを」、連結可能メッセージ４３を「商品Ｂ」、連結可能メッセージ４４を「注文した」、連結可能メッセージ４５を「キャンセルした」、連結可能メッセージ４６を「顧客番号はＸＸＸである」とする。
【００４０】
例えば、メッセージ送信装置２から先ずメッセージ「山田さんは」が送信され、続いてメッセージ「商品Ａを」、「注文した」が順次に送信され、最後にメッセージ「顧客番号はＸＸＸである」が送信され、メッセージ受信連結装置１は先ずメッセージ「山田さんは」を受信してキュー１１１に格納し、ネットワーク３における遅延の為に、次にメッセージ「注文した」、「商品Ａを」を順次に受信してキュー１１１に格納し、最後にメッセージ「顧客番号はＸＸＸである」を受信してキュー１１１に格納したこととする。
【００４１】
ステータス１００は初期値である値５０とし、キュー１１１及びキュー１２１にはメッセージが無いものとする。
【００４２】
先ず、順序管理部１２は、状態遷移表１３から現在のステータス１００の値５０に対応する連結可能メッセージ「山田さんは」を読み出す（ステップＳ１）。キュー１２１には未チェックのメッセージが無いので（ステップＳ３：ＮＯ）、キュー１１１からメッセージ「山田さんは」を読み出す（ステップＳ５）。メッセージ「山田さんは」は、連結可能メッセージ「山田さんは」なので（ステップＳ７：ＹＥＳ）、連結での使用のため記憶する（ステップＳ９）。そして、状態遷移表１３においてステータス１００の値５０に対応する連結後ステータス値５１を読み出し、ステータス１００を値５１で更新する（ステップＳ１１、１３）。
【００４３】
次に、順序管理部１２は、状態遷移表１３から更新後のステータス１００の値５１に対応する連結可能メッセージ「商品Ａを」、「商品Ｂを」を読み出す（ステップＳ１）。キュー１２１には未チェックのメッセージが無いので（ステップＳ３：ＮＯ）。キュー１１１からメッセージ「注文した」を読み出す（ステップＳ５）。メッセージ「注文した」は、連結可能メッセージ「商品Ａを」、「商品Ｂを」のいずれでもない（ステップＳ７：ＮＯ）ので、メッセージ４０１をキュー１２１へ格納する（ステップＳ１５）。
【００４４】
次に、ステップＳ３でＮＯと判定し、そしてキュー１１１からメッセージ「商品Ａを」を読み出す（ステップＳ５）。このメッセージは、連結可能メッセージ「商品Ａを」である（ステップＳ７：ＹＥＳ）ので、メッセージ「山田さんは」に連結させ（ステップＳ９）た上で、状態遷移表１３においてステータス１００の値５１に対応する連結後ステータス値５２を読み出し、ステータス１００を値５２で更新する（ステップＳ１１、１３）。その後、キュー１２１のメッセージ「商品Ａを」を未チェックの状態にする（ステップＳ１４）。
【００４５】
次に、状態遷移表１３からステータス１００の値５２に対応する連結可能メッセージ「注文した」を読み出す（ステップＳ１）。キュー１２１には未チェックのメッセージ「注文した」が有るので（ステップＳ３：ＹＥＳ）、キュー１２１からメッセージ「注文した」を読み出す（ステップＳ１７）。このメッセージは、連結可能メッセージ「注文した」なので、メッセージ「商品Ａを」に連結させ（ステップＳ２１）た上で、状態遷移表１３においてステータス１００の値５２に対応する連結後ステータス値５４を読み出し、ステータス１００を値５４で更新する（ステップＳ１１、１３）。
【００４６】
このように、メッセージ受信連結装置１では、メッセージ「顧客番号はＸＸＸである」をチェックする前にメッセージ「注文した」がチェックされることになって、メッセージ連結の迅速化に寄与する。
【００４７】
次に、順序管理部１２は、状態遷移表１３から現在のステータス１００の値５４に対応する連結可能メッセージ「顧客番号はＸＸＸである」を読み出す（ステップＳ１）。キュー１２１には未チェックのメッセージが無いので（ステップＳ３：ＮＯ）、キュー１１１からメッセージ「顧客番号はＸＸＸである」を読み出す（ステップＳ５）。メッセージ「顧客番号はＸＸＸである」は、連結可能メッセージ「顧客番号はＸＸＸである」なので（ステップＳ７：ＹＥＳ）、メッセージ「注文した」に連結させ（ステップＳ２１）た上で、状態遷移表１３においてステータス１００の値５４に対応する連結後ステータス値５０を読み出し、ステータス１００を値５０で更新する（ステップＳ１１、１３）。
【００４８】
以上説明したように、本実施の形態のメッセージ受信連結装置１によれば、最も近い過去に連結に使用されたメッセージで決まるステータス１００のなり得る値のそれぞれに対し、ステータス１００が当該値のときに連結での使用が可能なメッセージである連結可能メッセージが対応づけられ、この連結可能メッセージに対し、当該連結可能メッセージが連結に使用された後のステータス１００の値である連結後ステータス値が対応づけられる状態遷移表１３と、キュー１１１から取り出したメッセージがステータス１００の現在の値に状態遷移表１３で対応づけられている連結可能メッセージのいずれかである場合は当該メッセージを連結に使用する一方いずれでもない場合は当該メッセージをキュー１２１に格納し、連結可能メッセージのいずれかであるかを判定する際にキュー１２１にメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージをキュー１２１に格納し、キュー１１１またはキュー１２１から取り出したメッセージを連結に使用する場合は、ステータス１００の現在の値に状態遷移表１３で対応づけられている連結後ステータス値でステータス１００を更新する順序管理部１２を備えるので、メッセージの到達順序を保証しないネットワークであっても、送信順序どおりの到達をある程度期待できるネットワークに使用する際には、単にキュー１１１を用いた受信及び連結を行う装置に比較して、メッセージを迅速に連結しうる。
【００４９】
また、状態遷移表１３は、ステータス１００のなり得る値の少なくとも１つには複数の連結可能メッセージが対応づけられたものであるので、複数のメッセージのいずれかを連結に使用することができる。
【００５０】
なお、メッセージ受信連結装置１は、中央処理装置やメモリなどのハードウェアを備えるコンピュータをコンピュータプログラムにより機能させることで構成することができる。そのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録したり、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【００５１】
【発明の効果】
以上説明したように、本発明によれば、キューから取り出したメッセージが連結可能メッセージのいずれかである場合は当該メッセージを連結に使用する一方いずれでもない場合は当該メッセージを他の先入れ先出し式のキューに格納し、判定する際に他のキューにメッセージがある場合は当該メッセージを取り出し、該取り出したメッセージが連結可能メッセージのいずれかである場合は当該取り出したメッセージを連結に使用する一方いずれでもない場合は当該メッセージを他のキューに格納し、キューまたは他のキューから取り出したメッセージを連結に使用する場合は、状態変数の現在の値に対応づけられている連結後ステータス値で当該状態変数を更新するので、単にキューを用いた受信及び連結を行う装置に比較して、メッセージを迅速に連結しうる。
【図面の簡単な説明】
【図１】本発明の実施例の構成を示す図である。
【図２】状態遷移表１３によるメッセージの連結の様子を示す図である。
【図３】順序管理部１２の動作を示すフローチャートである。
【符号の説明】
１  メッセージ受信連結装置
２  メッセージ送信装置
３  メッセージの到達順序を保証しないネットワーク
１１  受信部
１２  順序管理部
１３  状態遷移表
１００  ステータス
【図１】
2004200796.tif 000003
【図２】
2004200796.tif 000004
【図３】
2004200796.tif 000005