(57)【要約】      （修正有）【課題】業務アプリケーション間のデータのやり取りを業務アプリケーションとは異なるデータ共有部によって実現する。【解決手段】データ共有装置は、業務アプリケーション毎に構成されたタスクグループと、タスクグループ間でメッセージを送受信するメッセージ管理部２１５を有する。各タスクグループは、一以上のタスクと、タスクが読み書きするデータを格納する本テーブルと、他のタスクグループから受信し本テーブルへ反映されるデータを格納する受信テーブルと、タスクグループ実行部２０８と、メッセージ送受部２１４を有する。タスクグループ実行部は、受信テーブルのデータを本テーブルに格納した後に、タスクグループのタスクを順次実行し、本テーブルの内容をメッセージ送受部に渡す。メッセージ送受部は、タスクグループ実行部から受け取ったメッセージはメッセージ管理部へ渡し、メッセージ管理部から受け取ったデータは受信テーブルに格納する。【選択図】図７
2013054477.tif 000002
【特許請求の範囲】
【請求項１】
複数の業務アプリケーション間でデータを共有するデータ共有装置であって、
業務アプリケーション毎に構成されたタスクグループと、
複数のタスクグループ間でのメッセージの送受信を実行するメッセージ管理部を有しており、
各タスクグループは、
業務アプリケーションの処理を実行する一以上のタスクと、
前記一以上のタスクが読み書きするデータが格納される本テーブルと
他のタスクグループから受信し、前記本テーブルへ反映されるデータが格納される受信テーブルと、
タスクグループ実行部と、
メッセージ送受部を有しており、
前記タスクグループ実行部は、前記受信テーブルに格納されているデータを前記本テーブルに格納した後に、タスクグループの一以上のタスクを順次実行し、当該一以上のタスクの実行が完了した後に前記本テーブルの内容を有するメッセージを前記メッセージ送受部に渡し、
前記メッセージ送受部は、前記タスクグループ実行部から受け取ったメッセージは前記メッセージ管理部へ渡し、前記メッセージ管理部から受け取ったメッセージに含まれるデータは前記受信テーブルに格納し、
前記メッセージ管理部は、前記メッセージ送受部から受け取ったメッセージを他のタスクグループのメッセージ送受部に渡すことを特徴とするデータ共有装置。
【請求項２】
請求項１記載のデータ共有装置であって、
各タスクグループには実行周期が定められており、
前記タスクグループ実行部は、当該タスクグループの実行周期毎に前記一以上のタスクを順次実行することを特徴とするデータ共有装置。
【請求項３】
請求項２記載のデータ共有装置であって、
各タスクグループは、本テーブルで管理されるデータのうちデータ更新と同じ実行周期で他のタスクグループへ送信される第一種別のデータと、データ更新と同じ実行周期で他のタスクグループへ送信される必要のない第二種別のデータとを分けて管理しており、
各タスクグループは、前記第二種別のデータについて、他のタスクグループへ送信されるデータを格納する送信テーブルを更に有しており、
前記タスクグループ実行部は、前記一以上のタスクの実行が完了した後に、前記第一種別のデータについては前記本テーブルの内容を有するメッセージを前記メッセージ送受部に渡し、前記第二種別のデータについては前記受信テーブルの内容を有するメッセージを前記メッセージ送受部に渡すことを特徴とするデータ共有装置。
【請求項４】
請求項３記載のデータ共有装置であって、
各タスクグループには、一回の実行周期で送信可能な第二種別のデータの上限が定められていることを特徴とするデータ共有装置。
【請求項５】
請求項３記載のデータ共有装置であって、
前記送信テーブルおよび前記受信テーブルには各々、データ毎に通番が割り振られており、
前記タスクグループ実行部は、前記第二種別のデータについて前記通番に基づいて受信したデータに抜けがあると判断した場合に、再送要求メッセージを前記メッセージ送受部へ渡すことを特徴とするデータ共有装置。
【請求項６】
請求項１記載のデータ共有装置であって、
更に、前記メッセージ管理部から受け取ったメッセージをネットワークを介して他のデータ共有装置のメッセージ管理部へ渡す通信部を有することを特徴とするデータ共有装置。
【請求項７】
複数の業務アプリケーション間でデータを共有するデータ共有装置におけるデータ共有方法であって、
前記データ共有装置は、
業務アプリケーション毎に構成されたタスクグループと、
複数のタスクグループ間でのメッセージの送受信を実行するメッセージ管理部を有しており、
各タスクグループは、
業務アプリケーションの処理を実行する一以上のタスクと、
前記一以上のタスクが読み書きするデータが格納される本テーブルと
他のタスクグループから受信し、前記本テーブルへ反映されるデータが格納される受信テーブルと、
タスクグループ実行部と、
メッセージ送受部を有しており、
前記タスクグループ実行部は、前記受信テーブルに格納されているデータを前記本テーブルに格納した後に、タスクグループの一以上のタスクを順次実行し、当該一以上のタスクの実行が完了した後に前記本テーブルの内容を有するメッセージを前記メッセージ送受部に渡し、
前記メッセージ送受部は、前記タスクグループ実行部から受け取ったメッセージは前記メッセージ管理部へ渡し、前記メッセージ管理部から受け取ったメッセージに含まれるデータは前記受信テーブルに格納し、
前記メッセージ管理部は、前記メッセージ送受部から受け取ったメッセージを他のタスクグループのメッセージ送受部に渡すことを特徴とするデータ共有方法。
【請求項８】
請求項７記載のデータ共有方法であって、
各タスクグループには実行周期が定められており、
前記タスクグループ実行部は、当該タスクグループの実行周期毎に前記一以上のタスクを順次実行することを特徴とするデータ共有方法。
【請求項９】
請求項８記載のデータ共有方法であって、
各タスクグループは、本テーブルで管理されるデータのうちデータ更新と同じ実行周期で他のタスクグループへ送信される第一種別のデータと、データ更新と同じ実行周期で他のタスクグループへ送信される必要のない第二種別のデータとを分けて管理しており、
各タスクグループは、前記第二種別のデータについて、他のタスクグループへ送信されるデータを格納する送信テーブルを更に有しており、
前記タスクグループ実行部は、前記一以上のタスクの実行が完了した後に、前記第一種別のデータについては前記本テーブルの内容を有するメッセージを前記メッセージ送受部に渡し、前記第二種別のデータについては前記受信テーブルの内容を有するメッセージを前記メッセージ送受部に渡すことを特徴とするデータ共有方法。
【請求項１０】
請求項９記載のデータ共有方法であって、
各タスクグループには、一回の実行周期で送信可能な第二種別のデータの上限が定められていることを特徴とするデータ共有方法。
【請求項１１】
請求項９記載のデータ共有方法であって、
前記送信テーブルおよび前記受信テーブルには各々、データ毎に通番が割り振られており、
前記タスクグループ実行部は、前記第二種別のデータについて前記通番に基づいて受信したデータに抜けがあると判断した場合に、再送要求メッセージを前記メッセージ送受部へ渡すことを特徴とするデータ共有方法。
【請求項１２】
請求項７記載のデータ共有方法であって、
更に、前記メッセージ管理部から受け取ったメッセージを、ネットワークを介して他のデータ共有装置のメッセージ管理部へ渡す通信部を有することを特徴とするデータ共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
データ共有装置およびデータ共有方法に関する。より詳細には、単一の装置またはネットワークを介して相互接続された複数の装置から構成されたシステムにおける業務アプリケーション間のデータ共有装置およびデータ共有方法に関する。
【背景技術】
【０００２】
列車運行管理システムなど複数の業務アプリケーションが実行されるシステムにおいて、各業務アプリケーションは装置内または装置間でお互いにデータをやり取りしている。データのやり取りに関わる処理（例えば、装置内または装置間での排他制御、データ共有タイミングの制御）は、業務アプリケーションのプログラムコード中に多く表れる。
【０００３】
また、データのやりとりの際には、データの送信元がデータの受信先を意識した処理（例えば、受信先装置の指定、受信先に合わせたデータ加工）を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０-２７１９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
先述のようなシステムでは、データのやりとりに関わる処理が業務アプリケーションのプログラムコード内で多数回出現する。このために、業務アプリケーションのプログラム開発における生産性が上がらない。また、システム構成を変更する場合には、データの送信元と送信先の両方を変更する必要があるので、拡張性も低い。
【課題を解決するための手段】
【０００６】
データ共有装置は、業務アプリケーション毎に構成されたタスクグループと、複数のタスクグループ間でのメッセージの送受信を実行するメッセージ管理部を有する。各タスクグループは、業務アプリケーションの処理を実行する一以上のタスクと、一以上のタスクが読み書きするデータが格納される本テーブルと他のタスクグループから受信し、本テーブルへ反映されるデータが格納される受信テーブルと、タスクグループ実行部と、メッセージ送受部を有する。
タスクグループ実行部は、受信テーブルに格納されているデータを本テーブルに格納した後に、タスクグループの一以上のタスクを順次実行し、当該一以上のタスクの実行が完了した後に本テーブルの内容を有するメッセージをメッセージ送受部に渡す。メッセージ送受部は、タスクグループ実行部から受け取ったメッセージはメッセージ管理部へ渡し、メッセージ管理部から受け取ったメッセージに含まれるデータは受信テーブルに格納する。メッセージ管理部は、メッセージ送受部から受け取ったメッセージを他のタスクグループのメッセージ送受部に渡す。
【発明の効果】
【０００７】
複数の業務アプリケーションが実行されるシステムにおいて、業務アプリケーション間のデータのやり取りを業務アプリケーションとは異なるデータ共有部によって実現することができる。
【図面の簡単な説明】
【０００８】
【図１】システムの構成例を示すシステム構成図である。
【図２】サーバのハードウェア構成例を示すハードウェア構成図である。
【図３】サーバのソフトウェア構成例を示すソフトウェア構成図である。
【図４】タスクグループ特性およびデータ特性の項目例と各項目がとり得る値の例を示す図である。
【図５（ａ）】タスクグループ特性を構成するタスク表の一例を示す図である。
【図５（ｂ）】タスクグループ特性を構成するタスクグループ特性表の一例を示す図である。
【図６（ａ）】データ特性の一例を示す図である。
【図６（ｂ）】データ特性の他の一例を示す図である。
【図７】サーバに構成されたタスクグループの例を示す図である。
【図８】本テーブルの一例を示す図である。
【図９】送信テーブルの一例を示す図である。
【図１０】受信テーブルの一例を示す図である。
【図１１】メッセージの一例を示す図である。
【図１２】タスクグループにおける処理の一例を示す全体フロー図である。
【図１３】反映処理の一例を示す反映処理フロー図である。
【図１４】送信処理の一例を示す送信処理フロー図である。
【図１５】永続データに対する送信処理の一例を示す永続データ送信処理フロー図である。
【図１６】受信処理の一例を示す受信処理フロー図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、データ共有装置およびデータ共有方法の実施の形態を詳細に説明する。
【００１０】
図１は、システムの構成例を図である。ＰＲＣ（Ｐｒｏｇｒａｍｍｅｄ  Ｒｏｕｔｅ  Ｃｏｎｔｒｏｌ）サーバ２０は、ネットワーク６０を介して、ＣＴＣ（Ｃｅｎｔｒａｌｉｚｅｄ  Ｔｒａｆｆｉｃ  Ｃｏｎｔｒｏｌ）サーバ３０、ＧＤ（Ｇｒａｐｈｉｃ  Ｄｉｓｐｌａｙ）サーバ４０、ＥＤＰ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ）サーバ５０と接続されている。
【００１１】
ＰＲＣサーバ２０は、列車の進路を自動制御するサーバであり、データ共有部１０を有している。
【００１２】
ＣＴＣサーバ３０は、信号や分岐器の連動装置を遠隔操作するサーバであり、データ共有部１０を有している。
【００１３】
ＧＤサーバ４０は、指令員が運転整理を行うサーバであり、データ共有部１０を有している。
【００１４】
ＥＤＰサーバ５０は、日毎のダイヤをＰＲＣサーバ２０に送信するサーバであり、データ共有部１０を有している。
【００１５】
ＰＲＣサーバ２０、ＣＴＣサーバ３０、ＧＤサーバ４０およびＥＤＰサーバ５０は、ネットワーク６０を介してお互いに通信をしてデータをやりとりすることでデータ共有を実現するシステムを構成している。ただし、システム構成はこれに限られず、データ共有部１０を有する２つ以上のサーバがネットワークを介して接続されていればよい。また、単一のサーバ上にデータ共有部１０と複数の業務アプリケーションを有し、データ共有部を介して複数の業務アプリケーションがデータをやりとりするシステム構成であっても良い。
【００１６】
また、図１で示したシステム構成は、説明のため鉄道運行管理システムを一例としたが、これは本発明の適用可能な分野を鉄道分野に限るものではない。例えば、システムを、フライトスケジュール管理サーバや、搭乗ゲート管理サーバで構成することにより、航空機のスケジュール管理にを用いることも可能である。
【００１７】
図２は図１で示した各サーバのハードウェア構成例を示すハードウェア構成図である。図２で示すようにサーバ１０１は、主制御部１０２、主記憶部１０３、入力部１０４、通信部１０５を備えて構成される。
【００１８】
主制御部１０２は、主記憶部１０３に記録されたプログラムコードをプロセッサが実行することで、サーバ１０１における情報処理を制御する。
【００１９】
主記憶部１０３は、サーバ１０１に関する情報を不揮発的に記憶する。
【００２０】
入力部１０４は、サーバ１０１に関する情報を手動で入力する必要がある際に、サーバ１０１に入力を行う。
【００２１】
通信部１０５は、ネットワーク６０を介して、他装置の通信部１０５と接続し、他装置と情報を伝達しあう。
【００２２】
本構成は、例えば、主制御部１０２をＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で、主記憶部１０３をハードディスクで、入力部１０４をキーボードで、通信部１０５をイーサネット（登録商標）で、実現することにより、従来からよく知られた装置で構成可能である。
【００２３】
図３は、図１に示した各サーバ１０１のソフトウェア構成例を示すソフトウェア構成図である。図３で示すように、サーバ１０１は、データ共有部１０と、一以上の業務アプリケーション２０１、を備えて構成される。これらの実体は、図２に示した主記憶部１０３に格納されたソフトウェアプログラムおよびデータであり、実行時にはＲＡＭに読み込まれてＣＰＵ（プロセッサ）によって実行される。
【００２４】
業務アプリケーション２０１は、業務を行うためのアプリケーションであり、各業務アプリケーション２０１は単一のタスクグループと対応している。タスクグループは業務アプリケーションを構成する一以上のタスクと呼ばれるプログラムから構成されており、一つのタスクグループデータベース２１７を保持する。タスクグループを構成するタスクは、対応するタスクグループデータベース２１７のデータ（後述する本テーブル上のデータ）を読み書きする。
【００２５】
データ共有部１０は、データ格納部２０２、タスク周期実行プログラム２０８、データ送信プログラム２０９、メッセージ作成プログラム２１０、データ反映プログラム２１１、データ受信プログラム２１２、メッセージ解釈プログラム２１３、メッセージ送受プログラム２１４、メッセージ管理プログラム２１５、通信プログラム２１６、を備えて構成される。タスク周期実行プログラム２０８、データ送信プログラム２０９、メッセージ作成プログラム２１０、データ反映プログラム２１１、データ受信プログラム２１２、メッセージ解釈プログラム２１３、およびメッセージ送受プログラム２１４はＣＰＵ（プロセッサ）によって実行されるとタスクグループ毎に独立した処理を実行することになるので、以降はタスクグループ毎にこれらのプログラムを備えるものとして説明する。しかしこれらのプログラムは機能的にタスクグループ毎に備えられていれば良く、プログラムコードの実体は各サーバに１つ備えていれば良い。
【００２６】
データ格納部２０２は、データ共有部を実現するソフトウェアプログラムの実行に用いられるデータを格納しており、タスクグループ特性２０３、一以上のタスクグループデータベース２１７を有する。各タスクグループデータベース２１７は、データ特性２０４、一以上の本テーブル２０５、送信テーブル２０６、受信テーブル２０７、を備えて構成される。
【００２７】
タスクグループ周期実行プログラム２０８は、タスクグループ毎に設定された周期毎に、対応するタスクグループについての処理を実行する。
【００２８】
データ送信プログラム２０９は、データ送信処理を行う。
【００２９】
メッセージ作成プログラム２１０は、データ送信プログラムから渡されたデータをメッセージに変換してメッセージ送受プログラム２１４へ渡す。
【００３０】
データ反映プログラム２１１は、データ反映処理を行う。
【００３１】
データ受信プログラム２１２は、データ受信処理を行う。
【００３２】
メッセージ解釈プログラム２１３は、メッセージ送受プログラムから渡されたメッセージをデータに変換してデータ受信プログラム２１２に渡す。
【００３３】
メッセージ送受プログラム２１４は、メッセージ作成プログラム２１０から渡されたメッセージをメッセージ管理プログラム２１５に渡す、もしくはメッセージ管理プログラム２１５から渡されたメッセージをメッセージ解釈プログラム２１３に渡す。
【００３４】
メッセージ管理プログラム２１５は、メッセージ送受プログラム２１４から渡されたメッセージを装置内の他のメッセージ送受プログラム２１４および通信プログラム２１６に渡す、もしくは通信プログラム２１６から渡されたメッセージを装置内の全てのメッセージ送受プログラム２１４に渡す。
【００３５】
通信プログラム２１６は、メッセージ管理プログラム２１５から渡されたメッセージを、ネットワーク６０を介してネットワーク６０に接続している他装置の通信プログラム２１６とメッセージを伝達しあう。
【００３６】
図４は、タスクグループ特性２０３およびデータ特性２０４が有する項目例と各項目がとり得る値の例を示した図である。
【００３７】
タスクグループ特性２０３には、運転状態項目３０１と、主従系状態項目３０２が含まれる。データ特性２０４には、種別項目３０３、共有項目３０４と、状態項目３０５が含まれる。
【００３８】
運転状態項目３０１は、オンライン、またはモニタランという値をとりうる。
【００３９】
主従系状態項目３０２は、主系、または従系、または主系と従系の間の移行中という値をとりうる。
【００４０】
種別項目３０３は、タスクグループのタスクの実行によって更新された本テーブルの内容を他のタスクグループへ送信するタイミングについてのルールを表す項目で、瞬時、または永続という値をとりうる。種別項目が「瞬時」である場合には、本テーブルの更新が発生したタスクグループ実行周期と同じ周期内で当該更新内容の送信が行われ、種別項目が「永続」である場合には、本テーブルの更新が発生したタスクグループの実行周期と必ずしも同じ周期で当該更新内容の送信を行う必要はなく、後の実行周期で更新内容の送信が行われる場合もある。データ共有のリアルタイム要求が高いデータは種別項目が「瞬時」に、リアルタイム要求が低いデータは種別項目が「永続」に設定される。
【００４１】
共有項目３０４は、送信元、または受信先、またはローカルという値をとりうる。
【００４２】
状態項目３０５は、正常、または異常、または構築中という値をとりうる。
【００４３】
図５は、タスクグループ特性２０３の一例を示す図である。各サーバ１０１は、タスクグループ特性２０３を一つ備える。タスクグループ特性２０３は、図５（ａ）に示すタスク表４０１と、図５（ｂ）に示すタスクグループ特性表４０４を備えて構成される。
【００４４】
タスク表４０１は、タスクグループに登録されているタスクを表す表である。タスク表４０１は、タスクグループ名称列４０２とタスク列４０３を備えて構成される。
【００４５】
タスクグループ名称列４０２は、タスクグループの名称を表す列である。タスク表４０１では、ＴＧ−Ａ、ＴＧ−Ｂ、ＴＧ−Ｃ、ＴＧ−Ｄという名称のタスクグループが存在することを示している。
【００４６】
タスク列４０３は、各タスクグループに登録されている一以上のタスク群を表す列である。例えば、タスク表４０１では、タスクグループＴＧ−ＡにタスクＴ−ＡＡ，タスクＴ−ＡＢ，タスクＴ−ＡＣ，タスクＴ−ＡＤが登録されている。タスクグループに登録されているタスクは逐次実行される。例えば、タスクグループＴＧ−Ａでは、タスクＴ−ＡＡ，タスクＴ−ＡＢ，タスクＴ−ＡＣ，タスクＴ−ＡＤの順にタスクが実行される。
【００４７】
タスクグループ特性表４０４は、タスクグループの特性を表す表である。タスクグループ特性表４０４はタスクグループ名称４０２と、周期列４０５と、運転状態項目列４０６と、主従系状態項目列４０７を備えて構成される。
【００４８】
タスクグループ名称４０２は上述の通り、各タスクグループの識別情報（名称）である。周期列４０５は、各タスクグループについて、タスクグループ周期実行プログラム２０８が当該タスクグループに登録されているタスク郡の実行を開始する周期を表す列である。例えば、タスクグループ特性表４０４では、タスクグループＴＧ−Ａは１秒周期で、タスクグループＴＧ−Ｄは３秒周期で起動され、タスク群に含まれる一以上のタスクが逐次実行される。
【００４９】
運転状態項目列４０６は、タスクグループの運転状態項目を表す列である。例えば、タスクグループ特性表４０４では、タスクグループＴＧ−Ａの運転状態項目はオンラインに、タスクグループＴＧ−Ｃの運転状態項目はモニタランになっている。
【００５０】
主従系状態項目列４０７は、タスクグループの主従系状態項目を表す列である。例えば、タスクグループ特性表４０４では、タスクグループＴＧ−Ａの主従系状態項目は主系に、タスクグループＴＧ−Ｂの主従系状態項目は従系になっている。
【００５１】
図６は、データ特性２０４の一例を示す図である。各サーバ１０１は、タスクグループ毎に一つのデータ特性２０４を備える。図６（ａ）ではタスクグループＴＧ−Ａについてのデータ特性表５０１を、図６（ｂ）ではタスクグループＴＧ−Ｂについてのデータ特性表５０８を示している。
【００５２】
データ特性表５０１およびデータ特性表５０８は、タスクグループ名称列５０２、データ名称列５０３、種別項目列５０４、共有項目列５０５、送信メッセージ数上限列５０６、状態項目列５０７、を備えて構成される。
【００５３】
タスクグループ名称列５０２は、タスクグループの名称を表す列である。例えば、データ特性表５０１はタスクグループＴＧ−Ａが保持するデータについてのものであり、データ特性表５０８はタスクグループＴＧ−Ｂが保持するデータについてのものであることを示している。
【００５４】
データ名称列５０３は、タスクグループが保持しているデータの名称を表す列である。例えば、タスクグループＴＧ−ＡはＤＡＴＡ−ＡＡＡ、ＤＡＴＡ−ＢＢＢ、ＤＡＴＡ−ＣＣＣ、ＤＡＴＡ−ＤＤＤというデータを保持しており、タスクグループＴＧ−ＢはＤＡＴＡ−ＡＡＡ、ＤＡＴＡ−ＢＢＢというデータを保持していることを示している。
【００５５】
種別項目列５０４は、データの種別項目を示す列である。例えば、データ特性表５０１において、ＤＡＴＡ−ＡＡＡの種別項目が瞬時であり、ＤＡＴＡ−ＢＢＢの種別項目が永続であることを示している。
【００５６】
共有列５０５は、データの共有項目を表す列である。例えば、データ特性表５０１において、ＤＡＴＡ−ＡＡＡの共有項目が送信元であり、ＤＡＴＡ−ＣＣＣの共有項目が受信先であることを示している。
【００５７】
送信メッセージ数上限列５０６は、タスクグループにおける処理を一度実行する間に送信できるメッセージ数の上限を表す列である。例えば、データ特性表５０１において、ＤＡＴＡ−ＢＢＢの送信メッセージ数上限は１００であることを示している。
【００５８】
状態列５０７は、データの状態項目を表す列である。例えば、データ特性表５０１において、ＤＡＴＡ−ＡＡＡの状態項目が正常であり、ＤＡＴＡ−ＣＣＣの状態項目が構築中であることを示している。
【００５９】
図７は、図５で示したタスクグループ特性２０３が表すタスクグループ、および図６で示したデータ特性２０４が表すデータを備えるサーバ６０１の機能構成の一例を示す図である。サーバは、通信プログラム２１６、メッセージ管理プログラム２１５、タスクグループ特性２０３と二つのタスクグループを有する。尚、タスクグループの数は一例であって、一以上であれば幾つ構成されていても良い。
【００６０】
各タスクグループは、業務アプリケーションを構成する複数のタスク、当該複数のタスクの実行に際して用いられる一以上のデータ、データ特性２０４、タスクグループ周期実行プログラム２０８、データ送信プログラム２０９、データ反映プログラム２１１、データ受信プログラム２１２、メッセージ作成プログラム２１０、メッセージ解釈プログラム２１３、メッセージ送受プログラム２１４を有する。ここで、タスクグループが有する各プログラムは図３に示したプログラムであるが、各プログラムがタスクグループ毎に各種処理を実行することから、機能構成としてはタスクグループ毎に各プログラムを有するよう図７では表現している。
【００６１】
タスクグループが有するデータは、本テーブル７０１、送信テーブル８０１、受信テーブル９０１、を用いて管理される。
【００６２】
図８は、本テーブル２０５の一例を示す図である。タスクグループは、タスクグループが保持するデータ毎に一つの本テーブル２０５を備える。本テーブル２０５は少なくとも行番号列７０２、一以上のデータ列を備える。例えば、図８に示す本テーブル７０１は、行番号７０２と、データ列として列車番号列７０３および出発時刻列７０４を備える。
【００６３】
行番号列７０２は、行番号を表す列である。
【００６４】
列車番号列７０３は、列車番号を表す列である。
【００６５】
出発時刻列７０４は、出発時刻を表す列である。
【００６６】
タスクグループに登録されているタスクが実行されると、本テーブルのデータ列に格納されているデータがタスクによって読み書きされる。
【００６７】
図９は、送信テーブル２０６の一例を示す図である。タスクグループは、タスクグループが保持するデータのうち共有項目が送信元、かつ種別項目が永続であるデータの本テーブルに対して一つの送信テーブル２０６を備える。送信テーブル２０６は少なくとも、通番列８０２、送信フラグ８０３、操作列８０４、行番号列８０５、一以上のデータ列を備える。ここでのデータ列の項目は対応する本テーブル２０５が備えるデータ列の項目と同じものである。例えば、図９に示す送信テーブル８０１は、図８に示す本テーブル７０１に対応しており、通番列８０２、送信フラグ８０３、操作列８０４、行番号列８０５、列車番号列８０６、出発時刻列８０７、を備える。
【００６８】
通番列８０２は、通番を表す列である。
【００６９】
送信フラグ列８０３は、送信された行であるかどうかを表す列である。
【００７０】
操作列８０４は、対応する本テーブルに対して行われた操作を表す列である。
【００７１】
行番号列８０５は、対応する本テーブルに対して行われた操作が対象とする本テーブルの行番号を表す列である。
【００７２】
列車番号列８０６は、列車番号を表す列である。
【００７３】
出発時刻列８０７は、出発時刻を表す列である。
【００７４】
共有項目が送信元、かつ種別項目が永続であるデータが変更された場合、対応する送信テーブルに変更内容が追加される。この際の通番は変更内容を追加する前の最大の通番に１を加えた値、送信フラグは０、操作は本テーブルにデータを追加した場合は「Ｉｎｓｅｒｔ」、本テーブルのデータを更新した場合は「Ｕｐｄａｔｅ」、本テーブルのデータを削除した場合は「Ｄｅｌｅｔｅ」、行番号は本テーブルにおいてデータの変更があった行の番号、データは変更内容を表すデータである。
【００７５】
図１０は、受信テーブル２０７の一例を示す図である。タスクグループは、タスクグループが保持するデータのうち共有項目が受信先であるデータの本テーブルに対して一つの受信テーブル２０６を備える。データの種別項目が瞬時であれば、受信テーブル２０７が備える列の項目は、対応する本テーブル２０５が備える列の項目と同じものである。データの種別項目が永続であれば、受信テーブル２０７は少なくとも、通番列９０２、反映フラグ９０３、操作列９０４、行番号列９０５、一以上のデータ列を備える。ここでのデータ列の項目は対応する本テーブル２０５が備えるデータ列の項目と同じものである。例えば、図９に示す受信テーブル９０１は、種別項目が永続であるデータについての受信テーブルであり、図８に示す本テーブル７０１に対応しており、通番列９０２、送信フラグ９０３、操作列９０４、行番号列９０５、列車番号列９０６、出発時刻列９０７、を備える。
【００７６】
通番列９０２は、通番を表す列である。
【００７７】
反映フラグ列９０３は、反映された行であるかどうかを表す列である。
【００７８】
操作列９０４は、対応する本テーブルに対して行われた操作を表す列である。
【００７９】
行番号列９０５は、対応する本テーブルに対して行われた操作が対象とする本テーブルの行番号を表す列である。
【００８０】
列車番号列９０６は、列車番号を表す列である。
【００８１】
出発時刻列９０７は、出発時刻を表す列である。
【００８２】
図１１は、メッセージの一例を示す図である。メッセージ１００１は、図９に示す送信テーブル８０１の１行目の内容をメッセージに変換したものを表している。メッセージには当該メッセージがどのデータに関するメッセージであるかを示すデータ名称（図１１のＴａｂｌｅ  ｎａｍｅの欄参照）、メッセージの種別（図１１の場合には「Ｉｎｓｅｒｔ」）、当該メッセージによって送受信されるデータそのもの（図１１の場合には「Ｔ１０００」や「８：００」）等が含まれる。
【００８３】
図１１で示すようなメッセージが、メッセージ作成プログラム２１０で作成され、メッセージ送受プログラム２１４、メッセージ管理プログラム２１５を通して、他のタスクグループのメッセージ送受プログラム２１４に渡される。メッセージ送受プログラム２１４に渡されたメッセージは、メッセージ解釈プログラム２１３で解釈されデータ受信プログラム２１２に渡される。尚、ここでは単一のサーバ上に構成された複数タスクグループ間でメッセージがやりとりされる場合を説明した。異なるサーバ上に構成された複数のタスクグループ間でメッセージがやりとりされる場合には、更にメッセージ管理プログラム２１５から通信プログラム２１６にメッセージが引き渡される。通信プログラム２１６はネットワーク６０を介して別のサーバへメッセージを送信し、当該別のサーバの通信プログラム２１６がメッセージを受信して、メッセージ管理プログラム２１５経由で受信側のタスクグループのメッセージ送受プログラム２１４にメッセージが渡される。
【００８４】
図１１で示すメッセージの一例１００１はＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）フォーマットを用いて表現されているが、メッセージフォーマットはＹＡＭＬ（Ｙａｍｌ  Ａｉｎ’ｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）でも、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）でも、その他のメッセージフォーマットでもよい。
【００８５】
図１２は、タスクグループにおける処理の流れの一例を示す全体フロー図である。図１２で示す処理の流れは、タスクグループ周期実行プログラム２０８がタスクグループ毎に設定された周期で実行する。
【００８６】
まず、タスクグループ周期実行プログラム２０８は、データ反映プログラム２１１を起動する。データ反映プログラム２１１は、該タスクグループが保持するデータに対する反映処理を行う（Ｓ１０１）。
【００８７】
タスクグループ周期実行プログラム２０８は、タスクグループ特性２０３のタスク表を参照し、該タスクグループに登録されているタスクを逐次実行する（Ｓ１０２）。
【００８８】
タスクグループ周期実行プログラム２０８は、タスクグループ特性２０３を参照し、該タスクグループの運転状態項目４０６がオンラインかつ主従系状態項目４０７が主系であるかどうか判定する（Ｓ１０３）。該タスクグループの運転状態項目４０６がオンラインかつ主従系状態項目４０７が主系であればＳ１０４へ、該タスクグループの運転状態項目４０６がオンラインでない、または主従系状態項目４０７が主系でなければ終了へと処理を進める。
【００８９】
タスクグループ周期実行プログラム２０８は、データ送信プログラム２０９を起動する。データ送信プログラム２０９は、該タスクグループが保持するデータに対する送信処理を行う（Ｓ１０４）。
【００９０】
以上の処理を行うことにより、タスクグループに登録されたタスクが逐次実行されている間のデータの一貫性を保ちながら、他タスクグループとデータを共有できる。
【００９１】
図１３は、反映処理の一例を示す反映処理フロー図である。図１３は、図１２におけるＳ１０１の詳細を表す。図１３で示す反映処理はデータ反映プログラム２１１によって実行される。
【００９２】
まず、データ反映プログラム２１１は、該タスクグループにおけるデータ特性２０４を参照し、共有項目５０５が受信先となっているデータを抽出し、抽出されたデータを反映候補データとして反映候補データ群に登録する（Ｓ２０１）。
【００９３】
データ反映プログラム２１１は、反映候補データ群に反映候補データが存在するか判定する（Ｓ２０２）。反映候補データ群に反映候補データが存在すればＳ２０３へ、存在しなければ終了へと処理を進める。
【００９４】
データ反映プログラム２１１は、反映候補データ群から反映候補データを任意に一つ選択する（Ｓ２０３）。ここでは、反映候補データ群を配列とみなして先頭から順番に選んでもよいし、末尾から選んでもよいし、無作為に選んでもよい。
【００９５】
データ反映プログラム２１１は、Ｓ２０３において選択した反映候補データについて、該タスクグループのデータ特性２０４を参照し、該反映候補データの種別項目５０４が瞬時であるか判定する（Ｓ２０４）。該反映候補データの種別項目５０４が瞬時であればＳ２０５へ、瞬時でなければ（永続ならば）Ｓ２０６へ処理を進める。
【００９６】
データ反映プログラム２１１は、該反映候補データについての受信テーブル２０７を参照し、その内容を該反映候補データについての本テーブル２０５へ反映する（Ｓ２０５）。
【００９７】
データ反映プログラム２１１は、該反映候補データについての受信テーブル２０７から反映フラグ９０３が０の行を全て抽出し、該行の内容を本テーブルに反映する。次に、該行の反映フラグ９０３を１にする（Ｓ２０６）。
【００９８】
データ反映プログラム２１１は、反映候補データ群から該反映候補データを除去し、Ｓ２０２へと処理を進める（Ｓ２０７）。
【００９９】
以上の反映処理により、該タスクグループが保持するデータのうち共有項目５０５が受信先になっているものについて受信テーブル２０７の内容が本テーブル２０５へ反映される。
【０１００】
図１４は、送信処理の一例を示す送信処理フロー図である。図１４は、図１２におけるＳ１０４の詳細を表す。図１４で示す送信処理はデータ送信プログラム２０９によって提供される。
【０１０１】
まず、データ送信プログラム２０９は、該タスクグループにおけるデータ特性２０４を参照し、共有項目５０５が送信元となっているデータを抽出し、抽出されたデータを送信候補データとして送信候補データ群に登録する（Ｓ３０１）。
【０１０２】
データ送信プログラム２０９は、送信候補データ群に送信候補データが存在するか判定する（Ｓ２０２）。送信候補データ群に送信候補データが存在すればＳ３０３へ、存在しなければ終了へと処理を進める。
【０１０３】
データ送信プログラム２０９は、送信候補データ群から送信候補データを任意に一つ選択する（Ｓ３０３）。ここでは、送信候補データ群を配列とみなして先頭から順番に選んでもよいし、末尾から選んでもよいし、無作為に選んでもよい。
【０１０４】
データ送信プログラム２０９は、Ｓ３０３において選択した送信候補データについて、該タスクグループのデータ特性２０４を参照し、該送信候補データの状態項目５０７が正常であるか判定する（Ｓ３０４）。該送信候補データの状態項目５０７が正常であればＳ３０５へ、正常でなければＳ３０８へ処理を進める。
【０１０５】
データ送信プログラム２０９は、該送信候補データについて、該タスクグループのデータ特性２０４を参照し、該送信候補データの種別項目５０４が瞬時であるか判定する（Ｓ３０５）。該送信候補データの種別項目５０４が瞬時であればＳ３０６へ、瞬時でなければ（永続ならば）Ｓ３０７へ処理を進める。
【０１０６】
データ送信プログラム２０９は、該送信候補データについての本テーブル２０５を参照し、その内容をメッセージ作成プログラム２１０へ渡してメッセージに変換し、メッセージ送受プログラム２１４へと渡す（Ｓ３０６）。
【０１０７】
データ送信プログラム２０９は、永続データ送信処理を行う（Ｓ３０７）。永続データの送信処理の詳細は図１５を用いて後述する。
【０１０８】
データ送信プログラム２０９は、送信候補データ群から該送信候補データを除去し、Ｓ３０２へと処理を進める（Ｓ３０８）。
【０１０９】
以上の送信処理により、該タスクグループが保持するデータのうち共有項目５０５が送信元になっており、かつ状態項目５０７が正常になっているものについて、種別項目５０４が瞬時のものは本テーブル２０５の内容が、種別項目５０４が永続のものは送信テーブル２０６の内容がメッセージ送受プログラム２１４およびメッセージ管理プログラム２１５を通して、他タスクグループへと送信される。
【０１１０】
図１５は、永続データに対する送信処理の一例を示す永続データ送信処理フロー図である。図１５は、図１４におけるＳ３０７の詳細を表す。図１５で示す永続データ送信処理はデータ送信プログラム２０９によって実行される。
【０１１１】
データ送信プログラム２０９は、図１４におけるＳ３０３で選択された送信候補データについての送信テーブル２０６から送信フラグ８０３が０の行を抽出し、抽出された行を送信候補行群に登録する（Ｓ４０１）。
【０１１２】
データ送信プログラム２０９は、送信候補行群に行が存在するか判定する（Ｓ４０２）。送信候補行群に行が存在すればＳ４０３へ、存在しなければＳ４０４へ処理を進める。
【０１１３】
データ送信プログラム２０９は、メッセージ作成プログラム２１０により構築開始を表すメッセージを作成し、メッセージ送受プログラム２１４へと渡す（Ｓ４０３）。
【０１１４】
データ送信プログラム２０９は、該送信候補データについての送信テーブル２０６における通番８０２から通番が最大のものを最新通番として選択し、メッセージ作成プログラム２１０により最新通番を表すメッセージを作成し、メッセージ送受プログラム２１４へと渡す（Ｓ４０４）。
【０１１５】
データ送信プログラム２０９は、送信候補行群に登録されている行のうち、送信テーブル２０６上での通番８０２が最小である行を選択し送信候補行とする（Ｓ４０５）。
【０１１６】
データ送信プログラム２０９は、Ｓ４０５において選択された送信候補行の内容をメッセージ作成プログラム２１０へ渡してメッセージに変換し、メッセージ送受プログラム２１４へと渡す（Ｓ４０６）。
【０１１７】
データ送信プログラム２０９は、該送信候補行の送信フラグ８０３を１にする（Ｓ４０７）。
【０１１８】
データ送信プログラム２０９は、送信候補行群から該送信候補行を除去する（Ｓ４０８）。
【０１１９】
データ送信プログラム２０９は、図１５に示す永続データ送信処理フローが開始してからＳ４０６が実行された回数をカウントし、その回数が該送信候補データの送信メッセージ数上限５０６以下であるか判定する（Ｓ４０９）。Ｓ４０６が実行された回数が該送信候補データの送信メッセージ数上限５０６未満であればＳ４１０に、Ｓ４０６が実行された回数が該送信候補データの送信メッセージ数上限５０６以上であれば終了に処理を進める。
【０１２０】
データ送信プログラム２０９は、送信候補行群に行が存在するか判定する（Ｓ４１０）。送信候補行群に行が存在すればＳ４０５へ、存在しなければＳ４１１へ処理を進める。
【０１２１】
データ送信プログラム２０９は、メッセージ作成プログラム２１０により構築完了を表すメッセージを作成し、メッセージ送受プログラム２１４へと渡す（Ｓ４１１）。
【０１２２】
以上の永続データ送信処理により、該タスクグループが保持するデータのうち共有項目５０５が送信元になっており、かつ状態項目５０７が正常になっており、かつ種別項目５０４が永続のものは送信テーブル２０６の内容をメッセージ送受プログラム２１４およびメッセージ管理プログラム２１５を通して、他タスクグループへと送信される。このとき、一度の処理で送信するメッセージ数が該送信候補データの送信メッセージ数上限５０６を超えないように処理が終了し、送信しなかった行については次回以降の周期の永続データ送信処理において送信される。
【０１２３】
図１６は、受信処理の一例を示す受信処理フロー図である。図１６で示す受信処理はデータ受信プログラム２１２によって実行される。図１６で示す受信処理はタスクグループのメッセージ送受プログラム２１４がメッセージを受信する度に起動される。
【０１２４】
まず、データ受信プログラム２１２は、該タスクグループのデータ特性２０４を参照し、メッセージ送受プログラム２１４が受信したメッセージに含まれるデータ名称からこのメッセージが該タスクグループが保持するデータに関するメッセージであるか判定する（Ｓ５０１）。受信したメッセージが、該タスクグループが保持するデータに関するメッセージであれば（すなわち当該メッセージに含まれるデータ名称が当該タスクグループのデータ特性に登録されていれば）Ｓ５０２に、受信したメッセージが該タスクグループが保持するデータに関するメッセージでなければ終了に処理を進める。
【０１２５】
データ受信プログラム２１２は、該メッセージの対象データ（すなわち、当該メッセージに含まれるデータ名称で表されるデータ）の共有項目５０５が受信先かどうか判定する（Ｓ５０２）。該メッセージの対象データの共有項目５０５が受信先であればＳ５０３に、該メッセージの対象データの共有項目５０５が受信先でなければＳ５１１に処理を進める。
【０１２６】
データ受信プログラム２１２は、該タスクグループの主従系状態項目４０７が主系または従系であるか判定する（Ｓ５０３）。該タスクグループの主従系状態項目４０７が主系または従系であればＳ５０４に、該タスクグループの主従系状態項目４０７が主系でなく、かつ従系でなければ終了に処理を進める。
【０１２７】
データ受信プログラム２１２は、該メッセージの内容（種別）が最新通番であるか判定する（Ｓ５０４）。該メッセージの内容が最新通番であればＳ５０５に、該メッセージの内容が最新通番でなければＳ５０６に処理を進める。
【０１２８】
データ受信プログラム２１２は、該メッセージが対象とするデータの受信テーブル２０７について、通番９０２が１から該メッセージが表す最新通番まですべて存在するか判定する。該メッセージが対象とするデータの受信テーブル２０７について、通番９０２が１から該メッセージが表す最新通番まですべて存在すれば、終了へと処理を進める。該メッセージが対象とするデータの受信テーブル２０７について、通番９０２が１から該メッセージが表す最新通番まですべて存在していなければ、メッセージ作成プログラム２１０により、存在しない通番９０２の再送要求を表すメッセージを作成し、メッセージ送受プログラム２１４へと渡し、該メッセージが対象とするデータの状態項目５０７を異常にする（Ｓ５０５）。
【０１２９】
データ受信プログラム２１２は、該メッセージの内容（種別）が構築開始であるか判定する（Ｓ５０６）。該メッセージの内容が構築開始であればＳ５０７に、該メッセージの内容が構築開始でなければＳ５０８に処理を進める。
【０１３０】
データ受信プログラム２１２は、該メッセージが対象とするデータの状態項目５０７を構築中にする（Ｓ５０７）。
【０１３１】
データ受信プログラム２１２は、該メッセージの内容（種別）が構築完了であるか判定する（Ｓ５０８）。該メッセージの内容が構築完了であればＳ５０９に、該メッセージの内容が構築完了でなければＳ５１０に処理を進める。
【０１３２】
データ受信プログラム２１２は、該メッセージが対象とするデータの状態項目５０７を正常にする（Ｓ５０９）。
【０１３３】
データ受信プログラム２１２は、該メッセージの対象データの受信テーブル２０７にメッセージの内容（すなわち、当該メッセージで送受信されるデータそのもの）を反映する（Ｓ５１０）。
【０１３４】
データ受信プログラム２１２は、該メッセージの対象データの共有項目５０５が送信元かどうか判定する（Ｓ５１１）。該メッセージの対象データの共有項目５０５が送信元であればＳ５１２に、該メッセージの対象データの共有項目５０５が送信元でなければ終了に処理を進める。
【０１３５】
データ受信プログラム２１２は、該タスクグループの主従系状態項目４０７が主系であるか判定する（Ｓ５１２）。該タスクグループの主従系状態項目４０７が主系であればＳ５１３に、該タスクグループの主従系状態項目４０７が主系でなければ終了に処理を進める。
【０１３６】
データ受信プログラム２１２は、該メッセージの内容（種別）が再送要求であるか判定する（Ｓ５１３）。該メッセージの内容が再送要求であればＳ５１４に、該メッセージの内容が再送要求でなければ終了に処理を進める。
【０１３７】
データ受信プログラム２１２は、該メッセージの対象データの送信テーブルについて、再送要求された通番８０２を持つ行の送信フラグを０にする（Ｓ５１４）。
【０１３８】
以上の受信処理により、他のタスクグループが図１４で示す送信処理および図１５で示す永続データ送信処理によって送信したメッセージを受信した際に、このメッセージ受信側のタスクグループで処理することができる。各タスクグループにおいて周期実行される図１２に示す全体フローと、図１６の受信処理フローは、非同期で動作するが、受信処理フローが直接本テーブルを読書きすることはないため、タスクグループに登録されたタスクが逐次実行されている間のデータの一貫性を保つことができる。
【０１３９】
以上の実施形態によれば、各業務アプリケーションの実行（タスクグループに含まれるタスクの実行）により更新されたデータが、データ共有部１０によって他の業務アプリケーション（タスクグループ）に配信されて・反映される。各業務アプリケーションはローカルのデータベース（本テーブル）にアクセスしてデータを読み書きするだけでよくなり、業務アプリケーションがデータ共有のためのプログラムコードを持つ必要がないので、アプリを開発する際の生産性が向上する。また、業務アプリケーションに対して一つのタスクグループを割り当てて、装置内または装置間の他の全てのタスクグループとメッセージをやり取りしているため、システム構成が変化した際（例えば、新規装置が追加される、業務アプリケーションの装置内構成が変わる）の改修を最小限に留めることができる。
【０１４０】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１４１】
１０  データ共有部
２０１  業務アプリケーション
２０２  データ格納部
２０３  タスクグループ特性
２０４  データ特性
２０５  本テーブル
２０６  送信テーブル
２０７  受信テーブル
２０８  タスクグループ周期実行プログラム
２０９  データ送信プログラム
２１０  メッセージ作成プログラム
２１１  データ反映プログラム
２１２  データ受信プログラム
２１３  メッセージ解釈プログラム
２１４  メッセージ送受プログラム
２１５  メッセージ管理プログラム
２１６  通信プログラム
２１７  タスクグループデータベース
【図１】
2013054477.tif 000003
【図２】
2013054477.tif 000004
【図３】
2013054477.tif 000005
【図４】
2013054477.tif 000006
【図５（ａ）】
2013054477.tif 000007
【図５（ｂ）】
2013054477.tif 000008
【図６（ａ）】
2013054477.tif 000009
【図６（ｂ）】
2013054477.tif 000010
【図７】
2013054477.tif 000011
【図８】
2013054477.tif 000012
【図９】
2013054477.tif 000013
【図１０】
2013054477.tif 000014
【図１１】
2013054477.tif 000015
【図１２】
2013054477.tif 000016
【図１３】
2013054477.tif 000017
【図１４】
2013054477.tif 000018
【図１５】
2013054477.tif 000019
【図１６】
2013054477.tif 000020