(57)【要約】【課題】デバイスの設定情報を記述したデバイスデータを入力するだけで、デバイスと連携動作するサーバに必要なデバイスアクセス用のスケルトンコードを自動的に生成することができる連携動作プログラム生成ツールを提供することにある。【解決手段】連携動作プログラム生成ツール１０は、デバイスの設定情報を記述したデバイス定義ファイルＦ１のデータをデバイス定義ファイル読込部１１で読み込めば、設定情報解析部１２，オプション解析部１３で情報の解析を行って連携動作に必要な情報を抽出し、この抽出した情報に基づいて、デバイスと連携動作させるために必要なデバイスアクセス用コードＣ１をデバイスアクセス用コード生成部１４で、ＯＡＳサービス用コードＣ２をＯＡＳサービス用コード生成部１５で、ＤＢ用コードＣ３をＤＢ用コード生成部１６で夫々自動生成する。【選択図】図１
2008242860.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続されるデバイスと連携動作するサーバ用のスケルトンコードを生成する連携動作プログラム生成ツールであって、
デバイスの設定情報を記述したデバイスデータを入力するデバイスデータ入力手段と、
入力されたデバイスデータを解析して連携動作に必要な情報を抽出する解析手段と、
該解析手段の結果に基づいて、デバイスと連携動作させるために必要なデバイスアクセス用のスケルトンコードを生成するサーバコード生成手段とを備えることを特徴とする連携動作プログラム生成ツール。
【請求項２】
前記サーバコード生成手段は、生成した前記デバイスアクセス用のスケルトンコード中に、少なくともデバイスのコードが使用する変数及び関数及びイベントの夫々を処理するコードを含ませていることを特徴とする請求項１記載の連携動作プログラム生成ツール。
【請求項３】
前記サーバコード生成手段は、サーバからデバイスに提供するサービス提供用のスケルトンコードを生成することを特徴とする請求項１又は２記載の連携動作プログラム生成ツール。
【請求項４】
前記サービスコード生成手段は、データベース用のスケルトンコードも生成するとともに、該データベース用のスケルトンコード中には、データベーススキーマ、データベースレコード、前記サービス提供用のコード及びデータベース用のコードの連携を行うコードを少なくとも含ませて成ることを特徴とする請求項１乃至３の何れかの１項に記載の連携動作プログラム生成ツール。
【請求項５】
前記請求項１乃至４の何れかに記載の連携動作プログラム生成ツールを、デバイスのプログラムコードを生成するデバイスコード生成ツールにプラグインとして搭載して成ることを特徴とする連携動作プログラム生成ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークを介して接続されるデバイスと連携動作するサーバ用のスケルトンコードを生成する連携動作プログラム生成ツールに関するものである。
【背景技術】
【０００２】
従来、ネットワークを介してデバイスとサーバとの間で連携させるシステムとして、例えば図１２のようにシステムが提供されている。
【０００３】
このシステムは、ネットワーク上に制御・監視などの対象となるデバイス１と、デバイス１を監視・制御するためのクライアント端末２と、サーバ３等が設けられて構成される。
【０００４】
デバイス１は各種の監視・制御機器に相当し、オブジェクトを持つとともにオブジェクトにはインターフェースとして変数、関数、イベントを持つことができるようになっている。
【０００５】
一方、サーバ３は、ネットワークの繋がり方を隠蔽してデバイス１，他のサーバ３と連携するためのオブジェクト・ルータ機能や、自身の上で各種のサービスを動的に追加提供可能なサービスプロバイダ機能、クライアント端末２へのデバイス１の情報表示、デバイス１の制御機能を提示するためのインターフェース、クライアント端末２毎やデバイス１の状態に応じて、動的にインターフェースを提示するＷｅｂサーバ機能やアプリケーションサーバ機能、データベースサーバ４との連携機能等を備え、ＯＡＳ（Object Access Server)と称せられるものである。
【０００６】
ところで上述のシステムでは、デバイス１やデータベースサーバ４と、サーバ３との連携部分のデバイスアクセス用コードＣ１、ＯＡＳサービス用コードＣ２，データベースサーバ４と連携するためのデータベース（ＤＢ）用コードＣ３を夫々独立に実装していた。
【０００７】
つまりデバイス開発者側では図１３（ａ）に示すフローチャートに沿ってデバイス開発を行い、サーバ開発者側では図１３（ｂ）に示すフローチャートによりサーバ開発を行っていた。
【０００８】
つまりデバイス開発者は、デバイスコード生成ツールを用いて、図１３（ａ）に示すように必要な機能選択（Ｓ１）を行い、更にオブジェクトに持たせるインターフェースを作成し（Ｓ２）、変数、関数、イベント等のインターフェースを追加する処理（Ｓ３〜Ｓ５）、更にオブジェクトの追加（Ｓ６）、インターフェスの追加（Ｓ７）などの処理を行い、最終的にコードを生成させていた（Ｓ８）。
【０００９】
一方、サーバ開発者側では開発ツールを用いて、図１３（ｂ）に示すように変数値読込コード、変数値書出コード作成等インターフェースに対応するコード作成、更に上述したサーバ３のサービスプロバイダ機能やアプリケーションサーバ機能などに対応するＯＡＳサービス作成、ＤＢスキーマ作成、ＤＢレコード作成、ＤＢ連携コード作成などのコード作成過程（Ｓ９）を経てユーザーインターフェース実装（Ｓ１０）を経てサーバ用コードを得るのであるが、サーバ開発に必要な同期すべきデバイス情報（Ｉ）はデバイス開発者から口頭、又は仕様書などの書面でサーバ開発者に提供されるようになっていた。
【００１０】
尚、分散処理システムに対応し、クライアント・ロジックとサーバ・ロジックとを同一のソース・コード内に記述することで、クライアント／サーバ・プログラムを生成する装置が提供されている（例えば特許文献１）。
【特許文献１】特開平１１−７３３０６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、図１３（ａ），（ｂ）に示すようにデバイス開発者と、サーバ開発者とが別々に開発する方法では、上述したようにサーバ開発に必要な同期すべきデバイス情報はデバイス開発者から口頭、又は仕様書などの書面でサーバ開発者に提供されるようになっているが、しかしこのような方法では、デバイス側の機能追加、修正、削除がサーバ開発に即座に反映せず、またバグを発見しない上にサーバ側のコードの実装工数が多くなるという課題があった。
【００１２】
本発明は、上述の課題に鑑みて為されたもので、その目的とするところは、デバイスの設定情報を記述したデバイスデータを入力するだけで、デバイスと連携動作するサーバに必要なデバイスアクセス用のスケルトンコードを自動的に生成することができる連携動作プログラム生成ツールを提供することにある。
【課題を解決するための手段】
【００１３】
上述の目的を達成するために、請求項１の発明では、ネットワークを介して接続されるデバイスと連携動作するサーバ用のスケルトンコードを生成する連携動作プログラム生成ツールであって、
デバイスの設定情報を記述したデバイスデータを入力するデバイスデータ入力手段と、
入力されたデバイスデータを解析して連携動作に必要な情報を抽出する解析手段と、
該解析手段の結果に基づいて、デバイスと連携動作させるために必要なデバイスアクセス用のスケルトンコードを生成するサーバコード生成手段とを備えることを特徴とする。
【００１４】
請求項１の発明によれば、ネットワークを介して接続されるデバイスと連携動作するサーバに必要なデバイスアクセス用のスケルトンコードを自動的に生成することで、デバイスの機能の追加、修正、削除がサーバ開発側に即座に反映できる上にバグの発見が容易となり、サーバ側のコード実装工数を少なくでき、その結果、ユーザーインターフェースの機能向上やユーザビリティ向上にサーバ開発者が注力できることが可能となる。
【００１５】
請求項２の発明では、請求項１の発明において、前記サーバコード生成手段は、生成した前記デバイスアクセス用のスケルトンコード中に、少なくともデバイスのコードが使用する変数及び関数及びイベントの夫々を処理するコードを含ませていることを特徴とする。
【００１６】
請求項３の発明では、請求項１又は２の発明において、前記サーバコード生成手段は、サーバからデバイスに提供するサービス提供用のスケルトンコードを生成することを特徴とする。
【００１７】
請求項４の発明では、請求項１乃至３の何れかの発明において、前記サービスコード生成手段は、データベース用のスケルトンコードも生成するとともに、該データベース用のスケルトンコード中には、データベーススキーマ、データベースレコード、前記サービス提供用のコード及びデータベース用のコードの連携を行うコードを少なくとも含ませて成ることを特徴とする。
【００１８】
請求項５の発明では、前記請求項１乃至４の何れかに記載の連携動作プログラム生成ツールを、デバイスのプログラムコードを生成するデバイスコード生成ツールにプラグインとして搭載して成ることを特徴とする。
【発明の効果】
【００１９】
本発明は、ネットワークを介して接続されるデバイスと連携動作するサーバに必要なデバイスアクセス用のスケルトンコードを自動的に生成することで、デバイスの機能の追加、修正、削除がサーバ開発側に即座に反映できる上にバグの発見が容易となり、サーバ側のコード実装工数を少なくでき、その結果、ユーザーインターフェースの機能向上やユーザビリティ向上にサーバ開発者が注力できることが可能となるという効果がある。
【発明を実施するための最良の形態】
【００２０】
以下本発明を実施形態により説明する。
（実施形態１）
図１は上述の図１２に示したシステムに対応する本実施形態の連携動作プログラム生成ツール（デバイスビュー・ビルダー）１０の構成を示しており、連携動作プログラム生成ツール１０は図２に示すデバイス用コードＣ４及びデバイス定義ファイルＦ１を作成するためにデバイス開発者が用いるデバイスネットビルダー（デバイスコード生成ツール）２０との間で通信線（ネットワーク）により接続され、デバイスネットビルダー２０によって生成されたデバイス１との連携に必要な設定情報を記述したデバイスデータたるデバイス定義ファイルＦ１を読み込むデバイスデータ入力手段を構成するデバイス定義ファイル読込部１１と、入力されたデバイス定義ファイルＦ１を解析して連携動作に必要な情報を抽出する設定情報解析部１２及びオプション解析部１３と、これら解析結果に基づいてデバイスアクセス用スケルトンコード（デバイスアクセス用コード）Ｃ１を生成出力するデバイスアクセス用コード生成部１４と、サーバ３からクライアント端末２に提供する各種のサービス提供用のスケルトンコード（ＯＡＳサービス用コード）Ｃ２を生成するＯＡＳサービス用コード生成部１５と、データベースサーバ４に対応したデータベース（ＤＢ）用スケルトンコード（ＤＢ用コード）Ｃ３を生成するＤＢ用コード生成部１６とから構成される。
【００２１】
ここで、デバイスアクセス用コード生成部１４にて生成するデバイスアクセス用コードＣ１に少なくともデバイス１のコードが使用する変数及び関数及びイベントの夫々を処理するコードを含ませている。
【００２２】
また、ＤＢ用コード生成部１６で生成するＤＢ用スケルトンコードＣ３には、ＤＢスキーマ、ＤＢレコード、ＯＡＳサービス用コード及びデータベース用のコードの連携を行うコードを含ませている。
【００２３】
図３はデバイスネットビルダー２０におけるデバイス用コードＣ４、デバイス定義ファイルＦ１の生成過程と、サーバ開発者側で用いる連携動作プログラム生成ツール１０がサーバ開発に必要な各コードを生成する過程を示しており、この図で示すようにデバイスネットビルダー２０では上述した図１２（ａ）におけるデバイス開発者による開発手順と同じ過程によりコード生成を行っている。つまり、開発が開始されると、デバイス１として必要な機能選択を行い（Ｓ１）、オブジェクトが持つインターフェース生成（Ｓ２）、変数追加（Ｓ３）、関数追加（Ｓ４）、イベント追加（Ｓ５）を繰り返すことでインターフェースを生成し、この生成後オブジェクトの追加があれば、Ｓ６、Ｓ７の過程を繰り返すことでオブジェクト追加、インターフェース追加を行い、最終的にデバイス用コードＣ４及びデバイス定義ファイルＦ１をＳ８で生成してデバイスネットビルダー２０での処理は終了する。
【００２４】
一方連携動作プログラム生成ツール１０はサーバ用コード生成が開始されると、デバイスネットビルダー２０で生成されたデバイス定義ファイルＦ１を、通信線を介してデバイス定義ファイル読込部１１により読み込む（Ｓ１１）。
【００２５】
そしてこの読み込み後、設定情報解析部１２，オプション解析部１３による解析処理後、Ｓ９’の処理に移行し、まず変数値読込コード生成、変数値書出コード生成、関数呼出コード生成、変数サブスクライブコード生成，イベントサブクラブコード生成の処理がデバイスアクセス用コード生成部１４で為されることになる。
【００２６】
ここで、デバイスアクセス用コード生成部１４でのコード生成アルゴリズムを説明する。
【００２７】
変数値読込コード生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、変数の識別子、変数値の型及び接続情報があり、出力情報としては外部リソース（ファイル等）に出力、又は出力コードに直書きする。そして出力コードはオブジェクトに接続して変数の値を読み込むコードであり、そのコードのフローは、図４に示すようにオブジェクト情報の設定（Ｓ２０）、インターフェース情報の設定（Ｓ２１）、接続情報の設定（Ｓ２２）、オブジェクトとの接続（Ｓ２３）、接続後の変数値の読み込み（Ｓ２４）、オブジェクトとの接続の切断（Ｓ２５）、変数の値を返す（Ｓ２６）の過程からなる。
【００２８】
ここで入力情報をパラメータとして受け取る場合、図４で示すフローのコードは一つとなるが、必要なパラメータの選択はアプリケーション側で行う。また入力情報をコードに埋め込む場合は、アプリケーション側でのパラメータ選択は必要ないが、変数の値を読み込む変数の数だけ図４のフローのコードを生成する。
【００２９】
変数値書出コード生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、変数の識別子、変数値の型及び接続情報があり、出力情報としては外部リソース（ファイル等）に出力、又は出力コードに直書きする。そして出力コードはオブジェクトに接続して変数の値を書き出すコードであり、そのコードのフローは、図５に示すようにオブジェクト情報の設定（Ｓ３０）、インターフェース情報の設定（Ｓ３１）、接続情報の設定（Ｓ３２）を経て、オブジェクトに接続（Ｓ３３）、変数の値の書き出し（Ｓ３４）、オブジェクトとの接続の切断（Ｓ３５）の過程からなる。
【００３０】
ここで入力情報をパラメータとして受け取る場合、図５で示すフローのコードは一つとなるが、必要なパラメータの選択はアプリケーション側で行う。また入力情報をコードに埋め込む場合は、アプリケーション側でのパラメータ選択は必要ないが、変数の値を書き込む変数の数だけ図５のフローのコードを生成する。
【００３１】
また関数呼出コード生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、関数の識別子、パラメータ、戻り値の型及び接続情報があり、出力情報としては外部リソース（ファイル等）に出力、又は出力コードに直書きする。そして出力コードはオブジェクトに接続して関数を呼び出すコードであり、そのコードのフローは、図６に示すようにオブジェクト情報の設定（Ｓ４０）、インターフェース情報の設定（Ｓ４１）、接続情報の設定（Ｓ４２）、オブジェクトとの接続（Ｓ４３）、関数の呼び出し（Ｓ４４）、オブジェクトとの接続の切断（Ｓ４５）、関数の戻り値を返す（Ｓ４６）の過程からなる。
【００３２】
ここで入力情報をパラメータとして受け取る場合、図６で示すフローのコードは一つとなるが、必要なパラメータの選択はアプリケーション側で行う。また入力情報をコードに埋め込む場合は、アプリケーション側でのパラメータ選択は必要ないが、呼び出す関数の数だけ図６のフローのコードを生成する。
【００３３】
更に変数サブスクライブコード生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、変数の識別子、及び接続情報があり、出力情報としては外部リソース（ファイル等）に出力、又は出力コードに直書きする。そして出力コードはオブジェクトに接続してサブスクライブするコードであり、そのコードのフローは、図７に示すようにオブジェクト情報の設定（Ｓ５０）、インターフェース情報の設定（Ｓ５１）、接続情報の設定（Ｓ５２）、オブジェクトとの接続（Ｓ５３）、変数のサブスクライブ（Ｓ５４）、オブジェクトとの接続の切断（Ｓ５５）の過程からなる。
【００３４】
ここで入力情報をパラメータとして受け取る場合、図７で示すフローのコードは一つとなるが、必要なパラメータの選択はアプリケーション側で行う。また入力情報をコードに埋め込む場合は、アプリケーション側でのパラメータ選択は必要ないが、サブスクライブする変数の数だけ図７のフローのコードを生成する。
【００３５】
更にまたイベントサブスクライブコード生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、イベントの識別子、及び接続情報があり、出力情報としては外部リソース（ファイル等）に出力、又は出力コードに直書きする。そして出力コードはオブジェクトに接続してサブスクライブするコードであり、そのコードのフローは、図８に示すようにオブジェクト情報の設定（Ｓ６０）、インターフェース情報の設定（Ｓ６１）、接続情報の設定（Ｓ６２）、オブジェクトとの接続（Ｓ６３）、イベントのサブスクライブ（Ｓ６４）、オブジェクトとの接続の切断（Ｓ５５）の過程からなる。
【００３６】
ここで入力情報をパラメータとして受け取る場合、図８で示すフローのコードは一つとなるが、必要なパラメータの選択はアプリケーション側で行う。また入力情報をコードに埋め込む場合は、アプリケーション側でのパラメータ選択は必要ないが、サブスクライブするイベントの数だけ図８のフローのコードを生成する。
【００３７】
さて、デバイスアクセス用コード生成部１４でのデバイスアクセス用コードＣ１のコード生成後、ＯＡＳサービス用コード生成部１５がＯＡＳサービス用コードＣ２を生成する。ここでの出力コードは、予め設定されたＯＡＳサービス開発のガイドに基づいてＯＡＳサービスの基本的な機能を実装したスケルトンコードからなる。
【００３８】
そして、ＯＡＳサービス用コード生成部１５でのＯＡＳサービス用コードＣ２の生成後、ＤＢ用コード生成部１６がＤＢ用コードＣ３を生成する。このＤＢ用コードＣ３としてはＤＢスキーマ、ＤＢデータ、ＤＢ連携コードがある。
【００３９】
ＤＢスキーマ生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、変数の識別子、変数の値の型、関数の識別子、パラメータの型、戻り値の型、イベントのタイプ、及び接続情報があり、出力コードは変数、関数、イベントの状態を保持するようなデータベースを構成するためのスキーマからなる。
【００４０】
また、ＤＢデータ生成では、入力情報としてオブジェクトの識別子、インターフェースの識別子、変数の識別子、変数の値の型、関数の識別子、パラメータの型、戻り値の型、イベントのタイプ、及び接続情報があり、出力コードは変数、関数、イベントの状態を保持するようなデータベースを構成するためのデータからなる。
【００４１】
そしてＤＢ連携コード生成では、入力情報としてデータベースのスキーマ、データベースの接続情報があり、出力コードはＷｅｂサーバ機能（図１２参照）、ＯＡＳサービス機能（図１２参照）などからデータベースサーバ４のデータベースにアクセスするためのコードからなる。
【００４２】
図９はこのＤＢ連携コードのフローを示し、このフローはデータベース接続情報の設定（Ｓ７０）、データベースへの接続（Ｓ７１）、レコードの取得、更新、追加、削除（Ｓ７４）、データベースとの接続の切断（Ｓ７３）の過程からなる。
【００４３】
尚ＯＡＳサービス用コード生成部１５及びＤＢ用コード生成部１６の実行はオプション解析部１３の解析結果によって決まる。
【００４４】
次にサーバ開発者は、連携動作プログラム生成ツール１０によってデバイスアクセス用コードＣ１、ＯＡＳサービス用コードＣ２、ＤＢ用コードＣ３が生成されると、これらコードＣ１〜Ｃ３を用いて、図１０に示すようにユーザーインターフェース実装を行い、最終的にサーバ用コードＣ５を得るのである。
【００４５】
而して本実施形態では、連携動作プログラム生成ツール１０がデバイス開発者側のデバイスネットビルダー２０で作成されたデバイス定義ファイルＦ１を自動的に読み込んだ後、自動的にデバイスアクセス用コードＣ１、ＯＡＳサービス用コードＣ２、ＤＢ用コードＣ３を生成するため、デバイス１の機能の追加、修正、削除がサーバ開発側に即座に反映できる上にバグの発見が容易となり、サーバ３側のコード実装工数を少なくできるのである。
（実施形態２）
実施形態１の連携動作プログラム生成ツール１０はデバイスネットビルダー２０とは別体としていたが、本実施形態は図１１に示すようにデバイスネットビルダー２０に連携動作プログラム生成ツールの処理機能をプラグイン１０’として実装し、これによりデバイス開発者が用いるデバイスネットビルダー２０は、連携動作プログラム生成ツールとしても働くことになり、実施形態１のようにデバイス定義ファイルＦ１を読み込むための過程が不要となる。
【００４６】
つまりデバイス開発者側でデバイスネットビルダー２０を用いてデバイス用コードとともに、デバイスアクセス用コードＣ１、ＯＡＳサービス用コードＣ２、ＤＢ用コードＣ３を作成することができ、サーバ開発者側ではデバイスネットビルダー２０で作成されたデバイスアクセス用コードＣ１、ＯＡＳサービス用コードＣ２、ＤＢ用コードＣ３を用いて実施形態１と同様にユーザーインターフェースの実装だけを行えば良いことになる。
【図面の簡単な説明】
【００４７】
【図１】実施形態１の構成図である。
【図２】実施形態１を用いる全体システム構成図である。
【図３】実施形態１の動作説明用のフローチャートである。
【図４】実施形態１の変数値読込コード作成のフローチャートである。
【図５】実施形態１の変数値書出コード作成のフローチャートである。
【図６】実施形態１の関数呼出コード作成のフローチャートである。
【図７】実施形態１の変数サブスクライブコード作成のフローチャートである。
【図８】実施形態１のイベントサブスクライブコード作成のフローチャートである。
【図９】実施形態１のＤＢ連携コード作成のフローチャートである。
【図１０】実施形態１のサーバ開発のフローチャートである。
【図１１】実施形態２の模式的な構成説明図である。
【図１２】デバイスの監視・制御のためのシステム例図である。
【図１３】（ａ）は従来のデバイス開発者側のデバイス用コード生成過程を示すフローチャート、（ｂ）は従来のサーバ開発者側のコード生成過程を示すフローチャートである。
【符号の説明】
【００４８】
１０  連携動作プログラム生成ツール
１１  デバイス定義ファイル読込部
１２  設定情報解析部
１３  オプション解析部
１４  デバイスアクセス用コード生成部
１５  ＯＡＳサービス用コード生成部
１６  ＤＢ用コード生成部
Ｃ１  デバイスアクセス用コード
Ｃ２  ＯＡＳサービス用コード
Ｃ３  ＤＢ用コード
Ｆ１  デバイス定義ファイル
【図１】
2008242860.tif 000003
【図２】
2008242860.tif 000004
【図３】
2008242860.tif 000005
【図４】
2008242860.tif 000006
【図５】
2008242860.tif 000007
【図６】
2008242860.tif 000008
【図７】
2008242860.tif 000009
【図８】
2008242860.tif 000010
【図９】
2008242860.tif 000011
【図１０】
2008242860.tif 000012
【図１１】
2008242860.tif 000013
【図１２】
2008242860.tif 000014
【図１３】
2008242860.tif 000015