(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-28
(54)【発明の名称】アプリケーションプログラムを構築する方法、アプリケーションプログラムを実行する方法、コンピューティング装置および記憶媒体
(51)【国際特許分類】
G06F 8/20 20180101AFI20240521BHJP
【FI】
G06F8/20
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023573584
(86)(22)【出願日】2021-05-31
(85)【翻訳文提出日】2024-01-10
(86)【国際出願番号】 CN2021097457
(87)【国際公開番号】W WO2022252068
(87)【国際公開日】2022-12-08
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】517291346
【氏名又は名称】シーメンス アクチエンゲゼルシヤフト
【氏名又は名称原語表記】Siemens Aktiengesellschaft
【住所又は居所原語表記】Werner-von-Siemens-Str. 1, D-80333 Muenchen, Germany
(74)【代理人】
【識別番号】100114890
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ドン リー
(72)【発明者】
【氏名】シャオボ ヤン
(72)【発明者】
【氏名】ジアンヨン ヂァン
(72)【発明者】
【氏名】トンツォウ ワン
(72)【発明者】
【氏名】チュアンユー ヂャン
(72)【発明者】
【氏名】ヤオレイ カン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC14
5B376BC16
5B376FA13
5B376GA13
(57)【要約】
分散型のアプリケーションプログラムを構築する方法、アプリケーションプログラムを実行する方法、コンピューティング装置および記憶媒体。アプリケーションを構築するこの方法は、アプリケーションプログラムを構成する複数の機能モジュールを決定すること(S102)、各機能モジュールに、予め構成された通信コンポーネントを追加すること(S104)、この通信コンポーネントを用いて複数の機能モジュール間の接続関係を確立し、この接続関係を構成ファイルに格納すること(S108)を備える。
【特許請求の範囲】
【請求項1】
アプリケーションプログラムを構築する方法であって、
アプリケーションプログラムを構成する複数の機能モジュールを決定するステップと、
各機能モジュールに、予め構成された通信コンポーネントを取り付けるステップと、
前記通信コンポーネントを用いて前記複数の機能モジュール間の接続関係を確立し、前記接続関係を構成ファイルに格納するステップと、
を備える、方法。
【請求項2】
前記機能モジュールは、独立した機能を実装するスレッドまたはプロセスである、請求項1記載の方法。
【請求項3】
前記通信コンポーネントは、入力通信インタフェースおよび出力通信インタフェースのうちの少なくとも1つを備える、請求項1記載の方法。
【請求項4】
前記通信コンポーネントはさらに、監視モジュール、キャッシングモジュールおよびロードバランシングモジュールのうちの少なくとも1つを備える、請求項3記載の方法。
【請求項5】
前記構成ファイルを修正することによって、前記アプリケーションプログラムの実行ロジックを修正するステップをさらに備える、請求項1から4までのいずれか1項記載の方法。
【請求項6】
アプリケーションプログラムを実行する方法であって、
前記アプリケーションプログラムは、請求項1から5までのいずれか1項記載の方法を使用して構築されており、
前記アプリケーションプログラムを実行する方法は、
前記アプリケーションプログラムを初期化し、アプリケーションプログラム構成ファイルをロードするステップと、
前記アプリケーションプログラムの第1の機能モジュールがデータを受信すると、前記第1の機能モジュールの実行をトリガするステップと、
前記第1の機能モジュールの実行結果に従って、前記第1の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、前記ポートに結合されている第2の機能モジュールの実行をトリガするように、前記第1の機能モジュールによって、データを送信し、前記第2の機能モジュールの実行結果に従って、前記第2の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、前記ポートに結合されている第3の機能モジュールの実行をトリガするように、前記第2の機能モジュールによって、データを送信し、この続きを前記アプリケーションプログラムの実行が終了するまで続けるステップと、
を備える、方法。
【請求項7】
コンピューティング装置(400)であって、
少なくとも1つのプロセッサ(402)と、
前記少なくとも1つのプロセッサ(402)に結合されたメモリ(404)と、
を備え、
前記メモリは、前記少なくとも1つのプロセッサ(402)によって実行された場合に、請求項6記載の方法を前記プロセッサ(402)に実施させる命令を格納するために使用される、
コンピューティング装置(400)。
【請求項8】
非一時的な機械可読記憶媒体であって、前記非一時的な機械可読記憶媒体は、実行された場合に、請求項6記載の方法を機械に実施させる実行可能な命令を格納している、非一時的な機械可読記憶媒体。
【請求項9】
コンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータ可読記憶媒体に有形に格納されており、かつコンピュータ実行可能な命令を備え、前記命令は、実行された場合に、請求項6記載の方法を少なくとも1つのプロセッサに実施させる、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、Industrial Internet of Thingsの技術分野に関し、より具体的にはアプリケーションプログラムを構築する方法、アプリケーションプログラムを実行する方法、コンピューティング装置および記憶媒体に関する。
【0002】
背景技術
ソフトウェアの規模が大きくなって、市場投入までの時間が短くなるにつれて、モジュール式のプログラミングがソフトウェア設計および実装技術の重要な手法になってきた。プログラムの機能を独立した交換可能なモジュールに分割することが目的である。このようにして、開発者は、複数のアプリケーションプログラムを並列に開発することができ、各モジュールの再利用性を向上させ、これによって、アプリケーションプログラムの市場投入までの時間を短くすることができる。
【0003】
Robot Operating System(ROS)は、ロボットソフトウェアを記述するための柔軟なフレームワークである。ROSは、様々なロボットプラットフォームにわたって複雑でロバストなロボット挙動を生じさせるタスクを単純化するように設計された、ツール、ライブラリおよびイベントの集合体である。しかし、これがロボットアプリケーションに使用されない場合、オペレーティングシステムおよびプログラミング言語には制限がある。
【0004】
Node-REDは、ハードウェア装置、APIおよびオンラインサービスを接続する、従来技術におけるプログラミングツールである。Node-REDにおける既存ノードを用いることによって、アプリケーションプログラムを簡単に合成することができる。しかし、新しいノードを開発するために、比較的大きな作業負荷が必要である(限定されたアプリケーション機能を開発するために使用できるのはJavaScript言語だけである。コア機能を開発するために、比較的大きな作業負荷が必要であり、これはたとえば、モジュールAPI、ストレージAPI、HTTP API、コンテキストAPIの理解などである)。
【0005】
発明の概要
本発明の特定の態様の基本的な理解を提供するために、本発明の簡単な概要を以降に提示する。この概要が、本発明の網羅的な全体像ではないことが理解されるべきである。本発明の主要な要素または重要な要素を決定すること、または本発明の範囲を定義することは意図されていない。この概要の目的は、単に、以後で説明するより詳細な説明の前置きとして、いくつかの概念を簡略化された形で提示することである。
【0006】
これを考慮して、本発明は、複数の機能モジュールを1つのアプリケーションプログラムに組み込み、複数の機能モジュール間の通信を実現することができる軽量分散型のアプリケーションプログラムを構築する方法を提案する。
【0007】
本開示の一態様によれば、アプリケーションプログラムを構築する方法が提供され、アプリケーションプログラムを構築する方法は、アプリケーションプログラムを構成する複数の機能モジュールを決定すること、各機能モジュールに、予め構成された通信コンポーネントを取り付けること、およびこの通信コンポーネントを用いて複数の機能モジュール間の接続関係を確立し、この接続関係を構成ファイルに格納することを備える。
【0008】
任意選択的に、上述の態様の例では、機能モジュールは、独立した機能を実装するスレッドまたはプロセスである。
【0009】
任意選択的に、上述の態様の例では、通信コンポーネントは、入力通信インタフェースおよび出力通信インタフェースのうちの少なくとも1つを備える。
【0010】
任意選択的に、上述の態様の例では、通信コンポーネントはさらに、監視モジュール、キャッシングモジュールおよびロードバランシングモジュールのうちの少なくとも1つを備える。
【0011】
任意選択的に、上述の態様の例では、この方法は、構成ファイルを修正することによって、アプリケーションプログラムの実行ロジックを修正することをさらに備える。
【0012】
本開示の別の態様によれば、アプリケーションプログラムを実行する方法が提供され、アプリケーションプログラムは上述のアプリケーションプログラムを構築する方法を使用して構築されており、アプリケーションプログラムを実行する方法は、アプリケーションプログラムを初期化し、アプリケーションプログラム構成ファイルをロードすること、アプリケーションプログラムの第1の機能モジュールがデータを受信すると、第1の機能モジュールの実行をトリガすること、および第1の機能モジュールの実行結果に従って、第1の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、このポートに結合されている第2の機能モジュールの実行をトリガするように、第1の機能モジュールによって、データを送信し、第2の機能モジュールの実行結果に従って、第2の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、このポートに結合されている第3の機能モジュールの実行をトリガするように、第2の機能モジュールによって、データを送信し、この続きをアプリケーションプログラムの実行が終了するまで続けることを備える。
【0013】
本開示の別の態様によれば、コンピューティング装置が提供され、このコンピューティング装置は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合されたメモリとを備え、このメモリは、少なくとも1つのプロセッサによって実行された場合に、上述の方法をプロセッサに実施させる命令を格納するために使用される。
【0014】
本開示の別の態様によれば、非一時的な機械可読記憶媒体が提供され、この非一時的な機械可読記憶媒体は、実行された場合に、上述の方法を機械に実施させる実行可能な命令を格納している。
【0015】
本開示の別の態様によれば、コンピュータプログラムが提供され、このコンピュータプログラムは、実行された場合に、上述の方法を少なくとも1つのプロセッサに実施させるコンピュータ実行可能な命令を備える。
【0016】
本開示の別の態様によれば、コンピュータプログラム製品が提供され、このコンピュータプログラム製品は、コンピュータ可読記憶媒体に有形に格納されており、かつコンピュータ実行可能な命令を備え、この命令は、実行された場合に、上述の方法を少なくとも1つのプロセッサに実施させる。
【0017】
本発明に係るアプリケーションプログラムを構築する方法およびアプリケーションプログラムを実行する方法は、以降の利点の少なくとも1つを有する。
【0018】
開発者が、任意のプログラミング言語を使用して、複数の機能モジュールを並列に開発し、機能モジュール間の依存性を減らすことができる。開発者は、通信の詳細を考慮することなく、機能モジュールによって実装されるべき機能に焦点を当てるだけでよい。
【0019】
機能モジュールは、いかなるコードも変更することなく、1つの機械または複数の異なる機械に展開され得る。
【0020】
開発者は、構成ファイルを修正することによって、アプリケーションプログラムの実行ロジックを修正することができ、構成ファイルを修正することによって、共有メモリ、IPCまたはソケットなどの機能モジュール間の通信方法を動的に調整することができる。
【0021】
新たな装置の機能モジュールが、アプリケーションプログラムの実行に影響を与えることなく容易に追加可能である。
【0022】
キャッシングモジュールを用いることによって、機能モジュールに障害が発生しても、アプリケーションプログラムの他の機能モジュールの実行は中断されず、データが失われることもない。
【0023】
本発明の上述の課題および他の課題、特徴および利点は、図面と併せて、本発明の実施形態の以降の説明を参照することで、より容易に理解されるであろう。図面中のコンポーネントは、本発明の原理の単なる例示である。図面では、同じまたは類似の技術的な特徴またはコンポーネントは、同じまたは類似の参照符号によって示される。
【図面の簡単な説明】
【0024】
【
図1】本発明の実施形態による、アプリケーションプログラムを構築する方法の例示的なプロセスのフローチャートを示す図である。
【
図2】本発明の実施形態の方法を用いて構築されたゲートウェイアプリケーションプログラムの特定の例の概略図を示す図である。
【
図3】本発明の方法に従って構築されたアプリケーションプログラムを実行する方法の例示的なプロセスのフローチャートを示す図である。
【
図4】本開示の実施形態によるアプリケーションプログラムを実行するためのコンピューティング装置のブロック図を示す図である。
【0025】
好適な実施形態の詳細な説明
次に、本明細書において説明された主題を、例示的な実施形態を参照して説明する。これらの実施形態は、純粋に、特許請求の範囲に記載された保護範囲、適用性または例を限定することなく、本明細書において説明された主題をより良く理解し、ひいては実装することを当業者に可能にするために説明されているものと理解されたい。説明された要素の機能および配置は、本開示の内容の保護範囲から逸脱することなく変更可能である。必要に応じて、各例から様々なプロセスまたはコンポーネントを省略したり、各例において置換したり、また各例に追加したりすることができる。たとえば、説明された方法は、説明されたものとは異なる順序で実施されてよく、全てのステップが追加、省略または組み合わされてよい。さらに、いくつかの例に関連して説明された特徴を、他の例において組み合わせることもできる。
【0026】
本明細書で使用するとき、「備える(comprises)」という用語およびその変形はオープンタームを示し、「含んでいるが、これに限定されない(including but not limited to)」を意味する。「~に基づく(based on)」という用語は、「~に少なくとも部分的に基づく(at least partly based on)」を意味する。「一実施形態(one embodiment)」および「実施形態(an embodiment)」という用語は、「少なくとも1つの実施形態(at least one embodiment)」を意味する。「別の実施形態(another embodiment)」という用語は、「少なくとも1つの他の実施形態(at least one other embodiment)」を意味する。「第1(first)」、「第2(second)」などの用語は、異なるオブジェクトまたは同一のオブジェクトを示す場合がある。その他の定義は、以降に明示的または暗示的に含まれ得る。文脈において明確に示されない限り、用語の定義は、本明細書全体を通して同じである。
【0027】
本発明の実施形態によれば、複数の機能モジュールを1つのアプリケーションプログラムに組み込み、複数の機能モジュール間の通信を実現することができる軽量分散型のアプリケーションプログラムを構築する方法が提案される。
【0028】
本開示の実施形態による、アプリケーションプログラムを構築する方法およびアプリケーションプログラムを実行する方法を、図面を参照して以降に詳細に説明する。
図1は、本発明の実施形態による、アプリケーションプログラムを構築する方法100の例示的なプロセスのフローチャートである。
【0029】
まず、ステップS102において、アプリケーションプログラムを構成する複数の機能モジュールが決定される。
【0030】
本発明の方法によれば、まず、アプリケーションプログラムが、アプリケーションプログラムの機能に従って、独立した複数の機能モジュールに分割される。このようにして、種々異なる機能モジュールを並列に複数の開発者によって開発することができ、開発された各モジュールは、より良好な再利用性を有する。
【0031】
各モジュールは独立した機能を実装し、単独で動作するプロセスであっても、他のモジュールと共に動作するスレッドであってもよい。
【0032】
次に、ステップS104において、各機能モジュールに、予め構成された通信コンポーネントを取り付ける。
【0033】
本開示による方法では、1つの機能モジュールと他の機能モジュールとが、それらの間で接続を確立し、通信コンポーネントを介してデータを交換する。通信コンポーネントは、種々異なる機能を実装するための複数の機能を含み得る、予め構成された通信ライブラリである。さらに、通信ライブラリは、種々異なるプログラミング言語を使用する機能モジュールをサポートしてよい。したがって、機能モジュールを開発するために開発者によって使用されるプログラミング言語に制限はない。
【0034】
通信コンポーネントは当業者によって予め構成されていてよく、種々異なるプログラミング言語において、機能モジュールに対して複数のバージョンが提供されてよい。通信コンポーネントの特定の実装は、本発明において限定されるものではなく、本明細書では詳細に説明しない。
【0035】
機能モジュール間のスケジューリングを実装するために、機能モジュールに取り付けられた通信コンポーネントは、少なくとも、入力通信インタフェースおよび出力通信インタフェースのうちの少なくとも1つを含んでいる。モジュールによって実装されるべき機能に従って、入力通信インタフェースのみが取り付けられてよい、または出力通信インタフェースのみが取り付けられてよい、またはこれら両方が取り付けられてよい。たとえば、以降の
図2に示されたゲートウェイアプリケーションプログラムの例では、アプリケーションプログラムのデータソースとして、外部装置からデータを取得する機能モジュールに、出力通信インタフェースだけが取り付けられてよく、この機能モジュールは、この出力通信インタフェースを介してアプリケーションプログラムの他の機能との接続を確立する。データプールの機能モジュールとしては、入力通信インタフェースのみが取り付けられてよく、この機能モジュールは、データを他の機能モジュールから、格納のために、この入力通信インタフェースを介して受信することができる。
【0036】
ステップS106において、機能モジュールの通信コンポーネントを用いて複数の機能モジュール間の接続関係が確立され、この接続関係が構成ファイルに格納される。
【0037】
上述のステップを通して、複数の機能モジュールを1つのアプリケーションプログラムとして構築することができる。これらの機能モジュールは、接続を確立し、通信コンポーネントを介してデータを交換する。
【0038】
例では、通信コンポーネントは、監視モジュール、キャッシングモジュール、ロードバランシングモジュールなどのうちの少なくとも1つも含み得る。監視モジュールは、2つの機能モジュール間の接続が正常であるかどうかを監視するために使用される。キャッシングモジュールは、送信されるべきデータまたは受信されるべきデータをキャッシュすることができる。キャッシュを用いて、機能モジュールのホットスイッチングを実現することができる。機能モジュールが交換されても、メッセージは失われず、他の機能モジュールは引き続き実行可能である。ロードバランシングモジュールは、複数の機能モジュール間での負荷のバランスをとるために使用される。また、業務量が多い場合には、時間のかかる作業を処理するために、同じ機能モジュールを複数個使用することができる。監視モジュール、キャッシングモジュールおよびロードバランシングモジュールは、それぞれ入力通信インタフェースおよび出力通信インタフェース内にセットされ得る。
【0039】
例では、アプリケーションプログラムを構築する方法100は、構成ファイルを修正することによって、アプリケーションプログラムの実行ロジックを修正するステップS108をさらに含む。
【0040】
たとえば、機能モジュールの追加、データ受信のための機能モジュールのポートの修正、機能モジュールの呼び出し関係の修正などの際には、これら全てを構成ファイルの修正によって実現することができる。
【0041】
図2は、本発明の方法を用いて構築されたゲートウェイアプリケーション200の特定の例の概略図である。以降では、
図2の特定の例を参照して、アプリケーションプログラムを構築する特定のプロセスをさらに説明する。
【0042】
ここでは、ゲートウェイアプリケーションプログラム200が、7つの機能モジュール、すなわちM1,M2,M3,M4,M5,M6およびM7を含むものと仮定する。このうち、M1,M2,M3およびM6は外部装置からデータを取得するアプリケーションプログラムのデータソースであり、M7はデータを受信して格納するデータプールであり、M4およびM5は所定のロジックに従ってデータを処理するデータフィルタである。各機能モジュールには、通信コンポーネントが取り付けられる。ここで、参照符号OCIは、出力通信インタフェースを示し、ICIは入力通信インタフェースを示す。種々異なる機能モジュールに対して、OCIおよびICIに含まれる特定の内容が異なっている場合があるが、同様の機能が実装されるため、これらは本明細書の参照符号においては区別されない、ということを理解されたい。機能モジュールによって実装される種々異なる機能に従って、M1,M2およびM3には出力通信インタフェースOCIのみが取り付けられ、M7には入力通信インタフェースICIのみが取り付けられ、M4,M5およびM6には出力通信インタフェースOCIと入力通信インタフェースICIとの双方が取り付けられる。
【0043】
以降に示す構成ファイルでは、これは、機能モジュールごとに個別に構成されている。M1の構成情報において、cは、M1がクライアントとして機能することを表し、その出力インタフェースパラメータは、’tcp://localhost:5557’である。このパラメータは、M1が、ポート「5557」によって提供されるサービスに接続されるべきであることを示す。この構成ファイルによれば、M1がM4に接続されていることが分かる。M4の構成情報において、bは、バインディング’tcp://*:5557’を示し、すなわち、M4は、ポート5557を介してサービスを提供し、かつM4は、ポート5558によって提供されるサービスに接続されており、すなわち、M4はM5に接続されている。他の機能モジュールの構成情報については、ここでは詳しく説明しない。この構成ファイルによって、
図2に示されているような、複数の機能モジュール間の接続関係を取得することができる。
【0044】
ゲートウェイアプリケーションプログラムの構成ファイル:
【数1】
【0045】
新たな装置がゲートウェイに接続されるべき場合、新たな機能モジュールにおいて、開発者は、新たな装置のハードウェアに関連するコードを実装し、その後、それに通信コンポーネントを取り付け、新たな装置の機能モジュールをアプリケーションプログラムの構成ファイルに構成するだけでよい。新たな機能モジュールを追加する場合には、機能モジュールM4~M7は、何ら変更を加えることなく、またアプリケーションプログラムを再起動することもなく、再利用可能である。M5などのデータフィルタモジュールを交換する必要がある場合、M5が動作を停止したときに、M4およびM7は動作を停止しない。M4のデータは、通信コンポーネントのキャッシングモジュールに一時的に格納される。新たに交換された機能モジュールM5が動作を開始すると、構成ファイル内の接続関係に従って、M4とM5との間の接続が自動的に確立される。この時点で、キャッシュされたデータが新たなM5へ再送される。M5が動作を停止しても、M7は他の機能モジュールからのデータを、影響を受けることなく受信し続ける。
【0046】
本発明の実施形態のアプリケーションプログラムを構築する方法に従って構築されたアプリケーションプログラムは、イベントトリガ型データフローであり、すなわち、機能モジュールがデータを受信すると、アプリケーションプログラムの実行がトリガされ得る。
【0047】
本発明の方法に従って構築されたアプリケーションプログラムの実行プロセスを、以降で
図3を参照して説明する。
【0048】
図3は、本発明の方法に従って構築されたアプリケーションプログラムを実行する方法300の例示的なプロセスのフローチャートである。
【0049】
まず、ステップS302において、アプリケーションプログラムが初期化され、アプリケーションプログラムの構成ファイルがロードされる。
【0050】
具体的には、本発明の方法に従って構築されたアプリケーションプログラムの初期化フェーズにおいて、アプリケーションプログラムの初期化機能を実行することに加えて、アプリケーションプログラムの構成ファイルをロードする必要がある。本明細書において説明された構成ファイルは、上述したような様々な機能モジュール間の接続関係を構成する構成ファイルである。
【0051】
加えて、モジュール構成ファイルが、初期化フェーズ中にロードされてもよい。モジュール構成ファイルは、モジュールの内部パラメータを構成するファイルである。同じ機能モジュールが複数のインスタンスを有していてよく、各インスタンスが、同じまたは異なるモジュール構成ファイルを有していてよい。
【0052】
次に、ステップS304において、アプリケーションプログラムの第1の機能モジュールがデータを受信すると、第1の機能モジュールの実行がトリガされる。
【0053】
ここでの第1の機能モジュールは、特定の機能モジュールを指していない。アプリケーションの特定の機能モジュールがデータを受信すると、これは機能モジュールの実行をトリガし、その結果、アプリケーションプログラムの実行をトリガする。この場合、この機能モジュールは第1の機能モジュールと称される。以降の第1の機能モジュール、第2の機能モジュールおよび第3の機能モジュールは、単に種々異なる機能モジュールを区別するためのものであり、特定の機能モジュールを指すものではない。様々な機能モジュールを実行するための特定の順序はない。
【0054】
クライアント/サーバ(C/S)メカニズムをサポートすることに加えて、本発明の方法に従って構築されたアプリケーションプログラムは、サブスクリプション/パブリッシング(Pub/Sub)メカニズムもサポートする。この場合、特定のトピックに関するイベントを受け取ると、機能モジュールの実行がトリガされる。
【0055】
最後に、ステップS306において、第1の機能モジュールが、第1の機能モジュールの実行結果に従って、第1の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、このポートに結合されている第2の機能モジュールの実行をトリガするように、データを送信し、第2の機能モジュールが、第2の機能モジュールの実行結果に従って、第2の機能モジュールの出力通信インタフェースにおける予め構成されたポートに、このポートに結合されている第3の機能モジュールの実行をトリガするように、データを送信し、この続きをアプリケーションプログラムの実行が終了するまで続ける。
【0056】
ゲートウェイアプリケーションプログラムの実行プロセスの特定の例について、
図2を再び参照して以降で説明する。
【0057】
まず、機能モジュールM1が外部センサからアラームデータを受信したと仮定とすると、M1の実行がトリガされる。M1の実行結果は、M1の出力通信インタフェースを介してポート「5557」に送られ、すなわち、機能モジュールM4の入力通信インタフェースに送られ、その後、M4の実行がトリガされる。M4の実行結果は、M4の出力通信インタフェースを介してポート「5558」へ送られ、すなわち、機能モジュールM5の入力通信インタフェースへ送られ、その後、M5の実行がトリガされる。次に、M5の実行結果が、M5の出力通信インタフェースを介してポート「5559」に送られ、すなわち、機能モジュールM7の入力通信インタフェースに送られる。M7は、受信したデータを他の機能モジュールに送信することなく格納し、ゲートウェイアプリケーションプログラムが終了する。ある期間が経過すると、機能モジュールM2がデータを受信する可能性があり、次いでアプリケーションプログラムの新たな実行プロセスがトリガされる。
【0058】
本発明のアプリケーションプログラムを構築する方法に従って構築されたアプリケーションプログラムが、データまたはイベントに基づいてトリガされることが明らかである。機能モジュールの開始順序はなく、これらの機能モジュールは、並列に実行されてもよい。
【0059】
本発明のアプリケーションプログラムを構築する方法およびアプリケーションプログラムを実行する方法は、以降の利点の少なくとも1つを有する。
【0060】
モジュール間の依存性を減らすことによって、開発者は、開発を並列に行うことができ、機能モジュールを開発するために任意のプログラミング言語を使用することができ、通信の詳細を考慮することなく、機能モジュールによって実装されるべき機能に焦点を当てるだけでよい。
【0061】
機能モジュールは、いかなるコードも変更することなく、1つの機械または複数の異なる機械に展開され得る。
【0062】
開発者は、構成ファイルを修正することによって、アプリケーションプログラムの実行ロジックを修正することができ、構成ファイルを修正することによって、共有メモリ、IPCまたはソケットなどの機能モジュール間の通信方法を動的に調整することができる。
【0063】
新たな装置の機能モジュールが、アプリケーションプログラムの実行に影響を与えることなく容易に追加可能である。
【0064】
キャッシングモジュールを用いることによって、機能モジュールに障害が発生しても、アプリケーションプログラムの他の機能モジュールの実行は中断されず、データが失われることもない。
【0065】
本開示の実施形態による、アプリケーションプログラムを構築する方法およびアプリケーションプログラムを実行する方法については、
図1~
図3を参照して上で説明した。上述したアプリケーションを実行する方法は、ソフトウェアを使用して、またはハードウェアとソフトウェアとの組み合わせを使用して実装され得る。
【0066】
図4は、本開示の実施形態によるアプリケーションプログラムを実行するためのコンピューティング装置400のブロック図を示す。一実施形態によれば、コンピューティング装置400は、コンピュータ可読記憶媒体(すなわちメモリ404)において格納または符号化された少なくとも1つのコンピュータ実行可能な命令(すなわち、上述のソフトウェアの形態において実装された要素)を実行する少なくとも1つのプロセッサ402を含んでいてよい。
【0067】
メモリ404に格納されているコンピュータ実行可能な命令は、実行された場合に、本開示の様々な実施形態における、
図3を参照して上述した様々な動作および機能を少なくとも1つのプロセッサ402に実行させることを理解されたい。
【0068】
一実施形態によれば、非一時的な機械可読記憶媒体が提供される。非一時的な機械可読記憶媒体は、機械実行可能な命令(すなわち、上述のソフトウェアの形態において実装された要素)を有していてよく、この命令は、機械によって実行された場合に、本開示の様々な実施形態における、
図3を参照して上述した様々な動作および機能を機械に実行させる。
【0069】
一実施形態によれば、コンピュータプログラムが提供される。コンピュータプログラムは、コンピュータ実行可能な命令を含み、この命令は、実行された場合に、本開示の様々な実施形態における、
図3を参照して上述した様々な動作および機能を少なくとも1つのプロセッサに実行させる。
【0070】
一実施形態によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータ実行可能な命令を含み、この命令は、実行された場合に、本開示の様々な実施形態における、
図3を参照して上述した様々な動作および機能を少なくとも1つのプロセッサに実行させる。
【0071】
本明細書における様々な実施形態が漸進的な手法で説明され、様々な実施形態の間の同じまたは類似の部分が互いに参照され得ることが理解されるべきである。各実施形態の重点は、他の実施形態との差異を説明することである。たとえば、器械に関する上述の実施形態、コンピューティング装置に関する実施形態、および機械可読記憶媒体に関する実施形態の場合、これらの実施形態は、基本的に方法の実施形態に類似しているので、これらは比較的簡単に説明されている。関連する詳細については、方法の実施形態の説明の部分を参照されたい。
【0072】
本明細書の特定の実施形態を上で説明した。他の実施形態は、添付の特許請求の範囲内にある。場合によっては、特許請求の範囲に記載された動作またはステップが、実施形態の動作またはステップとは異なる順序で実行されてよく、それでもなお所望の結果を得ることができる。さらに、図面に示されているプロセスは、所望の結果を得るために、必ずしも、示されている特定の順序または順次連続する順序を要するものではない。特定の実装では、マルチタスキングおよび並列処理も可能であり、または有利であり得る。
【0073】
上述のプロセスおよびシステム構造図における全てのステップおよびユニットが必要とされるわけではなく、一部のステップまたはユニットを実際のニーズに合わせて省くことができる。上述の実施形態で説明した器械構造は、物理的構造または論理的構造であってよく、すなわち、いくつかのユニットが、同じ物理的実体によって実装されてよく、またはいくつかのユニットが、複数の物理的実体によってそれぞれ実装されてよく、または複数の別個の装置間でいくつかのコンポーネントによって一緒に実装されてよい。
【0074】
図面を参照して上述した詳細な説明は、例示的な実施形態を説明するものであり、実装可能な全ての実施形態、または特許請求の範囲に含まれる全ての実施形態を表すものではない。本明細書全体を通して使用される「例示的(exemplary)」という用語は、「例、事例または例示として機能すること(serving as an example, instance, or illustration)」を意味し、他の実施形態よりも「好ましい(preferred)」または「有利であること(advantageous)」を意味するものではない。詳細な説明は、説明された技術の理解を提供する目的のための特定の詳細を含む。しかし、これらの技術を、これらの特定の詳細を用いずに実装することができる。いくつかの事例では、説明された実施形態の概念が不明瞭になるのを避けるために、周知の構造および器械が、ブロック図の形態で示されている。
【0075】
本開示の上述の説明は、あらゆる当業者が本開示の内容を実装または使用することを可能にするために提供されている。本開示に対する様々な修正は、当業者には明らかであり、本明細書において定義された一般的な原理は、本開示の保護範囲から逸脱することなく、他の修正に適用され得る。したがって、本開示は、本明細書において説明された例および設計に限定されることを意図したものではなく、本開示には、本明細書において開示された原理および新規の特徴と一致する極めて広い範囲が与えられるべきである。
【0076】
上述の実施形態は、本発明の範囲を限定することを意図したものではなく、本発明の単なる好ましい実施形態であり、本発明の精神または原理から逸脱することなく行われる任意の修正、等価の置き換えおよび改良は、本発明の保護範囲内に含まれる。
【符号の説明】
【0077】
100 アプリケーションプログラム
S102,S104,S106,S108 ステップ
200 ゲートウェイアプリケーションプログラム
M1,M2,M3,M4,M5,M6,M7 機能モジュール
OCI 出力通信インタフェース
ICI 入力通信インタフェース
300 アプリケーションプログラムを実行する方法
S302,S304,S306 ステップ
400 コンピューティング装置
402 プロセッサ
404 メモリ
【国際調査報告】