Analytics Builder の使用開始

Analytics Builder とは

Analytics Builder では、新しいデータを生成したり、イベントを出力したりするために、ストリーミング データを変換または分析する分析モデルを構築できます。モデルはリアルタイムでデータを処理できます。

グラフィカル環境でモデルを構築するには、事前に構築されたブロックをモデルに結合します。モデル内のブロックは、小さなロジックをパッケージ化し、多数の入力、出力、およびパラメーターをもちます。各ブロックは、センサーからのデータの受信、計算の実行、条件の検出、出力信号の生成など、特定の機能を実装します。ブロックの構成を定義し、ワイヤーを使用してブロックを接続します。モデルを編集したり、履歴データを使用してデプロイをシミュレートしたり、ライブシステムに対して実行したりできます。詳細については、モデルの理解 をご覧ください。

Analytics Builder は、次のツールで構成されています。

ブロックは Apama のイベント処理言語 (EPL) で実装されています。実行時に EPL コードは Apama コリレーターで実行され、モデルが実行されます。実行時の動作と制限について理解しておくことが重要です。これらについては、後のトピックで説明します。

最初のステップ: 最初のモデルの作成

このトピックでは、新しいモデルを追加および設計する方法と、その出力を表示する方法について簡単に説明します。これは、Analytics Builder が提供するすべての機能を包括的に説明することを意図したものではありません。そのため、説明は最小限にとどめています。詳細については、このドキュメントの残りの部分をご覧ください。

以下の手順では、デバイスが Things Cloud にすでに登録されている必要があります。これは、すでにメジャーメントをThings Cloudに送信しているデバイスであることが望ましいです。これは、たとえば、Cumulocity IoT Sensor Appがインストールされているスマートフォンです (詳細については、ユーザーガイドCumulocity IoT Sensor App をご覧ください)。

追加するモデルには、次の 3 つのブロックが含まれます。

以下のすべての手順を完了すると、モデルは次のようになります。

Completed model with three

ステップ 1: Analytics Builder に切り替える

ストリーミング分析アプリケーションのホーム画面で、Analytics Builder の見出しの下に表示される 開く ボタンをクリックします。

または、左側のナビゲータで Analytics Builder をクリックします。

備考
ナビゲータ が現在非表示になっている場合は、トップバーの左端にある小さな矢印をクリックして、ナビゲータ の表示を切り替えます。

ステップ 2: 新しいモデルを追加する

Analytics Builder を起動すると最初に表示されるページはモデルマネージャーです。

  1. モデル タブで、ツールバーの 新しいモデル をクリックします。

  2. 表示されるダイアログ ボックスでモデル名を入力し、OK をクリックします。

ステップ 3: 入力ブロックを追加する

モデルはモデルエディタで設計します。 モデル名を入力すると、モデルエディタが表示されます。 左側に表示されるパレットには、モデルに追加できるすべてのブロックが含まれています。 ブロックを追加するには、パレットからキャンバスにブロックをドラッグします。 Things Cloud に登録されている入力デバイスのブロックが 入力 に表示されます。

  1. パレットで、入力を展開します。

  2. 測定入力 ブロックをキャンバスにドラッグします。

    ブロックパラメーターエディタが自動的に表示されます。

    備考
    ブロックパラメーターエディタが表示されない場合 (たとえば、入力ブロックをキャンバスにドラッグした後、キャンバス上の空きスペースをクリックした)、マウスの左ボタンを使用してブロックをクリックしてブロックパラメーターエディタを表示します。
  3. 入力ソース に表示されている 3 つの点をクリックします。 表示されるダイアログ ボックスで、デバイスを選択してください ボタンをクリックしてデバイスを選択します。 このボタンは、デバイスの上にマウスを置くと表示されます。

  4. フラグメントおよびシリーズ ドロップダウン リスト ボックスから、入力ブロックが監視するフラグメントとシリーズを選択します。

    デバイスが以前にデータを送信したことがある場合、ドロップダウン リスト ボックスには 1 つ以上の値が表示され、選択できます。 Cumulocity IoT Sensor App の例は、c8y_Gyrscope => gyrscopeY になります。

  5. タイムスタンプを無視 チェックボックスをオンにします。

    これにより、メジャーメントが受信したときと同じ順序で処理されるようになります。

現在選択されているブロックの詳細情報が必要な場合は、右側のドキュメント ペインでブロックリファレンスをご覧ください。 現在ドキュメント ペインが表示されていない場合は、次のアイコンをクリックします。

Document icon

ステップ 4: メジャーメントの平均を計算するブロックを追加する

  1. パレットで、集約を展開します。

  2. 平均値 (平均) ブロックをキャンバスにドラッグします。

  3. ブロックパラメーターエディタで、ウィンドウ期間 (秒) の値 (たとえば、「10」) を指定します。

    指定した秒数は、測定の平均化の期間を制御するために使用されます。 値が小さいほど値の変化にすばやく反応し、値が大きいほど値がより滑らかになります。

ステップ 5: 出力ブロックを追加する

  1. パレットで、出力を展開します。

  2. 測定出力 ブロックをキャンバスにドラッグします。

  3. 出力先として、入力ブロックと同じデバイスを選択します。

  4. フラグメント名として「apama_Average」を指定します。

  5. シリーズ名として「value」を指定します。

ステップ 6: ブロックを接続する

あるブロックから別のブロックに値を渡すには、ブロックをワイヤーで接続する必要があります。 ワイヤーをポート、つまりブロックの左側または右側に表示されている小さな円に接続します。

  1. 入力ブロックの 出力端子をクリックし、平均値 (平均) ブロックの 入力端子までマウスをドラッグします。

  2. 平均値 (平均) ブロックの 平均値 出力端子をクリックし、出力ブロックの 入力端子までマウスをドラッグします。

ステップ 7: モデルを保存し、モデルマネージャーに戻ります。

  1. モデルエディタのツールバーで、次のアイコンをクリックして、新しく作成したモデルを保存します。 アイコンを保存

  2. モデルエディタのツールバーで、次のアイコンをクリックしてモデルエディタを終了し、モデルマネージャーに戻ります。 アイコンを閉じる

備考
保存されたモデルのみがモデルマネージャーの モデル タブにリストされます。 新しいモデルを追加し、モデルを保存せずにモデルエディタを終了すると、そのモデルはモデルマネージャーにリストされず、行った編集内容はすべて失われます。

ステップ 8: 本稼働モードでモデルをアクティブ化する

新しく追加されたモデルのカードが、モデルマネージャーの モデル タブに表示されます。 新しいモデルは自動的にドラフトモードおよび非アクティブ状態に設定されます。 ここで、新しいモデルを本稼働モードでアクティブ化します。 これによりモデルがデプロイされ、デバイスからのメジャーメントが処理されるようになります。

  1. 現在下書きと表示されているカードのドロップダウン メニューをクリックし、本稼働を選択します。

  2. 現在 非アクティブ と表示されているカードのトグル ボタンをクリックします。 これにより、状態が アクティブ に変更されます。

ステップ 9: デバイス管理に移動し、メジャーメントを表示します。

アクティブなモデルから送信されたメジャーメントを表示するには、デバイス管理アプリケーションに切り替える必要があります。 詳細については、ユーザーガイドデバイス管理をご覧ください。

  1. デバイス管理アプリケーションに移動します。

  2. 左側のナビゲータで、デバイスすべてのデバイス の順にクリックします。

  3. デバイスを見つけてその名前をクリックし、デバイスの詳細を表示します。

  4. 左側の 計測値 をクリックします。 これは、デバイスで測定が可能な場合にのみ表示される動的タブです。

    結果のページには、デバイスから送信されたデータを視覚化するいくつかのグラフが表示されます。 「Apama_average」というタイトルのグラフも表示され、新しく作成したモデルから送信された値を確認できます。 この新しいグラフを表示するには、ページをリロードする必要がある場合があります。 計測値 タブの詳細については、ユーザー ガイドデバイス管理 > デバイスの詳細 > 計測値 をご覧ください。

最初のステップ: サンプルからモデルを作成する

このトピックでは、サンプルからモデルを作成する方法の概要を説明します。 これは、測定データがない場合にアラームを作成 サンプルに基づいています。 新しいモデルでは、指定された期間に新しい測定データが受信されなかった場合にアラームが作成されます。

このトピックは、Analytics Builder によって提供されるあらゆる可能性を包括的に説明することを目的としたものではありません。そのため説明は最小限に抑えられています。 詳細については、このドキュメントの残りの部分をご覧ください。

以下の手順では、デバイスがすでに Things Cloud に登録されている必要があります。 これは、すでにメジャーメントを Things Cloud に送信しているデバイスであることが望ましいです。これは、たとえば、Cumulocity IoT Sensor App がインストールされているスマートフォンです (Cumulocity IoT Sensor App を参照) 詳細については、ユーザー ガイドをご覧ください。

次の図は、測定データがない場合にアラームを作成 サンプルで定義されているブロックを示しています。

Blocks defined within the sample

このサンプルでは、事前定義されたテンプレートパラメーターを使用します。 サンプルからモデルを作成した後、モデルの複数のインスタンスを作成し、テンプレートパラメーターに異なる値を指定できます。 テンプレートパラメーターのないモデルとテンプレートパラメーターのあるモデルの違いについて説明している モデル もご覧ください。

以下は、サンプル内で定義されているブロックの簡単な説明です。

ステップ 1: サンプルから新しいモデルを作成する

モデルマネージャーの サンプル タブには、Analytics Builder で提供されるすべてのサンプルモデルが一覧表示されます。 カードをクリックするだけでサンプルを表示できますが、編集したりデプロイしたりすることはできません。 ただし、サンプルからモデルを作成することで、サンプルを独自のモデル開発の基礎として使用できます。

  1. モデルマネージャーの サンプル タブに移動します。

  2. 測定データがない場合にアラームを作成 サンプルのアクション メニューをクリックし、サンプルからモデルを作成 をクリックします。

    新しいモデルはモデルエディタにすぐに表示されます。 サンプルと同じ名前、説明、タグが付いています。

  3. モデルの名前を変更する場合は、ツールバーの左側に表示されるモデル名をクリックします。 表示される モデル構成 ダイアログ ボックスで新しい名前を指定できます。

  4. モデルエディタのツールバーで、次のアイコンをクリックして新しいモデルを保存します。 アイコンを保存

  5. モデルエディタのツールバーで、次のアイコンをクリックしてモデルエディタを終了し、モデルマネージャーに戻ります。 アイコンを保存

    備考
    モデルマネージャーの モデル タブには、保存されたモデルのみがリストされることに注意してください。

ステップ 2: モデルの新しいインスタンスを作成する

サンプルモデルではテンプレートパラメーターを使用します。 そのため、サンプルをモデルに変換するときは、いわゆるテンプレートモデルを作成します。 モデルマネージャーでテンプレートモデルを直接アクティブ化することはできません。 代わりに、モデルのインスタンスを少なくとも 1 つ作成する必要があります。その後、インスタンスエディタを使用してそのインスタンスをアクティブ化できます。

  1. モデルマネージャーの モデル タブで、新しく作成したモデルのカードを見つけます。

  2. インスタンスエディタを起動するには、現在カードに表示されている 0 インスタンス をクリックします。

  3. 新しいインスタンス をクリックして、新しいモデルの最初のインスタンスを作成します。

ステップ 3: テンプレートのパラメーター値を入力します。

インスタンスエディタでは、作成したインスタンスごとに行が表示されます。 テンプレートモデルで定義されているテンプレートパラメーターごとに列が提供され、テンプレートパラメーターの名前が列ヘッダーになります。 インスタンスがアクティブでない限り、そのインスタンスの値を調整できます。

1 つのインスタンスを含むインスタンス テーブル

すべてのテンプレートパラメーター (列) が画面に表示されない場合は、インスタンス表の下にある水平スクロール バーを使用します。

  1. デバイスまたはデバイスのグループ 列ヘッダーの下のフィールドをクリックします。 表示されるダイアログで、このインスタンスに使用するデバイスを選択し、デバイスの選択 をクリックします。

  2. 入力フラグメントおよびシリーズ 列ヘッダーの下のテキスト ボックスに、監視する測定入力の詳細を次の形式で指定します。

    <valueFragmentName>.<valueSeriesName>

    たとえば、測定フラグメントが「c8y_Gyrscope」、シリーズが「gyrscopeX」の場合、次のように入力する必要があります。

    c8y_Gyrscope.gyrscopeX

    ヒント
    測定入力 ブロックの定義済みテンプレートパラメーターを変更せずにデバイスで利用可能なフラグメントとシリーズを確認したい場合は、モデルエディタに戻り、デバイスの入力ブロックをパレットから上にドラッグします。キャンバスを開き、フラグメントおよびシリーズ ドロップダウン リスト ボックスを開きます。 これには、使用できるすべての値がリストされます。ただし、この場合は、ドロップダウン リスト ボックスに表示される => の代わりに、ドット (.) を使用する必要があります。使用する値を決定した後は、必ずこのブロックを再度削除してください。
  3. 期間 (秒)アラーム タイプアラーム テキストアラーム重大度 列ヘッダーの下のフィールドには、すでにデフォルト値が含まれています (上記のブロックの説明も参照)。 要件に合わせて調整してください。たとえば、期間を 30 秒に変更し、アラームタイプの名前を「MyAlarmType」に変更し、事前定義されたアラームテキストを保持し、アラームの重大度を マイナー に設定します。

  4. インスタンスエディタのツールバーで、保存 をクリックします。

ステップ 4: インスタンスをアクティブ化する

次に、本稼働モードでインスタンスをアクティブ化します。 これによりインスタンスがデプロイされ、デバイスからのメジャーメントが処理されるようになります。

  1. インスタンスエディタの 実行モード 列で、インスタンスのドロップダウンメニューをクリックし、本稼働 を選択します。

  2. インスタンスエディタの ステータス 列で、現在 非アクティブ と表示されているボタンをクリックして、ステータスを アクティブ に変更します。

ステップ 5: デバイスからデータを送信する

インスタンスがアクティブ化されたら、デバイスからデータを送信します。 インスタンスは、測定データが到着し始めるとデバイスの監視を開始し、設定された期間内にデータが受信されない場合はアラームを作成します。

スマートフォンからのジャイロスコープ測定の例では、Cumulocity IoT Sensor App の実行中にスマートフォンのディスプレイをオフにするだけで十分です。

ステップ 6: デバイス管理アプリケーションに移動し、アラームを表示します。

アクティブなインスタンスから送信されたアラームを表示するには、デバイス管理アプリケーションに切り替える必要があります。 詳細については、ユーザーガイドデバイス管理をご覧ください。

  1. デバイス管理アプリケーションに移動します。

  2. 左側のナビゲータで、デバイスすべてのデバイス の順にクリックします。

  3. デバイスを見つけてその名前をクリックし、デバイスの詳細を表示します。

  4. 左側の アラーム をクリックします。

  5. 表示されたページでデバイスから送信されたアラームを確認します。上記のようにインスタンスを編集した場合は、30 秒後に「タイプ c8y_Gyrscope のメジャーメントが欠落しています」というマイナーアラームが表示されます。 アラーム タブの詳細については、ユーザーガイドデバイスの監視と制御 > アラームの操作 をご覧ください。

モデルの理解

モデル

モデルは、ワイヤーで相互に接続されたブロックのネットワークを持つことができるコンテナです。

モデル内のブロックの動作は、他のブロックに依存しません。モデル内には同じブロックの複数のインスタンスが存在し、構成可能なパラメーターまたはブロックに接続されている入力に応じて、各インスタンスの動作が異なる場合があります。

テンプレートパラメーターを使用しないモデルとテンプレートパラメーターを使用するモデルの 2 つの異なるタイプのモデルを作成できます。

テンプレートパラメーターのないモデル

モデル内のすべてのブロックは、定義された入力デバイスまたはデバイスのグループを使用し、定義されたパラメーター値を含みます。 このようなモデルは、モデルマネージャーですぐにアクティブ化できます。

テンプレートパラメーターを含むモデル

1つ以上のテンプレートパラメーターが定義されたモデルを「テンプレートモデル」と呼びます。 ブロック パラメーターの型がテンプレートパラメーターの型と同じであれば、テンプレートパラメーターは任意の数のブロック パラメーターにバインドできます。

たとえば、デバイス名用のテンプレートパラメーターと、しきい値用の別のテンプレートパラメーターを定義できます。 これらのテンプレートパラメーターは、後でモデルのさまざまなインスタンスで個別に設定できます。 たとえば 1 つのテンプレートパラメーターでデバイスを指定し、そのデバイスを複数の入力および出力ブロックに使用できます。 または、1 つのインスタンスがしきい値 100 のデバイス ABC を使用し、別のインスタンスがしきい値 200 のデバイス XYZ を使用することができます。テンプレートパラメーターを持つモデルは、モデルマネージャーで直接アクティブ化できません。 モデルのインスタンスを少なくとも 1 つ作成する必要があります。その後、インスタンスエディタ を使用して各インスタンスを個別にアクティブ化できます。

テンプレートパラメーターのスコープは、それらが定義されているモデルに対してローカルです。 つまり、あるモデルで定義されたテンプレートパラメーターは、同じテナントまたはサブテナントに展開されている他のモデルでは使用できません。 テンプレートパラメーターの名前は、それが定義されているモデルのスコープ内で一意である必要があります。

このタイプのモデルには 2 つの関連するロールがあり、これは同じ人物である場合もあれば、異なる人物である場合もあります。

モデル作成者には、テンプレートパラメーターを定義するための次のオプションがあります。

テンプレートモデルインスタンス

テンプレートモデルインスタンスは、テンプレートパラメーターを持つモデルで使用される値を保持します。

たとえば、2 つのデバイスがデバイスからのデータに対して同様のチェックを行う場合がありますが、それらのチェックには異なるしきい値が使用されます。 この場合、使用するデバイスとしきい値を指定して、各デバイスのインスタンスを構成します。

各インスタンスは、個別にアクティブ化、非アクティブ化、または異なる実行モードを使用できます。

ブロック

ブロックはモデルの基本的な処理単位です。 各ブロックにはいくつかの事前定義された機能があり、それに応じてデータを処理します。 ブロックには、パラメーターのセットと入力端子と出力端子のセットを含めることができます。

モデルエディタ のパレットでは、次のタイプのブロックを選択できます。

備考
各ブロックの詳細については、ブロック リファレンス内のすべてのブロックの説明へのリンクを提供する すべてのブロックの概要 をご覧ください。

ブロックは、その入力ポートを介して別のブロックからデータを受信できます。 ブロックは、出力ポートを通じて別のブロックにデータを送信できます。 ブロックが異なれば、入力ポートまたは出力ポートの数も異なります。また、ブロックによっては、入力ポートのみまたは出力ポートのみを備えることもあります。 ほとんどのブロックでは、すべての入力ポートまたは出力ポートを接続する必要はありません。

ブロックには、ブロックの動作を定義する構成可能なパラメーターを含めることができます。 これらのパラメーターは、ブロックの要件に応じてオプションまたは必須のいずれかです。 パラメーターは、値またはテンプレートパラメーターを使用して構成できます。

同じブロックを複数回使用する場合、同じパラメーターに異なる値を指定できます。 たとえば、しきい値 ブロックには しきい値 という名前の構成可能なパラメーターがあります。 しきい値 ブロックの 2 つのインスタンスを使用し、このパラメーターをブロックごとに異なるように構成すると、ブロックは異なるしきい値違反を報告します。

備考
2 つの出力ポートを同じ入力ポートに接続することはできませんが、1 つの出力ポートを複数の入力ポートに接続することはできます。

入力ブロック

入力ブロックは、外部ソースからデータを受信する特殊なタイプのブロックです。 データを配線で理解できる形式に変換し、接続されたブロックにデータを転送します。 たとえば、入力ブロックが Things Cloud から Measurement イベントを受け取ると、イベントから必要な情報を抽出し、その情報を接続されたブロックに転送してさらなる処理を行います。

モデルは複数のデバイスからのデータを処理でき、その際に (複数のコアを使用して) スケールアップできます。 詳細については、さまざまなデバイスのモデル実行 をご覧ください。

さらに、Analytics Builder は、「ブロードキャスト デバイス」と呼ばれる入力デバイスをサポートします。これらの入力デバイスからの信号は、全てのデバイスとモデルで利用できます。詳細については、ブロードキャスト デバイス をご覧ください。

出力ブロック

出力ブロックは、接続された処理ブロックからデータを受信する特殊なタイプのブロックです。 データを外部ソースが理解できる形式に変換し、データを外部ソースに転送します。 たとえば、出力ブロックが接続された処理ブロックからデータを受け取ると、そのデータをOperationオブジェクトにパッケージ化し、そのオペレーションを Things Cloud に送信します。

出力ブロックに トリガー デバイス を指定できます。 これは、出力をトリガーしたデバイスに出力を送り返すために使用できる特別なデバイスです。 モデルは複数のデバイスからのデータを処理でき、その際に (複数のコアを使用して) スケールアップできます。 詳細については、さまざまなデバイスのモデル実行 をご覧ください。

他の出力ブロックには、電子メールを送信するための 電子メールの送信 があります。他のブロックとは異なり、これらは Things Cloud プラットフォーム内のデバイスに関連付けられていません。

処理ブロック

処理ブロックにはさまざまな種類があります。 これらは、機能に応じて、モデルエディタ のパレットでさまざまなカテゴリにグループ化されています。

このカテゴリには
次のブロックが含まれます
ロジック データに対して論理演算を実行します。 ANDOR などのブロックがこのカテゴリに含まれます。
計算 データに対して数学的演算を実行します。 差分しきい値方向検出デルタなどのブロックがこのカテゴリに含まれます。
集約 値のウィンドウにわたってデータの集計を実行します。 平均値 (平均)インテグラル などのブロックがこのカテゴリに含まれます。
フロー操作 データの流れを操作します。 時間遅延ゲートパルスラッチ値などのブロックがこのカテゴリに含まれます。
ユーティリティ さまざまなユーティリティ関数を提供します。 切り替え不足データ などのブロックがこのカテゴリに属します。

処理ブロックの例 - しきい値ブロック

次の例は、ブロックパラメーターエディタ とともに、モデルエディタ でブロックがどのように表示されるかを示しています。 これは、入力値がしきい値に違反するかどうか、またはしきい値を超えるかどうかを検出する しきい値 ブロックを示しています。

Example of the block parameter editor for the Threshold block

パラメーターは次の通りです。

入力ポートは次の通りです。

出力ポートは次の通りです。

独自のブロックの作成

Analytics Builder Block SDK を使用すると、カスタム ブロックを作成、テスト、パッケージ化し、これらのブロックを Analytics Builder にアップロードできます。

Block SDK は、GitHub の https://github.com/SoftwareAG/apama-analytics-builder-block-sdk から入手できます。詳細については、GitHub のドキュメントをご覧ください。

カスタムブロックは、Apama のイベント処理言語 (EPL) で作成します。 ブロックを作成したら、それを拡張機能にパッケージ化してアップロードできます。 拡張機能を構築してアップロードするためのコマンド ラインの例は次の通りです。

Analytics_builder build extension --input path --cumulocity_url $C8Y_URL --username $C8Y_USERNAME --password $C8Y_PASSWORD --namecustomBlocks --restart

拡張機能をアップロードするには、--username引数で指定されたユーザーは、前提条件 にリストされている権限に加えて、Things Cloud の「インベントリ」に対する作成権限を持っている必要があります。

上記のコマンドを実行すると、Apama-ctrl マイクロサービスが再起動されます。 再起動をリクエストするには、ユーザーは「CEP 管理」の管理権限を持っている必要があります。

ワイヤー

1 つのブロックはワイヤーを使って別のブロックに接続されます。 あるブロックの出力ポートと別のブロックの入力ポート間のすべてのデータ転送は、ワイヤを使用して行われます。 すべての接続は互換性のあるタイプ間で行う必要があります。 詳細については、ワイヤーとブロック をご覧ください。

備考
モデル内のブロックのネットワークには、いかなる種類のサイクルも含めることはできません。 詳細については、ワイヤー制限 をご覧ください。

ユースケース

リアルタイムのセンサーデータを取得し、このデータを分析したい状況を考えてみましょう。 話を簡単にするために、センサーが 1 つだけあり、次のことに興味があると仮定します。

この例のモデルには次のブロックがあります。

複数のブロックを含むモデルの例

モデルマネージャーの使用

モデルマネージャーのユーザー インターフェース

モデルマネージャーには 2 つのタブがあります。モデル タブには現在定義されているすべてのモデルが表示され、サンプル タブには独自のモデルの作成を開始するのに役立つサンプルモデルが表示されます。

モデルタブ

モデル タブには、現在の Things Cloud 環境内で利用可能なすべての分析モデルがカードとしてリストされます。 ここから新しいモデルを追加したり、既存のモデルを管理したりできます。

定義されたモデルを表示するモデル タブ

モデルを編集するには、そのモデルに表示されているカードをクリックするだけです (既存のモデルの編集 をご覧ください)。 新しいモデルを追加するか既存のモデルを編集するとモデルエディタが呼び出され、モデルを構成するブロックとワイヤーを定義します。モデルエディタの使用 をご覧いただき詳細をご確認ください。

モデルには 2 つのタイプがあり、これらのモデルのカードの外観は異なります。

モデルにテンプレートパラメーターがない限り、インスタンスはゼロになり、カードにはモードを選択してアクティブにするためのコントロールが表示されます。

モデルに対して表示される各カードにはアクション メニュー (カードの右上に表示される 3 つの縦のドット) があり、このメニューにはモデルを管理するためのコマンド (モデルのエクスポートや削除など) が含まれています。

モデルに説明またはタグが定義されている場合、これがそのモデルのカードに表示されます。 モデルの名前、説明、またはタグを変更したい場合は、モデルエディタでこれを行う必要があります。 モデルの名前、説明、およびタグの変更 をご覧ください。

カードのリストが長い場合は、モデル名 検索ボックスに名前を入力すると、探しているモデルを簡単に見つけることができます。 または、モデル名の一部を入力することもできます。 たとえば、「test」という単語を入力すると、名前にこの単語が含まれるすべてのモデルが検索されます。 入力する文字は、モデル名の任意の位置に含めることができます。 これらの検索条件では大文字と小文字が区別されません。 検索条件が現在適用されている場合、検索ボックスの横に 検索をクリア と表示されます。 これをクリックすると検索がクリアされ、利用可能なカードがすべて表示されます。

フィルターを使用して、表示されるカードの数を減らすこともできます。 詳細については、モデルとサンプルのフィルタリング をご覧ください。

サンプルタブ

サンプル タブには、Analytics Builder でカードとして提供されるすべてのサンプル モデルがリストされます。

提供されたサンプルを表示する [サンプル] タブ

サンプルの名前またはその説明がカードに完全に表示されていない場合は、名前または説明の上にマウスを置くと、ツールチップに完全な名前または説明が表示されます。

サンプルを表示することはできますが、編集または展開することはできません。 サンプルを表示するには、サンプルに表示されているカードをクリックするだけです。 その後、モデルエディタが読み取り専用モードで起動されます。 詳細については、サンプルの表示 をご覧ください。

サンプルをさらなる開発の基礎として使用する場合は、サンプルからモデルを作成できます。 その後、要件に応じて新しいモデルを編集し、デプロイできます。 詳細については、サンプルからのモデルの作成 をご覧ください。

サンプル名 検索ボックスに名前または名前の一部 (「ジオフェンス」や「Eメール」など) を入力すると、サンプルを簡単に見つけることができます。モデル タブの モデル名 検索ボックスについて上記で説明したのと同じ方法で、検索条件を入力およびクリアします。 サンプルをタグでフィルタリングすることもできます。 詳細については、モデルとサンプルのフィルタリング をご覧ください。

モデルとサンプルのフィルタリング

モデルマネージャーには、モデルタブとサンプルタブに表示されるカードの数を減らすいくつかの方法が用意されており、これにより、探しているモデルやサンプルをすばやく見つけることができます。

フィルタリングは、モデルマネージャーのユーザーインターフェースで説明されているモデル名またはサンプル名検索ボックスで指定したモデル名またはサンプル名と組み合わせて使用することもできます。

モデルまたはサンプルをフィルターするには

  1. モデルマネージャーの モデル または サンプル タブで、ツールバーの その他のフィルター をクリックします。

  2. 表示されるダイアログで、モデルに対して 1 つ以上のフィルターを選択します。 サンプルの場合、タグによるフィルタリングのみが可能です。

    モデル タブでは、次の基準に従ってモデルをフィルタリングできます。

    • モード

      特定のモードのモデルのみを表示できます。 たとえば、シミュレーションモードとテストモードのモデルのみを表示したい場合は、対応するチェック ボックスをオンにします。

    • ステータス

      アクティブまたは非アクティブなモデルのみを表示できます。 たとえば、アクティブなモデルのみを表示したい場合は、対応するチェック ボックスをオンにします。

    • デバイス、グループまたはアセット

      入力ブロックと出力ブロックで特定のデバイスを使用するモデル、入力ブロックで特定のグループ、さらには特定のアセットを使用するモデルのみを表示できます。デバイス、グループ、またはアセット名でフィルタードロップダウン リスト ボックスを開き、1 つ以上の項目を選択して、適用 をクリックします。

    • データポイント

      c8y_TemperatureMeasurement などの特定のデータ ポイントを使用するモデルのみを表示できます。 これには、デバイス、グループ、またはアセット名でフィルター ドロップダウン リスト ボックスで少なくとも 1 つのデバイスが選択されている必要があります。 データポイントでフィルター ドロップダウン リスト ボックスを開き、1 つ以上のデータ ポイントを選択して、適用 をクリックします。

    • タグ

      モデル構成 ダイアログ ボックスでは、特定のタグが定義されているモデルのみを表示できます。このダイアログ ボックスは、新しいモデルを追加するとき、またはモデルエディタからそのダイアログ ボックスを呼び出すときに表示されます (新しいモデルの追加 およびモデルの変更もご覧ください)。タグでフィルタードロップダウン リスト ボックスを開き、1 つ以上のタグを選択して、適用 をクリックします。

    たとえば、特定のデバイスを使用する本稼働モードのアクティブなモデルのみを表示するなど、複数のタイプのフィルタを組み合わせることができます。

    サンプル タブでは、タグのみでサンプルをフィルタリングできます。 タグでフィルター ドロップダウン リスト ボックスを開き、1 つ以上のタグを選択して、適用 をクリックします。

    上記のすべてのドロップダウン リスト ボックスには、選択できる項目の数を減らすために使用できる フィルター 検索ボックスが含まれています。 名前または名前の一部を入力できます。 たとえば、「test」という単語を入力すると、名前にこの単語が含まれる項目のみが表示されます。 入力する文字は、名前内の任意の位置に含めることができます。 これらのフィルター条件では大文字と小文字が区別されません。 すべて チェック ボックスをクリックすると、フィルタ 検索ボックスの内容に応じて、ドロップダウン リスト ボックスに現在表示されているすべての項目が選択されます。

  3. フィルタを適用 をクリックします。

    モデル タブまたは サンプル タブのツールバーに、現在適用されているフィルターの種類が表示されるようになりました。 これは モデル タブの例です。

    現在のフィルターを表示するツールバー

    これらのフィルターをクリアする場合は、ツールバーの フィルターのクリア をクリックします。 または、特定のフィルタをクリアするには、フィルタ アイコンに表示されている [X] をクリックするか、アイコン内のフィルタ名をクリックして、表示されるダイアログ ボックスでそのフィルタ (および必要に応じて他のフィルタ) の選択を解除します。 そのダイアログ ボックスで フィルターをリセット をクリックすると、すべてのフィルターがクリアされます。

新しいモデルの追加

新しいモデルを追加すると、モデルエディタが起動されます。 詳細については、モデルエディタの使用 をご覧ください。

備考
新しいモデルは、モデルエディタでモデルを保存するときに、モデルマネージャーにのみリストされます。 モデルの保存 もご覧ください。

サンプルから新しいモデルを作成することもできます。 詳細については、サンプルからのモデルの作成 をご覧ください。

新しいモデルを追加するには

  1. モデルマネージャーの モデル タブで、ツールバーの 新しいモデル をクリックします。

  2. 表示される モデル構成 ダイアログ ボックスに、一意のモデル名を入力します。

    オプションで、モデルの説明と 1 つ以上のタグを入力できます。

    タグは、モデルマネージャーでモデルをフィルタリングして、特定のタグが定義されているモデルのみを表示するのに役立ちます (モデルとサンプルのフィルタリング)。 タグを追加するには、名前を入力して Enter キーまたは Tab キーを押すだけです。 タグは色付きの長方形で表示されます。 タグを削除するには、四角形の中に表示されている X をクリックします。 このダイアログでは、モデルに重複したタグを入力することができません。 このようなタグ名を入力すると、重複したタグは追加されず、元のタグが 1 回点滅します。

  3. OK をクリックします。

    モデルエディタが表示されます。 新しいモデルにブロックとワイヤーを追加する方法の概要については、モデルを追加する手順の概要 をご覧ください。

既存のモデルの編集

現在モデルマネージャーにリストされている各モデルを編集 (または表示) できます。

モデルがアクティブな場合、編集するとモデルは読み取り専用モードに設定されます。 この場合、モデルエディタではモデルの内容のみを表示できます (たとえば、ブロック パラメーターを表示できます)。 通常どおりモデルを移動したりズームしたりできますが、何も変更することはできません。 そのため、モデルエディタの保存ボタンは無効になります。

モデルを編集するには

モデルマネージャーの モデル タブで、モデルに表示されているカードをクリックするだけです (ただし、状態を変更するためのトグル ボタンやモードを変更するためのドロップダウン メニューではありません)。

または、カードのアクション メニューをクリックし、編集 をクリックします。

モデルがアクティブな場合、モデルの表示のみが可能であることを通知するダイアログが表示されます。 続行 をクリックすると、モデルエディタが表示されモデルを表示できますが、変更することはできません。 詳細については、モデルエディタの使用 をご覧ください。

備考
十分な権限がない場合 (つまり、ADMIN 権限ではなく「CEP 管理」の読み取り権限のみがある場合)、アクション メニューには 編集 コマンドの代わりに 表示 コマンドが表示されます。

モデルのインスタンスの編集

モデル内の 1 つ以上のブロックでテンプレートパラメーターを使用する場合 (テンプレートパラメーターの管理もご覧ください)、そのモデルのさまざまなインスタンスをセットアップできます。

各インスタンスは、テンプレートパラメーターに異なる値を使用でき、他のインスタンスから独立してアクティブ化できます。 インスタンスはインスタンスエディタで定義およびアクティブ化されます。

備考
下記のアクションは、モデルにテンプレートパラメーターが定義されている場合、つまり、モデルのカードに定義されたインスタンスの数が表示されている場合にのみ使用できます。

モデルのインスタンスを編集するには

モデルマネージャーの モデル タブで、カードの前面にあるインスタンスの合計数をクリックします。

あるいは、次のいずれかを実行することもできます。

備考
インスタンスの概要を表示 は、インスタンスが (状態に関係なく) ある場合にのみ表示されます (そのため、カードの裏面にのみアクセスできます)。

これにより、インスタンスエディタが起動されます。 詳細については、インスタンスエディタの使用 をご覧ください。

モデルのデプロイ

モデル (またはインスタンス) は 2 つの状態のいずれかになります。 現在の状態は、モデルに表示されるカードに常に示されます。

モデルが受け取る入力とその出力に何が起こるかは、モデルが設定されているモードによって異なります。 各モデルは次のいずれかのモードに設定できます。

ドラフトモードのモデルは、非アクティブ状態のみにすることができます。 テスト、シミュレーション、または本稼働モードのモデルは、アクティブ状態または非アクティブ状態のいずれかになります。

備考
さまざまな状態とモードに関する上記の情報は、テンプレートモデルのインスタンスにも同様に当てはまります。 ただし、次の手順は非テンプレートモデルにのみ適用されます。 テンプレートモデルのインスタンスをデプロイする場合は、インスタンスのデプロイをご覧ください。

JSON ファイルをロードしてモデルをインポートする場合、モデルは常に非アクティブなモデルとしてインポートされます。

モデルをデプロイするには

  1. モデルマネージャーの モデル タブで、デプロイするモデルのカードのドロップダウン メニューをクリックし、本稼働テスト、または シミュレーション のいずれかを選択します。

  2. シミュレーションモードを選択した場合は、表示されているカレンダーアイコンをクリックし、使用する期間を指定して、適用 をクリックします。 シミュレーションパラメーター もご覧ください。

  3. 現在トグルボタンに 非アクティブ と表示されている場合、このボタンをクリックして状態を アクティブ に変更します。 シミュレーションモードの場合、有効な時間範囲が定義されている場合にのみ、状態を アクティブ に設定できます。

モデルのデプロイ解除

現在本稼働モード、テストモード、またはシミュレーションモードにあり、トグル ボタンに アクティブ と表示されている各モデルのデプロイを解除 (つまり、非アクティブ化) することができます。

モデルのデプロイを解除すると、モデルは停止され、受信データは処理されなくなります。 モデル内に構築された状態はすべて失われます。 シミュレーションモードの場合、これは、指定された時間範囲のすべての履歴データが再生される前にモデルが停止されることを意味します。

備考
テンプレートモデルのインスタンスをアンデプロイする場合は、「インスタンスのアンデプロイ」をご覧ください。

モデルをアンデプロイするには

モデルマネージャーの モデル タブで、デプロイを解除するモデルのカードのトグル ボタンをクリックすると、ボタンに 非アクティブ が表示されます。

モデルの複製

現在モデルマネージャーにリストされている各モデルを複製できます。

複製されたモデルには、元のモデルと同じ名前が付けられ、その後に番号記号 (#) と数字が続きます。 たとえば、元のモデルの名前が「My Model」の場合、最初の複製の名前は「My Model #1」になります。 モデル名の数字は、後続の複製を作成するたびに 1 ずつ増加します。 複製されたモデルには、元のモデルと同じ説明が与えられます。 複製を編集し、モデルに意味のある名前と説明を付けることをお勧めします。

モデルを複製するには

モデルマネージャーの モデル タブで、複製するモデルのアクション メニューをクリックし、複製 をクリックします。

複製されたモデルのカードがモデルマネージャーにすぐに表示されます。

モデルのエクスポート

現在モデルマネージャーにリストされている各モデルをエクスポートできます。 これは、たとえば、現在の Things Cloud テナントから別のテナントにモデルを転送する場合に役立ちます。 モデルはJSON形式で保存されます。

モデルをエクスポートするには

モデルマネージャーの モデル タブで、エクスポートするモデルのアクション メニューをクリックし、エクスポート をクリックします。

結果の動作はブラウザによって異なります。 モデルは通常、ブラウザのダウンロード場所にエクスポートされます。

モデルのインポート

以前にエクスポートされたモデルを (JSON 形式で) インポートできます。 これは、たとえば、別の Things Cloud テナントからモデルをインポートする場合に役立ちます。

モデルをインポートするには

  1. モデルマネージャーの モデル タブで、ツールバーの モデルのインポート をクリックします。

  2. 表示されるダイアログ ボックスで、インポートするモデルが保存されている場所に移動します。

  3. モデルを選択し、開く をクリックします。

インポートされたモデルのカードがモデルマネージャーに表示されます。

モデルの削除

現在モデルマネージャーにリストされている各モデルを削除できます。 現在デプロイされているモデルを削除すると、まずデプロイが解除されてから削除されます。

モデルを削除するには

  1. モデルマネージャーの モデル タブで、削除するモデルのアクション メニューをクリックし、削除 をクリックします。

  2. 表示されるダイアログ ボックスで、削除 をクリックして削除を確認します。

すべてのモデルをリロードする

表示を更新すると、ページが読み込まれてから他のユーザーが加えた変更が表示されたり、デプロイされたモデルが失敗状態になったかどうかを確認したりできます。

すべてのモデルをリロードするには

モデルマネージャーの モデル タブで、ツールバーの 再読み込み をクリックします。

サンプルを見る

サンプルは常に読み取り専用モードです。 モデルマネージャーに現在リストされている各サンプルの内容を表示できます。

たとえば、ブロック パラメーターを調べて、サンプルで使用されている各ブロックのドキュメントを表示できます。 通常のモデルと同じ方法でサンプルを移動したりズームしたりできますが、何も追加したり編集したりすることはできません。 ただし、サンプルから新しいモデルを作成することはできます (サンプルからモデルを作成する もご覧ください)。

サンプルを表示するには

モデルマネージャーの サンプル タブで、サンプルとして表示されているカードをクリックするだけです。

または、カードのアクション メニューをクリックし、表示 をクリックします。

サンプルからモデルを作成する

現在モデルマネージャーにリストされている各サンプルから新しいモデルを作成できます。 新しいモデルには、サンプルと同じ名前、説明、タグが付けられます。

備考
モデルマネージャーにリストされるように、新しいモデルを保存する必要があります。 その名前のモデルがすでに存在する場合は、新しいモデルを別の名前で保存するように求められます。

サンプルからモデルを作成するには

モデルマネージャーの サンプル タブで、新しいモデルの作成元となるサンプルのアクション メニューをクリックし、サンプルからモデルを作成 をクリックします。

あるいは、現在サンプルがモデルエディタに表示されている場合は、ツールバーの サンプルからモデルを作成 をクリックします。

新しいモデルはモデルエディタにすぐに表示され、モデルの各側面を変更できるようになります。

モデルエディタ の使用

モデルエディタ のユーザーインターフェース

モデルエディタ を使用すると、分析モデルをグラフィカルに作成できます。 これは、モデルマネージャーでモデルを追加または編集するときに呼び出されます。 新しいモデルの追加 および 既存のモデルの編集 もご覧ください。

備考
モデルエディタは、サンプルを表示するときにも呼び出されます。 この場合、モデルエディタは読み取り専用モードで起動され、左側のパレットは表示されません。 サンプルの表示 もご覧ください。

パレット、キャンバス、ドキュメント ペインを備えたモデルエディタ

左側のパレットには、モデルに追加できるブロックが含まれています。 さまざまなタイプのブロックに対応する、展開/折りたたみ可能なカテゴリがいくつかあります。

中央のキャンバスは、モデルを「描画」する領域です。 ブロックをパレットからキャンバスにドラッグし、ブロックのパラメーターを指定して、ブロックを配線します。 キャンバスのコンテンツはグリッドに合わせて配置されます (グリッドの表示と非表示を切り替える もご覧ください)。

キャンバスの右下の概要領域にはモデル全体が表示されます。 これは、モデルが大きすぎてキャンバスの現在表示されている領域に収まらない場合に役立ちます。 大規模なモデルの操作 もご覧ください。

右側のドキュメント ペインでは、現在選択されているブロックの参照情報を表示できます。 ブロックのドキュメントの表示 もご覧ください。

注意
変更は、次のアイコンをクリックした場合にのみ保存されます。 アイコンを保存 モデルの保存 もご覧ください。 エディタ から移動しようとしたときに未保存の変更がある場合、エディタ は警告を出します。 ただし、ブラウザをネットワークから切断したり、ラップトップを一時停止したりする前に、必ず変更が保存されていることを確認する必要があります。

モデルの操作

モデルを追加する手順の概要

このトピックでは、新しいモデルを追加および設計する方法の概要を説明します。 詳細については、以下の手順で参照されているトピックをご覧ください。

次のようにモデルを追加して設計します。

  1. モデルマネージャーの モデル タブで、新しいモデル をクリックします。 表示されるダイアログ ボックスにモデル名を入力します。 新しいモデルの追加 もご覧ください。
  2. モデルエディタで、必要なブロックをパレットからキャンバスにドラッグします。 ブロックの追加 もご覧ください。
  3. 必要に応じてブロックのドキュメントをご覧ください。 ブロックのドキュメントの表示 もご覧ください。
  4. ブロックパラメーターエディタ を使用して、ブロックのパラメーターを指定します。 ブロックのパラメーターの編集 もご覧ください。
  5. 適切なブロックをワイヤーで接続します。 2 つのブロック間のワイヤーの追加 もご覧ください。
  6. 変更を保存します。 モデルの保存 もご覧ください。
    備考
    保存されたモデルのみがモデルマネージャーにリストされます。 新しいモデルを追加し、モデルを保存せずにモデルエディタ を終了すると、そのモデルはモデルマネージャーにリストされず、行った編集内容はすべて失われます。
  7. モデルエディタを終了します。 これにより、モデルマネージャーに戻ります。 モデルエディタ の終了 もご覧ください。
  8. 新しく追加されたモデルは、モデルマネージャーで自動的にドラフトモードに設定されます。 テスト、シミュレート、または運用環境で使用できるようにする場合は、モデルのデプロイ をご覧ください。

制限事項を含む詳細な背景情報については、ワイヤーとブロック をご覧ください。

モデルの名前、説明、タグの変更

モデルエディタ で現在編集している各モデルの名前を変更したり、各モデルの説明を変更したりすることもできます。

タグを追加または削除することもできます。 タグはモデルマネージャーで、特定のタグが定義されているモデルのみを表示するのに役立ちます (モデルとサンプルのフィルタリング もご覧ください)。

モデルの名前、説明、タグを変更するには
  1. モデルエディタ で、ツールバーの左側に表示されているモデル名をクリックします。

  2. 表示される モデル構成 ダイアログ ボックスで、モデルの新しい一意の名前を指定し、説明を変更し、タグを変更します。

    タグを追加するには、名前を入力して Enter キーまたは Tab キーを押すだけです。 タグは色付きの長方形で表示されます。 タグを削除するには、四角形の中に表示されている X をクリックします。 このダイアログでは、モデルに重複したタグを入力することができません。 このようなタグ名を入力すると、重複したタグは追加されず、元のタグが 1 回点滅します。

  3. OK をクリックします。

モデルの保存

モデルエディタ でモデルを保存すると、 Things Cloud テナントのインベントリに JSON 形式で保存されます。

重要
あなたと別のユーザーが同時に同じモデルを編集している場合があります。 この場合、最後に保存された変更が保存されます。 そのため、後で別のユーザーが保存すると、変更内容が上書きされる可能性があります。
モデルを保存するには

モデルエディタのツールバーで、次のボタンをクリックします。 アイコンを保存

このツールバー ボタンは、モデルに変更が適用され、モデルに名前が付けられている場合にのみ有効になります。

モデルエディタ の終了

対応するツールバー ボタンを使用してモデルエディタ を終了すると、モデルマネージャーに戻ります。 その後、たとえば、別のモデルを編集したり、現在のモデルのモードや状態を変更したりできます。

注意
別の URL に移動するか、ブラウザ ウィンドウを閉じると、保存されていない変更はすべて失われます。
モデルエディタ を終了するには

モデルエディタのツールバーで、次のボタンをクリックします。 アイコンを閉じる

まだ保存されていない変更がある場合は、それらを保存するか破棄するかを尋ねられます。

ブロックとワイヤーの操作

ブロックの追加

パレット内のブロックは、さまざまなカテゴリにグループ化されています。 パレット内のブロック上にマウス ポインターを移動すると、ブロックの目的を簡単に説明するツールヒントが表示されます。 ツールチップには、ブロックの名前全体も表示されます。

各ブロックの詳細情報は、ドキュメント ペインに表示されるブロック リファレンスで参照できます。 ブロックのドキュメントの表示 もご覧ください。

ブロックを追加するには
  1. モデルエディタのパレットで、追加するブロックを含むカテゴリを展開します。

  2. パレットからブロックをドラッグし、キャンバス上にドロップします。

    キャンバス上の既存のブロック上にブロックをドロップすると、そのブロックの上に新しいブロックが作成されます。 折りたたまれたグループにブロックをドロップすると、そのグループの下に新しいブロックが作成されます。 どちらの場合も、新しいブロックをキャンバスの空きスペースに移動する必要があります。 ブロックの移動 もご覧ください。

    展開されたグループ (グループのコンテンツが表示される) にブロックをドロップすると、新しいブロックがそのグループに追加されます。 グループの詳細については、グループの操作 をご覧ください。

  3. ブロックに必要なパラメーターをすべて指定します。 ブロックのパラメーターの編集 をご覧ください。

    備考
    パラメーターを指定する必要があるブロックを追加すると、ブロックパラメーターエディタ が自動的に表示されます。 ただし、ブロックがパラメータを必要としない場合 (OR ブロックなど)、これは表示されません。

ブロックのパラメータの編集

ほとんどのブロック (すべてではありません) には、要件に応じて設定する必要があるパラメーターがあります。

キャンバス上の入力ブロックまたは出力ブロックに「不足しています」と表示される場合、これは、定義されたデバイス、グループ、またはアセットが Things Cloud インベントリ内に見つからないことを意味します。 次に、Things Cloud インベントリに移動して、このデバイスが登録されていること、またはグループまたはアセットが存在することを確認するか、ブロックパラメーターエディタ(以下を参照)で別の既存のデバイス、グループ、またはアセットを選択する必要があります。

キャンバス上のいくつかのブロックのラベルには、最も重要なパラメーターの値が表示されます。 たとえば、 ブロックは定義された式を示し、時間遅延 ブロックは定義された遅延を秒単位で示します。

ブロックパラメーターエディタ には、現在選択されているブロックを複製および削除するためのコマンドも含まれています。詳細については、 ブロックの複製 および ブロックまたはワイヤーの削除 をご覧ください。

入力ブロックと出力ブロックについては、使用されているデバイス、グループ、またはアセットをグローバルに置き換えることができます。 詳細については、デバイス、グループ、アセットの置換 をご覧ください。

ブロックのパラメーターを編集するには
  1. モデルエディタのキャンバス上で、編集したいブロックをマウスの左ボタンでクリックします。

    ブロックパラメーターエディタ が表示され、そのブロックに指定できるすべてのパラメーターの入力フィールドが表示されます。

  2. 入力ブロックと出力ブロックについては、デバイス、グループ、またはアセットの選択 ダイアログ ボックスから別の入力ソースまたは出力先を選択できます。

    ダイアログ ボックス内のツリーは、Things Cloud インベントリの親/子階層を反映しています。 たとえば、デバイスのリストには定義された子デバイスが含まれ、デバイス グループのリストには定義されたサブグループが含まれます。 これらは、展開可能/折りたたみ可能なノードから利用できます。

    デフォルトでは、各ノード内に 10 個の項目がアルファベット順に表示されます。 インベントリが多い場合は、最初に表示されていないアイテムを表示するには、さらに読み込む をクリックする必要があります。

    検索ボックスを使用すると、検索条件に一致する Things Cloud インベントリ内のマネージドオブジェクトを表示できます。 検索では大文字と小文字が区別されます。 入力する文字は、名前内の任意の位置に含めることができます。 ツリーは、入力する文字ごとに更新されます。検索結果が多い場合、最初に表示されていないマネージドオブジェクトを表示するには、さらに読み込む をクリックする必要があります。

    エントリの上にマウスを置くと表示されるボタンをクリックして、使用するデバイス、グループ、またはアセットを選択します。 そのボタンの名前は、現在選択されているソースのタイプによって異なります。

    ボタン名 表示対象: 説明
    デバイスを選択してください 入力ブロックと出力ブロックのデバイス データがデバイスから受信されるか、出力がデバイスに送信されます。
    グループのデバイスを選択してください 入力ブロック内のグループ データはグループ階層内のすべてのデバイスから受信されます。 グループから直接データを受信することはできません。
    アセットを選択してください 入力ブロック内のアセット データはアセット自体から受信されます。 アセットのデバイスは無視されます。
    アセットのデバイスを選択してください 入力ブロック内のアセット データはアセット階層内のすべてのデバイスから受信されます。 ブロックはアセット自体からデータを受け取りません。
    アセットを選択してください 出力ブロック内のアセット 出力はアセット自体に送信されます。

    出力ブロックでは、トリガーデバイスも選択できます。 これにより、出力をトリガーしたデバイスに出力が送信されます。

    備考
    出力ブロックの場合、グループを選択することはできません。 この場合、ボタンは提供されません。 出力をトリガーしたデバイスに出力を送信するには、代わりにトリガー デバイスを選択します。

    表示されるデバイス、グループ、アセットの最大数は、テナント オプションによって異なります。 詳細については、表示されるデバイス、グループ、アセットの数の構成 をご覧ください。

    検索時に表示されるマネージドオブジェクトもテナント オプションによって異なります。 特定のタイプのマネージドオブジェクトのみを表示するように検索を制限できます。 詳細については、デバイス、グループ、アセットの検索 をご覧ください。

  3. ブロック パラメーターの値を指定する代わりに、テンプレートパラメーターを使用することができます。 これにより、モデルのさまざまなインスタンスでこのブロック パラメーターにさまざまな値を使用できるようになります (詳細については、インスタンスエディタ の使用 をご覧ください) 。 テンプレートパラメーター ダイアログ ボックスで一致するタイプのテンプレートパラメーターを作成し、(テンプレートパラメーターの管理 を参照)、ブロック パラメーターを切り替えます。 テンプレート パラメータ (下記を参照) を使用し、ドロップダウン リスト ボックスから目的のテンプレートパラメーターを選択します。 または、ブロックパラメーターエディタ でテンプレートパラメーターを直接作成します (下記を参照)。

    ブロックパラメーターエディタ には、ドロップダウン リスト ボックスに次のオプションがあります。

    • 次のオプションを選択すると、隣接するコントロールを使用してこのパラメーターの値を指定できます。 この値はブロックパラメーターエディタ で検証されます。

      パラメータ値指定オプション

    • 次のオプションを選択すると、隣接するドロップダウン リスト ボックスからテンプレートパラメーターを選択できます。 テンプレートパラメーターは、割り当て先のブロック パラメーターと同じタイプのみ選択できます。 不適切なタイプのテンプレートパラメーターは選択できません。 テンプレートパラメーターはブロックパラメーターエディタ では検証されません。

      テンプレートパラメーター選択オプション

      新しいテンプレートパラメーターをブロックパラメーターエディタ に直接追加する場合は、上のドロップダウン リスト ボックスのテキスト ボックスに名前を入力します。 入力を開始するとすぐに、その名前のテンプレートパラメーターがまだ存在しない場合は、テキスト ボックスの下に テンプレートパラメーター名の追加 オプションが表示されます。 このオプションをクリックすると、新しいテンプレートパラメーターが追加され、テンプレートパラメーター ダイアログ ボックスで使用できるようになります。 新しいテンプレートパラメーターは、ブロック パラメーターと同じタイプ、オプション、およびデフォルト値を持ちます。 指定した名前のテンプレートパラメーターがすでに存在するが、型に互換性がない場合、名前と型はテキスト ボックスの下に表示されますが、選択することはできません。

  4. 一部のブロックは、特定のブロック パラメーターの複数行入力をサポートします。 たとえば、電子メールの送信 ブロックは 本文 パラメーターでこれをサポートし、アラーム出力 ブロックは メッセージ パラメーターでこれをサポートします。入力はテキスト ボックス内で自動的に折り返され、Enter キーを押すと新しい行でテキストを開始できます。 このようなブロック パラメーターの新しいテンプレートパラメーターをブロックパラメーターエディタ で直接追加すると (上記の通り)、新しいテンプレートパラメーターのタイプは自動的に 複数行文字列 に設定されます。

  5. 一部のブロック (範囲参照 ブロックなど) では、ブロックパラメーターエディタ にキーと値のペアを指定するためのテキスト ボックスが表示されます。 さらにキーと値のペアを指定する必要がある場合は、行を追加 をクリックします。 最初の行のキーと値のペアが最初に処理されます。

    その行の横に表示される次のコントロールを使用して、行を別の位置にドラッグできます。 ドラッグ コントロール

    不要になった行を削除するには、その行の横にある次のコントロールをクリックします。 削除コントロール

    空の行は、ブロックパラメーターエディタ を終了すると自動的に削除されます。

  6. 必要なパラメーターをすべて指定します。

    各ブロックの詳細なリファレンス情報は、ドキュメント ペインから入手できます。 ブロックのドキュメントの表示 もご覧ください。

    ブロックパラメーターエディタ を終了するとき (たとえば、別のブロックまたはキャンバスをクリックするとき)、入力はメモリーに保持されます。

    備考
    変更はモデルを保存するときにのみインベントリに書き込まれることに注意してください。 モデルの保存 もご覧ください。

ブロックのドキュメントの表示

ドキュメント ペインでは、現在選択されているブロックの詳細情報を表示できます。 これは、ブロックのパラメーター、入力ポート、出力ポートのドキュメントを提供する、いわゆる ブロック リファレンス を示しています。 ドキュメント ペインのサイズを変更したり、表示を切り替えたりすることもできます。

備考
このドキュメントでブロック参照を直接表示することもできます。 Analytics Builder ブロック リファレンス をご覧ください。
ブロックのドキュメントを表示するには
  1. モデルエディタ で、ドキュメントを表示するブロックをクリックします。 これはパレットまたはキャンバス上で行うことができます。

  2. 現在ドキュメント ペインが表示されていない場合は、次のアイコン (キャンバスの右側に表示) が含まれる領域をクリックして、ドキュメント ペインを表示します。 ドキュメントアイコン

    その領域を再度クリックすると、ドキュメント ペインが非表示になります。

  3. ドキュメント ペインのサイズを変更する場合 (たとえば、拡大する場合)、上のアイコンが含まれる領域にマウス ポインタを移動します。 マウス ボタンをクリックして押したまま、マウスを左または右にドラッグします (ドキュメント ペインの幅を広くしたり小さくしたりできます)。

ブロックとワイヤーの選択

モデルエディタ のキャンバスに現在表示されている 1 つまたは複数のブロックを移動、複製、または削除する場合は、まず必要なブロックを選択する必要があります。

キャンバス上の単一のブロックを選択するには、そのブロックをクリックするだけです。 ブロックの場合、結果の動作は使用するマウス ボタンによって異なります。

単一のワイヤーを選択するには、ワイヤーをクリックするだけです (この場合はどちらのマウス ボタンでも使用できます)。

複数のブロックやワイヤーを同時に選択するには、次のいずれかを実行します。

選択を解除するには:

ブロックの移動

現在キャンバス上に表示されている各ブロックを別の場所に移動できます。 移動されるブロックに 1 つまたは複数のワイヤーが接続されている場合、ワイヤーも移動します。

ブロックを移動するには

モデルエディタのキャンバス上で、移動するブロックをクリックし、マウス ボタンを押したままブロックを新しい位置にドラッグします。

または、複数のブロックを同時に移動するには、ブロックとワイヤーの選択 の説明に従ってブロックを選択します。 次に、マウス ボタンをクリックして押したまま、ブロックを新しい場所にすぐにドラッグします (マウス ポインターが変わるまで待たないでください)。

ブロックの複製

現在キャンバスに表示されている各ブロックを複製できます。 元のブロックとその複製は両方とも同じパラメーターを持つことになります。

単一のブロックを複製する場合、接続されたワイヤーは自動的には複製されません。 ただし、複数のブロックを同時に複製すると、選択したブロック間に接続されたワイヤーが自動的に複製されます。

ブロックを複製するには

2 つのブロック間のワイヤーの追加

キャンバス上のブロックを相互に配線して、1 つのブロックからの出力が他のブロックの入力として使用されることを示すことができます。

ワイヤーはポート、つまりブロックの左側または右側に表示される円に接続されます。 各ブロックには、以下を含めることができます。

ポートの名前を表示するには、ブロックをクリックして選択します。 または、マウス ポインタをポートの上に移動すると、ツールチップにポート名が表示されます (名前が最初に表示され、その後にポートの説明が表示されます)。

2 つのブロック間で送信できる値の種類、ワイヤーの処理順序、制限などの詳細については、ワイヤーとブロック をご覧ください。

2 つのブロック間にワイヤーを追加するには

モデルエディタ のキャンバス上で、接続するブロックの出力端子をクリックし、マウスを別のブロックの入力端子までドラッグします。

ワイヤーの変更

ワイヤーが現在接続されているブロックまでのパスを変更できます。 また、ブロックを別のブロックまたは同じブロックの別のポートに接続するように再配線することもできます。

ワイヤーではサイクルを作成できません。 詳細については、ワイヤー制限 をご覧ください。

ワイヤーを変更するには
  1. モデルエディタのキャンバス上で、変更したいワイヤーをクリックします。

    接続されているブロックのポート名が表示され、ワイヤーの両端に接続されているポートが強調表示されます。

  2. 2 つのブロック間のワイヤーのパスを変更するには、選択したワイヤー上に表示されている正方形のサイズ変更アイコンの 1 つを別の位置にドラッグします。 正方形のサイズ変更アイコン

    または、ワイヤーを別のポートに移動するには、入力ポートまたは出力ポートに表示されている菱形の移動アイコン (この場合は手のポインタが表示されています) を別のポートにドラッグします。 ひし形の移動アイコン

ブロックまたはワイヤーの削除

現在キャンバス上に表示されている各ブロックまたはワイヤーを削除できます。 ブロックを削除すると、このブロックに接続されているすべてのワイヤーが自動的に削除されます。

ブロックまたはワイヤーを削除するには

操作の取り消しとやり直し

キャンバスに適用された各変更を元に戻したり、やり直したりできます。 たとえば、ブロックの削除を元に戻したり、変更したパラメーター値を元に戻したり、ワイヤーの再配線を元に戻したりすることができます。

モデル名またはその説明への変更を元に戻したり、やり直すことはできません。

備考
以下で説明するキーの組み合わせを使用するには、キャンバスにフォーカスがある必要があります。 ドキュメント ペインまたはパレットに現在フォーカスがある場合、キャンバス上の変更は元に戻したりやり直したりすることはできません。
操作を元に戻すまたはやり直すには

上記のツールバー ボタンは、元に戻すまたはやり直すことができる操作がある場合にのみ有効になります。

デバイス、グループ、アセットの置換

現在のモデルで使用されているデバイス、グループ、またはアセットを検索し、現在 Things Cloud インベントリに登録されている(デバイス管理アプリケーションで視覚化されている)他のデバイス、グループ、またはアセットと置き換えることができます。

備考
以下のルールでは、デバイスという用語はデバイスまたはその他のアセットを指します (グループではありません)。

次のルールが適用されます。

デバイスを置換した後、現在のモデルの入力ブロックと出力ブロックで使用されているメジャーメントが依然として適切なメジャーメントをご覧いることを確認する必要があります。 Things Cloud フラグメントとシリーズは置換によって変更されません。これは、新しく定義されたデバイスに適用される場合と適用されない場合があります。

デバイス、グループ、アセットを置き換えるには
  1. モデルエディタのツールバーで、次のボタンをクリックします。 アイコンを置換 このツールバー ボタンは、現在のモデルで少なくとも 1 つのデバイス、グループ、またはアセットが定義されている場合にのみ有効になります。 この場合、定義されたトリガー デバイスは考慮されません。

  2. 表示されるダイアログ ボックスの 現在のデバイス、グループ、またはアセット ドロップダウン リスト ボックスで、置き換えるデバイス、グループ、またはアセットを選択します。 モデルで使用されているすべてのデバイス、グループ、アセットを選択できます。

  3. 置換 ボックスをクリックしてダイアログ ボックスを表示します。 このダイアログ ボックスは、ブロックパラメーターエディタ で別のデバイス、グループ、またはアセットを選択するときと同じです。 このダイアログ ボックスの詳細については、ブロックのパラメーターの編集 をご覧ください。 エントリの上にマウスを置くと表示されるボタンをクリックして、代わりに使用するデバイス、グループ、またはアセットを選択します。

    表示されるデバイス、グループ、アセットの最大数は、テナント オプションによって異なります。 詳細については、表示されるデバイス、グループ、アセットの数の構成 をご覧ください。

    検索時に表示されるマネージドオブジェクトもテナント オプションによって異なります。 特定のタイプのマネージドオブジェクトのみを表示するように検索を制限できます。 詳細については、デバイス、グループ、アセットの検索 をご覧ください。

  4. さらにデバイス、グループ、またはアセットを置き換える場合は、行を追加 をクリックします。 これは、現在のモデルで複数のデバイス、グループ、またはアセットが定義されている場合にのみ表示されます。

    追加の 現在のデバイス、グループ、またはアセット および 置換対象 ドロップダウン リスト ボックスを含む新しい行が表示され、置換するデバイス、グループ、またはアセットをもう 1 つ選択できるようになります。以前に置換対象として選択したデバイス、グループ、アセットは、現在のデバイス、グループ、またはアセット ドロップダウン リスト ボックスで選択できなくなります。

    必要なすべてのデバイス、グループ、アセットが置換対象として選択されるまで、この手順を繰り返します。 現在のモデルにあるデバイス、グループ、またはアセットと同じ数の行を追加できます。

  5. 行を削除する場合 (たとえば、選択したデバイスを置換する必要がなくなった場合など)、その行の横にある アイコンをクリックします。 これは、ダイアログ ボックスに現在複数の行が表示されている場合にのみ使用できます。

  6. 置換 をクリックします。

テンプレートパラメーターの管理

モデルでは、0 個以上のテンプレートパラメーターを指定でき、ブロック パラメーターの定義された値の代わりに使用できます。 たとえば、ブロックパラメーターエディタ で しきい値 ブロックのしきい値として 100 を定義する代わりに、テンプレートパラメーターを割り当てることができます。

モデルにテンプレートパラメーターがある場合は、モデルの複数のインスタンスを作成し、テンプレートパラメーターに異なる値を指定できます。 モデルの理解 もご覧ください。テンプレートパラメーターのないモデルとテンプレートパラメーターのあるモデルの違い、およびさまざまなロール (モデル作成者とインスタンス管理者) について説明しています。

テンプレートパラメーターを使用する場合は、以下で説明するように、まず テンプレートパラメーター ダイアログ ボックスでテンプレートパラメーターを定義する必要があります。 テンプレートパラメーターを定義した後、ブロックパラメーターエディタ で同じタイプの特定のパラメーターに割り当てることができます。(ブロックのパラメーターの編集)。

備考
ブロックパラメーターエディタ でテンプレートパラメーターを直接定義することもできます。

テンプレートパラメーターのないモデルは、モデルの単一インスタンスを実行しながら、モデルマネージャーで直接アクティブ化できます。 少なくとも 1 つのテンプレートパラメーターを 1 つ以上のブロック パラメーターに割り当てた後にモデルを保存する場合は異なります。モデルマネージャーでモデルを直接アクティブ化できなくなります。 代わりに、モデルのインスタンスを少なくとも 1 つ作成し、インスタンスエディタ を使用してそのインスタンスをアクティブ化する必要があります。 詳細については、インスタンスエディタ の使用 をご覧ください。

現在のモデルのインスタンスのテンプレートパラメーターを定義するには
  1. モデルエディタ のツールバーで、次のボタンをクリックして テンプレートパラメーター ダイアログ ボックスを呼び出します。 テンプレートパラメーター アイコン

    少なくとも 1 つのテンプレート パラメータが定義されている場合、上のツールバー ボタンにチェックマークが表示されます。 チェックマーク付きのテンプレートパラメーター アイコン

    このダイアログ ボックスは最初、空でありモデルで使用するテンプレートパラメーターを作成する必要があります。 テンプレートパラメーターがすでに定義されている場合、それらはすべてこのダイアログ ボックスに表示されます。

    テンプレートパラメーターの長いリストがある場合は、検索ボックスに名前または名前の一部を入力すると、探しているテンプレートパラメーターを簡単に見つけることができます。 検索条件が現在適用されている場合、検索ボックスに X が表示されます。 これをクリックすると検索がクリアされ、使用可能なテンプレートパラメーターがすべて表示されます。

    テンプレートパラメーターが 1 つ以上のブロック パラメーターに割り当てられた後、使用数 列は、テンプレートパラメーターが使用されている場所の数を示します。 たとえば、テンプレートパラメーターが 2 か所で使用されている場合、これは 2 つのブロック パラメーターに割り当てられていることを意味します。 これらは同じブロック内に存在することも、異なるブロック内に存在することもできます。

  2. テンプレートパラメーターを作成するには、新しいテンプレートパラメーターの作成 をクリックします。

    これにより、ダイアログ ボックスの下部に空の行が追加されます。 新しいテンプレートパラメーターの作成 を数回クリックして、空の行をいくつか追加し、次々に入力できます。

  3. 各テンプレートパラメーターに次の情報を指定します。

    • 名前: 現在のモデル内のテンプレートパラメーターを識別するための一意の名前を入力します。 この名前は、後でブロックパラメーターエディタ にて選択できます。

    • タイプ: ドロップダウン リスト ボックスからテンプレートパラメーターの値のタイプを選択します。 タイプは、たとえば、文字列または浮動小数点、デバイス、グループまたはアセットの名前、または特定のブロックのパラメーターです。

      複数行文字列 は、電子メールの送信 ブロックの テキスト パラメーターなどで使用される特別なタイプです。 長い入力は デフォルト値 テキスト ボックスで自動的に折り返され、Enter キーを押すと新しい行でテキストを開始できます。

      入力ブロックはデバイスまたはデバイスのグループを指定し、出力ブロックはデバイス、トリガーデバイス、またはアセットを指定します。 テンプレートパラメーターの場合、同じテンプレートパラメーターとその値を入力ブロックと出力ブロックの両方に使用できます。 テンプレートパラメーターがデバイスのグループを参照するように設定されている場合、それを出力ブロックで使用すると、トリガー デバイスとして扱われます。 通常、単一のテンプレートパラメーターはすべての入力ブロックと出力ブロックに使用され、単一のデバイスまたはデバイスのグループになる可能性があります。この場合、ブロックの出力は、モデル評価をトリガーしたグループ内のデバイスに送られます。 モデルがメジャーメントの平均を計算し、メジャーメントに出力すると、デバイスごとに個別に新しいメジャーメントが生成されます。異なるグループを参照する異なるテンプレートパラメータが使用されたとしても、モデルの出力は、モデルの評価をトリガーしたデバイスにのみ送信されます。

    • オプション: オプションの値は空白のままにすることも、インスタンス管理者が後で設定することもできます。 このチェックボックスをオンにすると、デフォルト値を指定することはできません。

    • デフォルト値オプション チェック ボックスが選択されていない場合のみ、デフォルト値を指定できます。

      例外: ブール型には常に値があり、オプションにすることはできません。デフォルトでは「false」です (つまり、デフォルト値のチェックボックスが選択されていません) 。

      デフォルト値を指定すると、インスタンス管理者が新しいインスタンスを作成するときに、このデフォルト値がインスタンスエディタに提供されます。 インスタンスの管理者は、このデフォルト値を変更しないままにすることも、そのインスタンスの必要に応じて変更することもできます。

      デバイスのデフォルト値を設定する場合、デフォルト値 フィールドをクリックすると追加のダイアログ ボックスが表示されます。 このダイアログ ボックスは、ブロックパラメーターエディタ で別のデバイス、グループ、またはアセットを選択するときと同じです (このダイアログ ボックスの詳細についてはブロックのパラメーターの編集 をご覧ください)。 エントリの上にマウスを置くと表示されるボタンをクリックして、使用するデバイス、グループ、またはアセットを選択します。

    備考
    必要な値が指定されていないブロックパラメーターがある場合、インスタンスを起動できません。 そうしようとすると、エラーが報告されます。
  4. テンプレートパラメーターはいつでも更新できます。 これには、名前、オプションかどうか、およびデフォルト値が含まれます。 更新されたテンプレートパラメーターが定義されているすべてのブロックは、新しい値を使用するように自動的に適応されます。 唯一の例外はタイプです。 タイプを変更できるのは、テンプレートパラメーターがモデルのどのブロックでも使用されていない場合のみです。

  5. モデルが非アクティブな場合は、テンプレートパラメーターの順序を変更できます。 これは、インスタンスエディタ での表示順序に影響します。 行の横に表示される次のコントロールを使用して、行を別の位置にドラッグします。 アイコンをドラッグ インスタンスのフィルタリングと並べ替え もご覧ください。

  6. テンプレートパラメーターは、モデルのどのブロックでも使用されていない場合にのみ削除できます。 テンプレートパラメーターを削除するには、アクション メニュー (行の最後にある 3 つの縦方向のドット) をクリックし、削除 をクリックします。

  7. OK をクリックして変更をメモリーに保存し、ダイアログを閉じます。

    備考
    変更はモデルを保存するときにのみインベントリに書き込まれることに注意してください。 モデルの保存 もご覧ください。

項目を別のモデルにコピーする

キャンバス上の任意のアイテム (ブロック、グループ、および接続されたワイヤー) をコピーして、別のモデルに貼り付けることができます。 このための前提条件は、すべてが同じセッションで行われることです。 項目を別のタブまたは別のブラウザに貼り付けようとしても機能しません。

注意
多数の入力ブロックと出力ブロックをコピーすると、パフォーマンスの問題が発生する可能性があります。 これは、この操作では、これらのブロックで表されるデバイスに関する情報を取得するために、Things Cloud のインベントリ サービスにアクセスする必要があるためです。
アイテムを別のモデルにコピーするには
  1. モデルエディタのキャンバスで、コピーするすべての項目を選択し、Ctrl+C を押します。

    これは、モデルが現在読み取り専用モードにある場合にも機能します。

  2. モデルエディタを終了します。 モデルエディタ の終了 もご覧ください。

  3. モデルマネージャーで、コピーした項目を貼り付けるモデルに切り替えます。これは、既存のモデル (既存のモデルの編集もご覧ください) または最初に作成する必要がある新しいモデル (新しいモデルの追加もご覧ください) にすることができます。

  4. モデルエディタ が表示されたら、Ctrl+V を押して、コピーした項目をモデルに貼り付けます。

グループでの作業

グループとは

ブロックとそれに接続されたワイヤーをグループに配置できます。 グループは、折りたたんだり展開したりできる特殊なタイプのブロックです。 グループを展開すると、キャンバス上で行うのと同じ方法でその内容を変更できます。たとえば、ワイヤーを追加したり、ブロック パラメーターを編集したりできます。 グループにさらにブロックを追加したり、グループからブロックを削除したりすることもできます。 グループを折りたたむと、キャンバス上で占めるスペースが減りますが、この場合、グループ内のブロックと配線は表示されません。

グループは、一般的に必要な機能を複数の場所で利用できるようにする必要がある場合に役立ちます。 各グループに識別できる名前を付けることができます。 グループをコピーして、同じモデルまたは別のモデルに貼り付けることができます。

備考
このタイプのグループをデバイスのグループと混同しないでください。 入力ソースはデバイスのグループである場合がありますが、これは異なります。 ブロックのパラメーターの編集 もご覧ください。

複数のブロックを含むグループの例

グループに対して表示されるボックスのサイズは、その内容によって決まります。 グループ内のブロックを別の位置に移動すると、ボックスのサイズが自動的に調整されます (つまり、ボックスが大きくなったり小さくなったりします)。 同じグループ内の別のブロックへのワイヤーのパスを変更する場合も同じことが当てはまります。

キャンバス上のグループは、ブロックを移動するのと同じ方法で移動します (ブロックの移動 もご覧ください)。 グループを移動すると、そのグループは常にキャンバス上の他のすべての項目の上に表示されます。 グループ ボックスは透明なので、どのブロックがグループに属しており、どのブロックがボックスに重なっているのかを簡単に確認できます。

グループを入れ子にすることはできません。

備考
グループのコンテンツを管理する場合には例外が 1 つあります。Ctrl+C および Ctrl+V を使用してグループに含まれる 1 つ以上のブロックを複製する場合、またはブロックパラメーターエディタ で 複製 コマンドを使用する場合、 重複したものはグループに追加されません。 代わりにキャンバスに追加されます。 ただし、Ctrl キーを押して複製するブロックをドラッグすると、グループ内 (同じグループでも別のグループでも構いません) またはキャンバス上に複製を配置できます。 ブロックの複製 もご覧ください。

グループの追加

現在キャンバス上に表示されているブロック (ブロック間のワイヤーを含む) をグループに追加できます。

空のグループを作成することはできません。 まず、以下で説明するようにグループを追加する必要があります。 グループが存在すると、ブロックの追加 および ブロックをグループに移動する

グループを追加するには
  1. モデルエディタのキャンバスで、グループに追加する 1 つまたは複数のブロックを選択します。 ワイヤーを選択する必要はありません。 既存のワイヤーはすべて保持されます。 ブロックとワイヤーの選択 もご覧ください。

  2. モデルエディタのツールバーで、次のボタンをクリックします。 グループアイコン

    または、Ctrl+G を押します。

グループの折りたたみと展開

キャンバス上により多くのスペースが必要で、グループの内容を表示する必要がない場合は、グループを折りたたむことができます。

グループが折りたたまれている場合、そのグループ内のブロックの数を示す数字が折りたたまれたグループに表示されます。 例えば:

折りたたまれたグループの例

グループの内容を再度表示したい場合 (たとえば、ブロック パラメーターを編集したりワイヤーを追加したりするため)、グループを展開する必要があります。

モデルを保存すると、各グループの状態 (つまり、現在折りたたまれているか展開されているか) が保存されます。 次回モデルを編集するとき、その内容は最後の保存後と同じように表示されます。

グループを折りたたむまたは展開するには

グループ名の変更

グループを追加すると、デフォルトの名前は「グループ」になります。 各グループの名前を変更して、一意の名前を付けることができます。

グループ名がグループ ラベルに表示できる長さよりも長い場合は、マウス ポインタをグループ名の上に移動すると、ツールチップに名前全体が表示されます。

名前のないグループを作成することはできません。 グループ名を削除すると、以前の名前が自動的に再び使用されます。

グループの名前を変更するには
  1. モデルエディタでグループを選択し、グループ名をクリックします。 これは、グループが折りたたまれているときまたは展開されているときに行うことができます (グループの折りたたみと展開 もご覧ください)。 これにより、編集する名前全体が選択されます。

  2. 新しいグループ名を指定し、Enter キーを押します。

ブロックをグループに移動する

1 つ以上のブロックをキャンバスから既存のグループに移動できます。 既存のワイヤーはすべて保持されます。

ブロックをパレットから既存のグループにドラッグすることもできます。 ブロックの追加 をご覧ください。

ブロックをグループに移動やドラッグできるのは、その内容が表示されているとき、つまりグループが現在展開されているときだけです。 グループの折りたたみと展開 もご覧ください。

ブロックをグループに移動するには
  1. ブロックを移動するグループが折りたたまれていないことを確認します。

  2. モデルエディタ のキャンバスで、グループに移動するブロックを選択します (ブロックとワイヤーの選択 もご覧ください)。ブロック間のワイヤーを選択する必要はありません。 それらはブロックと一緒に自動的に移動されます。

  3. 次のいずれかを実行します。

    • 選択内容をグループにドラッグし、そこにドロップします。
    • または、ブロックを移動するグループを選択します。 次に、モデルエディタ のツールバーにある次のボタンをクリックするか、Ctrl+G キーを押します。 グループアイコン

グループからキャンバスへのブロックの移動

ブロックをグループからキャンバスに移動できます。 既存のワイヤーはすべて保持されます。

グループの最後の項目がキャンバスに移動されると、そのグループは自動的に削除されます。 すべての項目を同時にキャンバスに移動したい場合は、グループ全体のグループを解除するだけです。 グループのグループ化を解除 をご覧ください。

ブロックをグループからキャンバスに移動するには

グループからのブロックとワイヤーの削除

ブロックワイヤーをグループから削除するには、キャンバス上でブロック ワイヤーを直接削除するのと同じ方法を使用します。 唯一の前提条件は、グループが現在拡張されていることです。 ブロックまたはワイヤーの削除 をご覧ください。

グループ内の最後の項目が削除されると、そのグループは自動的に削除されます。

グループの複製

現在キャンバスに表示されている各グループを複製できます。 元のグループとその複製の内容は両方とも同じになります。

グループ外のブロックから入ってくるワイヤー、またはグループからグループ外のブロックに向かうワイヤーは複製されません。

グループを別のモデルにコピーすることもできます。項目を別のモデルにコピーする をご覧ください。

グループを複製するには

モデルエディタのキャンバスで、複製するグループをクリックし (グループが現在折りたたまれているか展開されているかは関係ありません)、次のいずれかの操作を行います。

グループのグループ化を解除

グループのグループ化を解除すると、そのグループが削除され、そのグループのすべてのブロックがキャンバスに直接表示されます。 付属のワイヤーはすべて保持されます。

複数のグループを同時に解除できます。 この場合、選択したグループ内またはグループ外でブロックやワイヤーが選択されていないことが重要です。選択されていないと、グループを解除できません。

グループのグループを解除するには
  1. モデルエディタのキャンバスで、グループを解除する 1 つまたは複数のグループを選択します。 グループが現在折りたたまれているか展開されているかは関係ありません。

  2. モデルエディタのツールバーで、次のボタンをクリックします。 グループ解除アイコン または、Ctrl+Shift+G を押します。

グループの削除

現在キャンバスに表示されている各グループを削除できます。 グループ外のブロックへのワイヤーは削除されます。

注意
グループを削除すると、このグループ内のすべてのブロックとワイヤーがモデルから削除されます。
グループを削除するには

モデルエディタのキャンバスで、削除するグループをクリックし (現在折りたたまれているか展開されているかは関係ありません)、Del キーを押します。

キャンバスの管理

モデルが大きすぎてキャンバスの表示部分に収まらない場合は、マウスを使用して、現在ウィンドウの外側にあるモデルの部分をビューにドラッグできます。 これは、キャンバス上で直接行うことも、概要領域で行うこともできます。 概要領域には常にモデル全体が表示されます。 現在、概要領域が表示されていない場合は、概要の表示と非表示 をご覧ください。

大規模なモデル内を移動するには
  1. モデルエディタで、キャンバスの空き領域 (ブロックやワイヤーが含まれていない)、または概要領域上の任意の場所にマウスを置きます。

  2. マウスボタンをクリックして押したまま、すぐにマウスを目的の方向にドラッグします。 キャンバス上に必要な領域が表示されたら、マウス ボタンを放します。

    備考
    キャンバスの空いている場所でマウス ボタンを長押しすると、マウス ポインタが変化し、代わりに領域 (たとえば、複数のブロックや接続されたワイヤーなど) を選択できるようになります。 ブロックとワイヤーの選択 もご覧ください。

概要の表示と非表示を切り替える

モデル全体を示す概要領域がキャンバスの右下に表示されます。 概要が必要ない場合は、非表示にすることができます。

概要を表示または非表示にするには

概要を非表示にするには、概要領域のすぐ上に表示される次のコントロールをクリックします。 概要アイコンを非表示

概要を表示するには、キャンバスの右下にある次のコントロールをクリックします。 概要アイコンを表示

キャンバスをズームする

モデルエディタのツールバーには、キャンバスの現在のズーム率が表示されます。 ツールバーのズーム ボタンを使用すると、

備考
以下に説明するキーの組み合わせを使用すると、現在選択されている領域がズーム対象を定義します。 キャンバスにフォーカスがあるとき (たとえば、ブロックまたはワイヤーを選択したばかりのとき)、キャンバスのコンテンツのみがズームされます。 ドキュメント ペインまたはパレットにフォーカスがある場合、ブラウザのズーム機能が使用され、ブラウザのすべてのコンテンツがズームされます (ツールバーのズーム率は変更されません)。
キャンバスをズームするには

ズームアウトするには、モデルエディタ のツールバーにある次のボタンをクリックします。 ズームアウトアイコン または、Ctrl キーとマイナス キーを押します。

ズームインするには、モデルエディタ のツールバーにある次のボタンをクリックします。 ズームインアイコン または、Ctrl キーとプラス キーを押します。

グリッドの表示と非表示を切り替える

キャンバス上のブロック、ワイヤー、グループは常にグリッドにスナップされます。 グリッドを表示するかどうかを決定できます。 デフォルトではグリッドは表示されません。 キャンバスをズームすると、それに応じてグリッドもズームされます。

グリッドを表示または非表示にするには

モデルエディタ で、ツールバー ボタンをクリックしてグリッドの表示を切り替えます。

グリッドが非表示の場合、ボタンは次のようになります。 グリッド非表示時のアイコン

グリッドが表示されると、ボタンは次のようになります。 グリッド表示時のアイコン

モデルがアクティブ (読み取り専用モード) の場合、グリッドの表示を切り替えることはできないため、このボタンは無効になります。

インスタンスエディタの使用

インスタンスエディタのユーザーインターフェース

インスタンスエディタを呼び出すための前提条件は、モデルエディタで 1 つ以上のテンプレートパラメーターが定義されていることです (テンプレートパラメーターの管理 もご覧ください)。

インスタンスエディタを使用すると、同じモデルの異なるインスタンスをセットアップできます。 各インスタンスのブロックはテンプレートパラメーターに異なる値を使用でき、インスタンスは他のインスタンスから独立してアクティブ化できます。 インスタンスエディタはモデルマネージャーから呼び出します。 モデルのインスタンスの編集 もご覧ください。

備考
インスタンスを編集するには、「CEP 管理」の管理者権限が必要です。 読み取り権限がある場合は、インスタンスの表示のみが可能です。

インスタンスエディタには、選択したモデルのインスタンスが表示されます。 インスタンスがある場合は、インスタンスの値、モード、およびインスタンスがアクティブかどうか表に表示されます。

インスタンスを含むインスタンスエディタ

インスタンスごとに行が表示されます。 テンプレートモデルで定義されているテンプレートパラメーターごとに列が提供され、テンプレートパラメーターの名前が列ヘッダーになります。 インスタンスがアクティブでない場合は、そのインスタンスの値を調整できます。

すべてのテンプレートパラメーター (列) を画面に表示できない場合は、水平スクロールバーを使用できます。

表の右側には、各インスタンスのモードとステータスが表示されます。 ここからインスタンスをアクティブ化 (デプロイ) し、非アクティブ化 (アンデプロイ) します。 インスタンスのデプロイ および インスタンスのアンデプロイ もご覧ください。

インスタンスに対して表示される各行には、アクション メニュー (行の右端に表示される 3 つの縦のドット) があり、インスタンスを管理するためのコマンド (インスタンスの削除など) が含まれています。

フィルタリングと並べ替えによってインスタンスのリストを制御できます。 詳細については、インスタンスのフィルタリングと並べ替え をご覧ください。

次のエラー アイコンが行の終わり近くに表示されている場合、対応するインスタンスはイベントを処理していません。 詳細については、そのアイコンをクリックしてください。 エラー アイコン

インスタンスエディタを開くと、最後にインスタンスを編集してからテンプレートパラメーターが変更されており、以前と同じ値のタイプが使用されなくなっている場合があります。 インスタンスエディタで指定された値に互換性がある場合、それらは新しい値の型に変換されます。 互換性のない値 (ブール型のチェック ボックスやドロップダウン リスト ボックスに表示される値を含む) は自動的に削除されます。 値が削除された各フィールドには、エラーの下線と対応するエラー メッセージが表示されます。

インスタンスの追加

新しいインスタンスを追加すると、インスタンスエディタのテーブルに新しい行が追加されます。 その後、必要な値をすぐに入力することも、最初に必要な行をすべて追加してから行を順番に入力することもできます。

インスタンスを追加するには

  1. インスタンスエディタのツールバーで、新しいインスタンス をクリックします。

    これにより、テーブルの下部に新しい行が追加されます。 新しいインスタンス (行) は、保存されるまで背景色で表示されます。

  2. モデルで定義されているように、テンプレートパラメーター値を入力します。 インスタンスの編集 もご覧ください。

インスタンスの編集

モデルエディタでブロックの値を指定するのと同じ方法で、インスタンスのパラメーター値を指定します(ブロックのパラメーターの編集もご覧ください)。

インスタンスエディタのテーブルには、テンプレートパラメーターのタイプに応じて、さまざまなタイプの入力コントロールが用意されています。

編集されているがまだ保存されていないインスタンス (行) は、保存されるまで背景色が表示されます。

テキスト ボックスにまだ指定されていない値が必要な場合は、これが必須フィールドであることを示すメッセージが表示されます。 インスタンスを保存してインスタンスエディタを終了し、後で必要な値をすべて設定することができます。 インスタンスの欠落フィールドが指定されていない限り、そのインスタンスをアクティブ化することはできません。

インスタンスのデプロイ

各インスタンスを個別にアクティブ化 (つまり、デプロイ) できます。 たとえば、1 つのインスタンスを本稼働モードにし、別のインスタンスをテストモードにすることができます。 さまざまなモードの詳細については、モデルのデプロイ をご覧ください。 この情報は、通常のモデルとテンプレートモデルの両方に適用されます。

インスタンスをアクティブ化すると、そのインスタンスに対するすべての変更が最初に保存され、その後インスタンスがアクティブ化されます。

インスタンスがアクティブ化されると、テンプレートパラメーター値が指定されている場合、その値が取得され、テンプレートパラメーター バインディングを使用するモデル内のブロック パラメーターに適用されます。 テンプレートパラメーター値が指定されていない場合は、そのテンプレートパラメーターのデフォルト値 (存在する場合) が使用されます。 必須のテンプレートパラメーターの場合にテンプレート パラメーター値が指定されていない場合、インスタンスはアクティブ化に失敗します。

インスタンスがアクティブになると、最初にインスタンスを非アクティブ化することなく、テンプレートパラメーター値やモードを変更することはできません。 いずれかのインスタンスがアクティブな場合、モデルは読み取り専用となり、すべてのインスタンスが非アクティブ化されるまで変更できません。

インスタンスをデプロイするには

  1. インスタンスエディタの 実行モード 列で、デプロイするインスタンスのドロップダウン メニューをクリックし、本稼働テスト、または シミュレーション のいずれかを選択します。

    ドラフトモードのインスタンスをアクティブ化することはできません。

  2. シミュレーションモードを選択した場合は、表示されているカレンダー アイコンをクリックし、使用する期間を指定して、適用 をクリックします。 シミュレーション パラメーター もご覧ください。

  3. 現在、ステータス 列のトグル ボタンに 非アクティブ が表示されている場合、このボタンをクリックして状態を アクティブ に変更します。 シミュレーションモードの場合、有効な時間範囲が定義されている場合にのみ、状態を アクティブ に設定できます。

    エラーが発生した場合は、表の右側に以下のエラーアイコンが表示され、インスタンスを起動できません。 詳細を表示するには、エラー アイコンをクリックしてください。 エラー アイコン

インスタンスのデプロイ解除

現在本稼働モード、テストモード、またはシミュレーションモードにあり、インスタンスエディタの ステータス 列のトグル ボタンに アクティブ と表示されている各インスタンスを非アクティブ化 (つまり、デプロイを解除) できます。

インスタンスのデプロイを解除すると、インスタンスは停止され、受信データは処理されなくなります。 インスタンス内に構築された状態はすべて失われます。 シミュレーションモードの場合、これは、指定された時間範囲のすべての履歴データが再生される前にインスタンスが停止されることを意味します。

インスタンスをアンデプロイするには

インスタンスエディタの ステータス 列で、デプロイを解除するインスタンスのトグル ボタンをクリックすると、ボタンに 非アクティブ が表示されます。

インスタンスのフィルタリングと並べ替え

インスタンスの長いリストがある場合は、検索ボックスに値を入力することで、探しているインスタンスを簡単に見つけることができます。 または、値の一部を入力することもできます。 これにより、インスタンスエディタのすべての入力フィールドが検索され、この値を含むインスタンス (行) のみがリストされます。 フィルターに一致するすべての値が強調表示されます。 検索条件では大文字と小文字は区別されません。 検索条件が現在適用されている場合、検索ボックスに X が表示されます。 これをクリックすると検索がクリアされ、利用可能なすべてのインスタンスが表示されます。

インスタンスエディタ テーブルの列を並べ替えることもできます。 これを行うには、マウスを列ヘッダーに移動したときに表示される矢印をクリックします。 これにより、インスタンスがその列の値に従って (たとえば、アルファベット順または数字順に) 並べ替えられます。 もう一度クリックすると、列が逆方向に並べ替えられます。 そのため、その列の必須値がまだ指定されていないフィールドは、列の最上部または最下部に表示できます。 たとえば、アクティブなインスタンスを一番上に表示するなど、実行モードとステータスに従ってインスタンスをアルファベット順に並べ替えることもできます。

値を編集しても、インスタンスエディタ テーブルの行の表示には影響しません。 検索と並べ替えを再適用する場合は、インスタンスを保存して再読み込みする必要があります。

新しいインスタンスを追加しても、インスタンスエディタ テーブルの行の表示には影響しません。 ソート後に行を追加すると、インスタンスを再ロードしない限り、その行は常にテーブルの最後に追加されます。

備考
テンプレートパラメーター ダイアログ ボックスでテンプレートパラメーターを並べ替えることもできます (テンプレートパラメーターの管理 をご覧ください)。 これは、インスタンスエディタでの表示順序に影響します。

インスタンスの複製

現在インスタンスエディタにリストされている各インスタンス (行) を複製できます。 元のインスタンスとその複製は両方とも同じテンプレートパラメーター値と同じモードを持ちます。 ただし、元のインスタンスがアクティブであっても、複製されたインスタンスは常に非アクティブになります。

インスタンスを複製するには

インスタンスエディタで、複製するインスタンスのアクション メニューをクリックし、複製 をクリックします。

複製されたインスタンスの新しい行が、インスタンスエディタのテーブルの一番下にすぐに表示されます。

インスタンスの削除

現在インスタンスエディタにリストされている各インスタンスを削除できます。 現在デプロイされているインスタンスを削除すると、まずデプロイが解除されてから削除されます。

インスタンスを削除するには

  1. インスタンスエディタで、削除するインスタンスのアクション メニューをクリックし、削除 をクリックします。

  2. 表示されるダイアログ ボックスで、削除 をクリックして削除を確認します。

インスタンスの保存

必要な情報を指定する必要がある行がまだある場合でも、インスタンスを保存できます。 これは、後でその情報を追加する場合に役立ちます。

備考
インスタンスをアクティブ化すると、最近の変更がすべて自動的に保存されます。 インスタンスのデプロイ もご覧ください。

インスタンスを保存するには

インスタンスエディタのツールバーで、保存 をクリックします。

このコマンドは、インスタンスに変更が適用されている場合にのみ有効になります。 行が背景色で強調表示されているインスタンスのみが保存されます。

インスタンスのリロード

表示を更新して、すべてのインスタンスの最新の状態を表示したり、デプロイされたインスタンスが障害状態になったかどうかを確認したりできます。

インスタンスを再読み込みするには

インスタンスエディタのツールバーで、再読み込み をクリックします。

リロード時に保存されていない変更がある場合は、最初にこれらの変更を保存するように求められます。

インスタンスエディタを終了する

対応するツールバー ボタンを使用してインスタンスエディタを終了すると、モデルマネージャーに戻ります。

インスタンスエディタを終了するには

インスタンスエディタのツールバーで、[X] をクリックします。

終了時に保存されていない変更がある場合は、最初にこれらの変更を保存するように求められます。

ワイヤーとブロック

ネットワーク上で送信される値

モデル内のブロックは、ブロック出力からブロック入力にワイヤーで接続されます。

備考
これらのブロックの出力および入力は、出力ポートおよび入力ポートとも呼ばれます。 2 つのブロック間のワイヤーの追加 もご覧ください。

ワイヤーを使用すると、ブロック間で信号と値を渡すことができます。 ワイヤー上で送信される値は、接続元のブロック出力に応じて、次のタイプのいずれかになります。

タイプ 説明
boolean true または false の値。 ブール値は、変更されるまで true または false のままです
float 数値。小数にすることができます (固定精度を使用して処理できます)。 float 値は、変更されるまで現在の値を維持します
string テキスト値。 文字列値は、変更されるまで現在の値を維持します
pulse ある時点の信号。 パルスは瞬間的にのみアクティブになります。 上記のタイプとは異なり、これらは時間内の 1 つのインスタンスのみを表します。 パルス タイプもご覧ください
any 上記のタイプのいずれかの値。 any タイプもご覧ください

ワイヤのタイプは、接続される出力によって異なります。 これはブロック参照で確認できます。 同様に、ブロックの入力のタイプ (またはサポートされているタイプ) は、ブロックリファレンスで確認できます。

値の型

次のタイプは値の型を示しています。

値の型は、断続的に読み取られたりサンプリングされたりするセンサー値などのメジャーメントをモデル化するのに役立ちます。 読み取りの間に、測定される物理的特性 (温度など) は連続的な特性であるため、依然として何らかの値を持ちます。 実際的な理由により、センサーは連続的な出力ストリームを提供せず、定期的にサンプリングしたり、メジャーメントが変化した場合にのみ新しい読み取り値を提供したりすることがあります (センサーが提供する測定解像度の範囲内で)。 サンプル ポイント間では、ブロックは、提供される最新の値である最新の値を使用します。 一般に、ブロックは、新しい値が受信されるまで、値はその値の最新の読み取り値にとどまると想定します。

たとえば、一対の温度センサーについて考えてみましょう。 1 つは関係なく 10 秒ごとに読み取り値を提供しますが、もう 1 つは値が 0.5 度変化した場合にのみ新しい読み取り値を提供します。 これらを 相違 ブロックに接続すると、次の表に示すような入力が得られ、相違 ブロックの 絶対的な相違 出力からの対応する結果が得られます。

時間
センサー1
(10 秒ごとに読み取ります)
センサー2
(0.5 ずつ変化すると出力)
差分ブロック: 絶対差分出力
10:00:00 20.0
10:00:03 22.0 2
10:00:10 20.0 2
10:00:20 20.0 2
10:00:23 22.5 2.5
10:00:28 23.0 3
10:00:30 21.1 1.9
10:00:35 23.5 2.4
10:00:40 22.8 24.0 1.2

同じタイムスタンプを持つ同じブロックへの 2 つの入力 (ブロックの異なる入力ポートへ) は 1 つの出力のみを生成することに注意してください。 モデル内の各ワイヤー (および各入力ブロック) には、特定の時点で 1 つの値しか存在できません。 入力ブロックは、同じタイムスタンプに対して複数の出力を生成できません。 複数のイベントを同時に受信した場合、どのイベントが選択されるかは未定義です。

一般に、ブロックは、以前と同じ booleanfloat、または string 値を受け取るワイヤーに意味があるとはみなしません。 ほとんどのブロックは動作を変更しません。 これは、上の例の 相違 ブロックなど、あらゆる算術ブロックに当てはまります。センサー 1 からの繰り返し読み取りでも出力は 2 のままです。繰り返し入力を無視 チェック ボックスが選択されていない (false) 不足データ ブロックなど、いくつかの例外があります。

単一のブロックに数値入力とリセットなどのパルス信号がある場合、パルス信号が発生しても新しい値が存在しないということは、その値は同じ値のままとして扱われます。 そのため、平均値 (平均) ブロックがリセットされると、その出力は、最後に受信した入力と等しくなります (モデルの開始以来入力を受信していると仮定します)。 以下の例では、平均値 (平均) ブロックの期間は設定されていませんが、出力しきい値は 0.05 に設定されています。 これは、新しい入力がない場合でもブロックが新しい出力を生成することを意味します (共通のブロック入力とパラメーター をご覧ください)。

時間 リセット信号 センサー 2 平均値 (平均) ブロック出力 説明
10:00:00 リセット 出力はありません。 まだ入力値がありません
10:00:03 22.0 22.00 履歴がない場合、出力値は入力値となります
10:00:23 22.5 この時点までの値はすべて 22 であるため、平均値は依然として 22 です (そのため、新しい出力は生成されません)
10:00:25.22 22.05 値 22 では平均 20 秒、値 22.5 では 2.22 秒
10:00:28 23.0 22.10 値 22 では 20 秒、値 22.5 では 5 秒の平均
10:00:30 リセット 23.00 入力はまだ 23 であり (新しいイベントを受信していないだけです)、リセットでは履歴が破棄されるだけです。 履歴がない場合、出力値は入力値となります
10:00:35 23.5
10:00:35.56 23.05 出力が 0.05 変化するときのさまざまな時点での平均
10:00:36.25 23.10
10:00:37.14 23.15
10:00:38.33 23.20
10:00:40 24.0 23.25 値 23 で 5 秒 (リセットから :30 から :35)、値 23.5 で 5 秒 (:35 から :40) の平均

次のグラフは、平均値 (平均) ブロックへの入力とこのブロックの出力を示しています。

入力と出力を示すグラフ

新しい測定入力が発生するまで実効入力値は変化せず、平均値 (平均) ブロックがこの実効値 (上のグラフの赤い線) に対して動作することに注目してください。 リセットされると、ブロックは現在有効な入力を出力します。これは 2 回目のリセット時の 10:00:30 では 23 です。出力しきい値 パラメーターが設定されている場合、新しい入力が発生しなくても新しい出力が生成される可能性があることに注意してください。 となり、漸近的に最後の入力値に近づきます。 この動作は、Apama クエリやストリーム クエリとは異なることに注意してください。

平均値 (平均) ブロックが 10 秒のウィンドウで構成されている場合、そのウィンドウは次のように適用されます。

時間 リセット信号 センサー 2 有効入力値 平均値 (平均) ブロック出力 ウィンドウ履歴の値 説明
10:00:00 Reset
10:00:03 22 22 22.00 開始後の最初の値: ウィンドウは空であるため、平均値 (平均) ブロックは出力の入力値を使用します
10:00:23 22.5 22.5 22
10:00:23 - 10:00:28 22.5 22.00から22.20に増加 22, 22.5 22 または 22.5 のウィンドウの割合は時間の経過とともに変化するため、出力も変化します
10:00:28 23 23 22.25 22, 22.5
10:00:28 - 10:00:30 23 22.25から22.40に増加 22, 22.5, 23
10:00:30 Reset 23 23.00 ウィンドウがリセットされ、空になりました。 現在の (有効な) 入力は 23 なので、平均値 (平均) ブロックはそれを出力に使用します
10:00:35 23.5 23.5 23
10:00:35 - 10:00:40 23.5 23.00から23.20に増加 23, 23.5
10:00:40 24 24 23.25 23, 23.5 ウィンドウがいっぱいになりました (リセットから 10 秒)
10:00:40 - 10:00:45 24 23.25から23.75に増加 23, 23.5, 24
10:00:45 24 23.75 23.5, 24 値 23 は、ウィンドウから最終的に期限切れになります (これは、10 秒前の 10:00:35 まで有効な入力でした)
10:00:45 - 10:00:50 24 23.75から24に増加 23.5, 24
10:00:50 24 24 24 値 23.5 は、ウィンドウから最終的に期限切れになります (これは、10 秒前の 10:00:40 まで有効な入力でした)。 ウィンドウには、値 24 の 10 秒相当のメジャーメントが含まれています

上記では、メジャーメントを受信した後、現在の値がウィンドウ内でのみ重み付けされる (つまり、出力値に寄与する) ことに注目してください。 メジャーメントを受信した時点では、以前の履歴と比較して重み付けはゼロになります。 以前と同様、センサーの値は、新しい値に置き換えられるまで有効な入力のままです (これは、Apama クエリまたはストリーム クエリの時間ベースのウィンドウによる集計とは異なることに注意してください)。 たとえば、ブロックの有効入力値は 10:00:35 から 10:00:40 まで 23.5 であり、値 23.5 は、ブロックが終了してから 10 秒後の 10:00:50 に最終的にウィンドウから期限切れになります。 最初にウィンドウに入ってから 10 秒後ではなく、現在の有効な入力値になります。 最後に、ウィンドウが空の場合、ウィンドウの長さがゼロであるため、有効な入力が代わりに出力として使用されることに注意してください。

パルス型

値型とは対照的に、pulse型は単一の時点を表します。 たとえば、これは次の結果である可能性があります。

通常、ブロックは入力の 1 つに送信されるすべてのパルスに基づいて動作します。 パルスは通常、出力ブロックを使用してモデルからの出力をトリガーするために使用、またはモデル内のブロックの状態をリセットするために使用されます。

パルスは瞬間的にアクティブになります。 いくつかの点で、これらはモデルが値を処理した後に自動的にfalseにリセットされるブール値に似ています。

パルスの繰り返しは通常重要ですが、使用方法によっては必ずしも変化が生じるわけではありません。 たとえば、入力値を変更せずに 平均値 (平均) ブロックを繰り返しリセットすると、出力値は同じままになります。

any 型

any型は、任意の型の値を通過するブロック (時間遅延 ブロックや ゲート ブロックなど) で使用されます。

any型の値は、値型またはpulse型を表すことができます。

型変換

ブロック出力が同じ型であれば、ブロック出力をブロック入力に接続することは正当です。 他のほとんどの接続も許可されており、その場合、次の表に示すような変換が行われます。 次の画像は、接続が不正であることを示しています。 このような配線接続を使用してモデルを展開しようとすると失敗します。 X

接続されたブロックが持つ出力タイプ
pulse boolean float string any
タイプの入力に接続します pulse Connection is legal 出力が true に変化するとパルスが発生します 出力値が変化するとパルスが発生します 出力値が変化するとパルスが発生します 出力の値が変化するとパルスが発生します (false への変化を除く)
boolean パルスが発生した場合は true、それ以外の場合は false Connection is legal ゼロ以外の場合は true 空の文字列でない場合は true 値がゼロ以外または空の場合は true
float Connection is not legal 0 は偽、1 は真 Connection is legal Connection is not legal 値の型が float または boolean の場合は許可されますが、その他の値は実行時に失敗します
string Connection is not legal "true" か "false" 文字列に変換された数値 (技術的表記の場合もあります) Connection is legal 文字列値 (技術的表記の場合もあります)
any Connection is legal Connection is legal Connection is legal Connection is legal Connection is legal

常に成功する変換のみが許可されます。 文字列値は浮動小数点値に変換されません。 入力変換が機能する場合もありますが、常に機能することは保証できません。

多くの場合、型変換やワイヤーが意味をなす場所について心配する必要はありません。 必要な型変換はすべて自動的に行われます。

一部のブロックはさまざまなタイプの入力を受け入れ、入力タイプに応じて出力タイプまたは動作を変更する場合があります。 たとえば、論理 OR ブロックはブール入力またはパルス入力で動作でき、その出力はその入力タイプと同じです。

場合によっては、値を強制的に特定の型として解釈させることが望ましい場合があります。その場合、コンバータ ブロックを使用して、特定の型への変換を強制できます。 たとえば、Pulse ブロックは、上記の変換に従って、ブール値または浮動小数点数をパルスに変換できます。 これは、ブール値の場合、ブール値が true に変化したときにパルスを生成することを意味します。 float の場合、値が変化したときにパルスを生成します。 そのため、2 つの float 出力を OR ブロックに直接接続すると、float 出力のいずれかが 0 以外の場合に true となるブール出力が生成されます。 あるいは、2 つの float 出力をそれぞれ Pulse ブロックに接続し、そこから OR ブロックの入力に接続すると、いずれかの float 出力の値が変化するたびにパルスが送信されます。 これは Pulse ブロックのデフォルトの動作です。

Pulse ブロックでは、Mode パラメーターの設定に応じて、さまざまなタイプのパルス変換が可能です。 さまざまなモードでの変換については、次の表で説明します。

出力タイプを持つ From ブロック
pulse boolean float string any
パルスブロックのモードによる動作 値変更時 (デフォルト) Connection is legal 出力が true に変化するとパルスが発生します 出力値が変化するとパルスが発生します 出力値が変化するとパルスが発生します 出力の値が変化するとパルスが発生します (false への変化を除く)
すべての入力に対して Connection is legal すべての入力でパルスが発生します すべての入力でパルスが発生します すべての入力でパルスが発生します すべての入力でパルスが発生します
ゼロ以外の値について Connection is legal すべての真の入力でパルスが発生します ゼロ以外の入力ごとにパルスが発生します 空でない入力ごとにパルスが発生します 左側のセルに記載されているように、値のタイプに応じてパルスが発生します

ワイヤーの処理順序

ブロックに複数の入力が接続されている場合、ブロックが入力に基づいて計算を実行する前に、これらすべての入力が計算されます。 ブロックの入力が互いに同期していない可能性があります (値の種類 の 2 つの温度センサーの例など)、 この場合、ブロックは値型入力の最新値を使用します。

単一の値が同じブロックにつながる 2 つ以上のパスに送信される場合、ブロックは両方のパスの最新の値に基づいて計算を実行します。 これにより、単一のブロックへの複数のパスが存在する場合でも、一貫した動作が保証されます。

同じブロックへの異なるパスを持つモデルの例

デバイスのメジャーメントを受信すると、平均値 (平均) ブロックの計算が完了し、相違 ブロックが値とその平均の差を計算する前に平均を生成します。

ワイヤーの制限

ブロックの出力は他の複数のブロックに接続できますが、ブロックの入力は 1 つの接続のみを持つことができます。

必要がない場合は、ブロックの入力または出力を未接続のままにすることもできます (ワイヤの処理順序 で示されている例の 平均値 (平均) ブロックには、サンプル または リセット 入力に何も接続されていません)。

ワイヤーではサイクルを作成できません。 これは、ブロックの出力を接続できないことを意味します。

たとえば、Block1、Block2、Block3 の 3 つのブロックがあるとします。 次の場合、モデルにはサイクルが含まれます。

モデル内でサイクルが発生する可能性のある接続が多数あります。 ただし、モデルエディタではサイクルを作成できません。

ブロックの入力と出力

多くのブロックには、使用する必要のない入力または出力があります。

一部のブロックは複数の異なる出力を生成し、モデルは使用可能な出力の一部のみを必要とする場合があります。

一部のブロックには入力、とくに使用する必要のないpulseタイプの入力があります。 これらを何も接続しないままにしても問題ありません。これらの入力に関連付けられた操作 (リセット など。共通のブロック入力とパラメーター を参照) ) は決してトリガーされません。

ブロックは、必要に応じて、どの入力が接続されているかを検出できます。 たとえば、AND ブロックには 5 つの入力がありますが、true出力を生成するには、trueになるように接続されている入力のみが必要です。

共通のブロック入力とパラメーター

以下にリストされている入力は、ブロックの左側に表示されている共通の入力ポートの名前です。

入力ブロックとイベントのタイミング

入力ブロックは、外部ソース (Things Cloud メジャーメントなど) からのデータをモデルで利用できるようにします。 多くのデータ ソースには、各データにタイムスタンプがあり、メジャーメントまたはイベントが実際に発生した時間を報告します。 処理のために Apama システムにデータを送信する際に遅延が発生し、Apama がイベントを順番どおりに受信しない可能性があります。

メジャーメントなどのタイムスタンプを持つデータ ソースは並べ替えることができます。 たとえば、操作にはタイムスタンプがないため、順序を変更することなく、受信したとおりに処理されます。

Analytics Builder は、タイムスタンプ付きのデータ ソースを使用するいくつかの入力ブロックを提供します。 これらのブロックは、タイムスタンプを無視 パラメーターを提供します。これにより、データの並べ替えを無効にして、受信した入力を処理できるようになります。 共通のブロック入力とパラメーター もご覧ください。

次の表に、使用可能な入力ブロックをリストし、入力を並べ替えられるかどうかを示します。

入力ブロック 並べ替え可能
アラーム入力 はい
イベント入力 はい
マネージドオブジェクト入力 いいえ
測定入力 はい
操作入力 いいえ
位置入力 はい
備考
位置入力 ブロックは、特殊な イベント入力 ブロックです。 Cron Timer ブロックを使用してモデルを定期的にアクティブ化することもできます。 上記のブロックとは異なり、Cron Timer ブロックはデバイスに関連付けられておらず、パレットの ユーティリティ カテゴリにあります。

データの一部にタイムスタンプが関連付けられているデータ ソースの場合、入力ブロックは受信したイベントを順序どおりに処理できません。 これを行うために、入力ブロックは受信したすべてのイベントをリオーダー バッファーに保持し、ソース タイムスタンプから事前に定義された遅延時間までイベントの処理を遅延させます。 ソースのタイムスタンプに比べてイベントの処理を遅らせることにより、入力ブロックによりイベントの順序を変更できるようになります。 このプロセスの重要なパラメーターは、イベントの遅延時間です。 入力ブロックが入力を遅延する時間を秒単位で構成するには、minimum_wait_timelay_secsキーの値を変更するPOSTリクエストを Things Cloud に送信します。 詳細については、構成 をご覧ください。

入力ブロックは、イベントが順序どおりに配信されない場合でも、定義された遅延時間内に Apama によって受信されると想定しています。 定義された秒数 (つまり、イベントのタイムスタンプと Apama を実行しているシステムの時刻との差) を超える遅延後にイベントを受信した場合、同じイベントが発生した場合、そのイベントはドロップされます。 タイムスタンプ、またはより新しいタイムスタンプはモデルによってすでに処理されています。 そのため、古いイベントは、あるモデルによって処理されても別のモデルによって削除される可能性があります。

時間遅延値の設定が低すぎる場合、わずかな遅延によって Apama がイベントをドロップし、誤った結果が生じる可能性があります。 遅延時間の値が大きいほど、イベントが処理されるまでの遅延が長くなります。 そのため、Apama に配信されるイベントの環境に合わせて、適切な遅延時間の値を選択することが重要です。

コリレーターは、ドロップされたイベントの数をコリレーターログファイルに定期的に記録します。 ログ調整の構成については、構成 および コリレーターログへのアクセス をご覧ください。

出力ブロックとイベントのタイミング

出力ブロックは、モデルからのデータ (Things Cloud の測定や操作) を外部システム (Things Cloud など) で利用できるようにします。 出力ブロックは同期値または非同期値を生成できます。

同期出力 (メジャーメントなど) を生成する出力ブロックからの値は、別のモデルで時間同期的に使用することもでき、同じタイムスタンプの他のデータを使用してモデルで処理することもできます。 モデル間の接続 もご覧ください。

非同期出力を生成する出力ブロックからの値は、別のモデルでも使用できますが、それは外部システムからデータを受信したときにのみ時間非同期で行われます。

次の表に、使用可能な出力ブロックをリストし、出力が同期か非同期かを示します。

出力ブロック 出力の種類
アラーム出力 同期
イベント出力 同期
管理対象オブジェクトの出力 非同期
測定出力 同期
操作出力 非同期

ワイヤー上のフラグメント プロパティ

各ワイヤーには、ワイヤーのタイプである主な値 (floatbooleanstring、またはpulseのいずれか) があります。

これに加えて、一部のブロックは値とともに他の情報のフラグメントを提供する場合があります。 これらは、値の名前付きプロパティです。 これらは、メジャーメントが測定される単位や、データ ソースの追加のコンテキスト情報など、入力ブロックから提供される他の情報である場合があります。

ほとんどのブロックは入力ワイヤーからの主な値でのみ動作しますが、一部のブロックはこれらのフラグメント プロパティ値を利用して、それらを別の出力ポートに抽出できます (例については、プロパティの抽出 ブロックをご覧ください)。 これにより、外部ソースからのより複雑なデータをより柔軟に処理できるようになります。

一連のイベントを識別するためのキー

入力ブロックと出力ブロックは、一連のイベント (またはストリーム) のキーを指定することによって、一連のイベントを識別します。 この一連のイベントは、入力ブロックに配信する正しいイベントを識別するために使用されます。 キーは複数のブロック パラメーターで構成され、同じブロック タイプを通じてその一連のイベントを他の一連のイベントとは区別して識別します。 例えば:

重要
Analytics Builder では、メジャーメント、イベント、アラームなどの同期出力タイプの場合 (出力ブロックとイベントのタイミングもご覧ください)、任意のキーで出力を生成する出力ブロックを複数持つことができます。 モデル間に接続が存在する可能性があるため、同じ時点で同じ出力ストリームを生成する複数の出力ブロック (異なるモデル内) がある場合、入力ブロックでのイベントの処理中にあいまいさが発生する可能性があります。 出力ブロックを使用する場合は、2 つのブロックが同時に同じストリーム タイプの出力を生成しないようにしてください。

値とブロックの詳細

導入

Analytics Builder は、ブロックを相互に接続して、入力を処理して反応できるモデルを形成するための環境を提供します。 Analytics Builder は内部で数種類の値を使用するため、これらの違いを理解することが重要です。 次のトピックでは、連続時間値と離散時間値を表す値のタイプとpulseタイプの区別について説明します。 また、ウィンドウ処理やブロックが出力を生成するときのブロック実装の詳細についても説明します。

まとめ

Analytics Builder では、連続時間値を表すために値の型floatboolean、およびstringが使用されます。 これらには次のプロパティがあり、モデルを作成するときやカスタム ブロックを作成するときに考慮する必要があります。

これらを、離散イベントを表し、次のプロパティを持つpulseタイプと比較してください。

これらのプロパティとその背後にある理論的根拠については、次のトピックで検討および説明します。 これらのトピックでは、離散数値測定など、これらの区別に当てはまらないケースの処理方法についても説明します。

連続時間物理量の表現としての値

連続時間値タイプ、とくにfloat (つまり、数値) タイプは、通常、センサーによる何らかの連続的な物理量またはプロパティのメジャーメントを表すために使用されます。 たとえば、値は次のいずれかを表す場合があります。

これらはすべて連続的に測定可能な特性であり、本質的にはアナログです。 時間と値の両方で (そして物理的制限内で) どれだけ正確に測定できるかについては、ある程度の精度が存在します。 時間精度とは、測定をどのくらいの頻度で実行できるか、また測定時間がどの程度正確に記録されるかを意味します。 また、レイテンシ、つまり実際のプロパティの変更とそれが測定できるまでの遅延が発生する場合もあります。 値の精度とは、値をどの程度の精度で測定できるかを意味します。通常は少なくとも有効数字 2 桁、まれに有効数字 4 桁または 5 桁を超える精度を区別できます。 継続的とは、どの時点でもプロパティの測定が有効であることを意味します。

連続的ではなく、異なる時間に離散的な測定を行うことは、「サンプリング」(https://en.wikipedia.org/wiki/Sampling_(signal_processing)もご覧ください)と呼ばれることがあります。値の精度に関する制限は「量子化誤差」(https://en.wikipedia.org/wiki/Quantization_(signal_processing)もご覧ください)と呼ばれる場合があります。 連続値を測定する場合、メジャーメントが取得される速度によってブロックまたはモデルの出力に大きな違いが生じてはなりません。 メジャーメントを増やすと、より正確な出力が得られる可能性がありますが、計算に大きな変更を加える必要はありません。

たとえば、車軸の回転速度を測定するセンサーは、10 分の 1 (0.1) 秒ごとに新しいメジャーメントを提供でき、0 ~ 10000 rpm から最も近い 50 rpm までの範囲でのみ測定できる場合があります。 10 rpm や 20 rpm の変化では、精度レベルの変化ではないため、メジャーメントが変化しない場合があります。 回転している車軸にブレーキをかけて停止させると、すぐには検出されない可能性がありますが、一度 1000 rpm の読み取り値が得られ、その後、車軸が停止した後 0.1 秒後に 0 rpm での読み取り値が得られます (一方、車軸には数十秒かかります) 停止までにミリ秒かかり、その期間が経過すると速度が低下します)。

センサーは、通常の周波数で新しいメジャーメントを提供するように接続できます (たとえば、8,000 Hz での音声サンプリングや、1 秒あたり 50 フレームでビデオを撮影するカメラなど)。 これは通常のサンプリング入力です。

シンプルで一般的な最適化は、値が前の値と異なる場合にのみ、センサーまたはデバイスが新しいメジャーメントを生成するというものです。 多くのセンサーでは、定常値または一定値を (少なくとも量子化限界内で) 維持する何かを測定するのが通常であり、同じ値を繰り返し送信することにほとんど価値はありません。 これはオンチェンジ入力です。 基礎となるサンプリング周波数は依然として存在しますが、新しい値は異なる場合にのみセンサーから送信されます。

定期的なサンプリングと変更時フォームを組み合わせることも可能です。つまり、メジャーメントが異なる場合、または定期的に新しい入力を生成するセンサーです。 これはハイブリッド入力です。 たとえば、上記の回転センサーは、回転速度が変化した場合にのみ値を送信することも、回転速度に関係なく 10 秒ごとに値を送信することもできます。

例として、時間の経過とともに変化する生の値を次のように考えてみましょう。

生の値のグラフ

しかし、センサーが最も近い整数までしか測定できず、1 秒に 1 回しか測定できないとします。 そのため、値には多少の誤差があり、赤いエラーバーで示されています。

生の値とサンプル値のグラフ

通常のサンプリング センサーは均一な入力を生成します。

定期的にサンプリングされた生データと解釈されたデータのグラフ

一方、変化時センサーは値が変化した場合にのみ入力を生成します。

変更時にのみ送信された生のデータと解釈されたデータのグラフ

灰色の線は、Apama などのリアルタイム処理システムがそのような値をどのように解釈するかを示しています。 値は、新しい値に置き換えられるまで、最新の値を維持すると想定されます。 メジャーメントの間に線を引くことも一般的です。 そのため、00:01 の値 11 から 00:19 の値 9 まで減少する直線があります。 ただし、リアルタイム システムではこれができません。 次の値が何であるかはわからないため、履歴データを表示すると値の間が補間される可能性があります。 時刻 00:19.5 の時点で、値が 11 で、その後 9 になったという情報しかありません。値が時刻 00:20 で 8 になることはまだわかりません。 定期的にサンプリングされた場合と変更時のみの場合では、解釈された灰色の線に違いがないことに注意してください。 グラフの中央には、重大な量子化誤差 (true値 10.6 は 11 として読み取られます) があり、サンプリング周波数が 1 秒に 1 回だけであるということは、00:19.5 秒の最小点 7.4 が失われることを意味します。

異なる時点で値を入力する

2 つのロボット アームの位置を与える 2 つの位置センサーを考えてみましょう。両方ともオンチェンジ センサーです。 2 本のアームが同じ方向と速度で一斉に動く場合、位置センサーは、それらが一定の距離だけ離れるように (または、少なくとも一定の距離に近づくように)、同時に新しい値に更新される必要があります。 相違 ブロックの入力が両方のセンサーに接続されている場合、ロボット アームが動いても、相違 ブロックの出力はほぼ一定になります。Analytics Builder はすべての値を同じタイムスタンプで評価するため、2 つのセンサーから値を受信する際に多少の遅延が発生する場合でも、同じクロックからタイムスタンプが供給されている場合 (および 測定入力 ブロックの タイムスタンプを無視 パラメーターが設定されていない場合)、以下の表に示すように、相違 ブロックは常に同期された出力を生成します。

時間 位置センサー 1 位置センサー 2 相違 ブロックの出力
00:00 4 14 10
00:01 6 16 10
00:02 9 19 10

対照的に、2 つのロボット アームが同時に動かず、一方が動き、次にもう一方が動く場合を考えてみましょう。 どちらかのアームが動くと、アーム間の距離が変化する場合があります。 センサーはオンチェンジ入力であるため、位置が変化した場合にのみ新しい値が得られます。 ただし、入力がないことは、対応するロボット アームに位置がないことを意味するわけではありません。 (誤差範囲内) の位置に留まっています。

時間 位置センサー 1 位置センサー 2 相違 ブロックの出力
00:00 9 19 10
00:01 11 19 8
00:02 13 19 6
00:05 13 18 5
00:06 13 17 4
00:07 13 15 2

太字の数字は実効値を示します。 最後の値は、より最新の値に置き換えられていない場合にラッチされます。

オンチェンジ入力と時間枠

変化時入力が 平均値 (平均) ブロックなどの集計ブロックに接続されている場合、ブロックは入力を受信した最新の値を継続的に保持しているものとして扱う必要があります。 これは、時間ウィンドウを維持するブロックにとって重要です。 ブロックが最後に入力を受け取った (つまり、$process アクションが呼び出された) のがタイム ウィンドウより前であっても、ウィンドウの内容には最新の値が含まれます。 たとえば、ウィンドウ期間が 10 秒に設定された 平均値 (平均) ブロックと インテグラル ブロックを考え、次のように入力します。

時間 入力値 ウィンドウの内容 平均値 (平均) ブロックの出力 インテグラル ブロックの出力
00:00 10 0: 10 10 0
00:02 11 0-2: 10 10 20
00:10 11 0-2: 10、2-10: 11 10.8 108
00:12 11 2-12: 11 11 110
00:19 9 9-19:11 11 110
00:20 8 10-19:11; 19-20: 9 10.8 108

この場合、00:02 に受信したメジャーメントが 00:19 以降の出力にどのように影響しているかに注目してください。これは、00:19 まで置き換えられないためです。 また、新しい値が発生しても、平均や積分にはまったく影響を及ぼさないことにも注意してください。まだその値になっていないのです。 唯一の例外は、開始時の 平均値 (平均) ブロックです。空のウィンドウでは、出力が入力値になります。

時間 00:20 でウィンドウがカバーする値については、次の図もご覧ください。

サンプルと実際の値と比較するウィンドウ

値 9 と 8 の測定更新のみがウィンドウ内で受信されましたが、ウィンドウ内の平均値は値 11 に近くなります。 その測定更新は時刻 00:02 に受信されましたが、これは連続値であるため、時刻 00:19 まで 11 の値を保持し続けます。

不足データ などのブロックの場合、しばらく入力がないことがブロックの動作に影響を与える可能性があることに注意してください。 不足データ ブロックが 10 秒の期間で構成されている場合、時刻 00:12 にトリガーされます。

平均値 (平均) ブロックと インテグラル ブロックが通常のサンプリング センサーから通常の入力を受け取る場合、ブロックはより多くのメジャーメントを受け取ります。比較可能なテーブルは次の通りです。

時間 入力値 ウィンドウの内容 平均値 (平均) ブロックの出力 インテグラル ブロックの出力
00:00 10 0: 10 10 0
00:01 10 0-1: 10 10 10
00:02 11 0-2: 10 10 20
00:03 11 0-2: 10, 2-3: 11 10.333 31
00:04 11 0-2: 10, 2-4: 11 10.5 42
00:05 11 0-2: 10, 2-5: 11 10.6 53
00:06 11 0-2: 10, 2-6: 11 10.667 64
00:07 11 0-2: 10, 2-7: 11 10.714 75
00:08 11 0-2: 10, 2-8: 11 10.75 86
00:09 11 0-2: 10, 2-9: 11 10.778 97
00:10 11 0-2: 10, 2-10: 11 10.8 108
00.11 11 1-2: 10, 2-11: 11 10.9 109
00:12 11 2-12: 11 11 110
00:13 11 3-13: 11 11 110
00:14 11 4-14: 1 11 110
00:15 11 5-15: 11 11 110
00:16 11 6-16: 11 11 110
00:17 11 7-17: 11 11 110
00:18 11 8-18: 11 11 110
00:19 9 9-19: 11 11 110
00:20 8 10-19: 11; 19-20: 9 10.8 108

強調表示された線は、繰り返し測定を行わなかった場合と同じであることに注意してください。 これらのブロックが同じ値を繰り返し測定しても、再評価された場合にブロックが計算する内容に違いはありません。

Window ブロックの出力タイミング

平均値 (平均) ブロックなどの集計ブロックの場合、入力値の変更の影響は、定期的に再評価されるとブロックの出力が変化し、新しい値に近づくことを意味します。 過去にブロックが異なる入力値を受け取った場合、いつでもブロックの再評価が可能であり、それぞれが異なる出力を生成する可能性があります。

オンチェンジ入力と時間枠 の前述の例では、10 秒のウィンドウで平均値 (平均) ブロックを繰り返し再評価すると、次の結果が得られます。

時間 入力値 平均値 (平均) ブロックの出力
00:00 10 10
00:01 10 10
00:02 11 10
00:03 11 10.333
00:04 11 10.5
00:05 11 10.6
00:06 11 10.667
00:07 11 10.714
00:08 11 10.75
00:09 11 10.778
00:10 11 10.8
00.11 11 10.9
00:12 11 11

再計算の間隔は、0.5 秒ごと、または 1 秒の端数ごとに、ミリ秒ごと、またはさらに短い時間でブロックを再評価することも可能です。 ブロックを「継続的に」再評価する(特定の時点での平均値を再計算し、新しい出力を生成する)ことは非現実的です。 では、ブロックが評価して出力を生成するのに適切な時期はいつでしょうか?

平均値 (平均) ブロック (およびその他) は、出力しきい値 パラメーターを提供します。 これが設定されている場合、ブロックは、出力が出力しきい値量だけ変化した場合に新しいメジャーメントを生成するセンサーをエミュレートします。 そのため、0.1 に設定すると、00:02 から 00:03 の間に (出力が 10 から 10.333 に変化するとき) いくつかの出力が得られ、00:03 から 00:04 の間に (10.4 に達するとき) に別の出力が得られます。 )、00:04 と 00:05 に正確に出力され、もう 1 つは 00:06 と 00:07 (10.7) の間に出力され、次に 00:10、00:11、00:12 に出力されます。 ブロックは、最新の出力と比較して出力が出力しきい値を超えて変化する時刻を計算し、その時点で再評価します。 そのため、出力は時間的に非常に不規則に発生する可能性がありますが、出力値が常に出力しきい値に等しい量だけ異なるようなタイミングで出力されます。 ブロックは、最後の入力と異なる値がない場合でも、新しい入力を再評価します。

モデルは任意の時点で 平均値 (平均) ブロックの出力を使用して計算を実行する必要があるため (たとえば、別のメジャーメントと比較するため)、サンプル 入力端子 再評価を強制して出力値を生成するためのオプションも提供されています。

ウィンドウとバケット

多くのブロック (主に 集約 カテゴリのブロック) は、過去に受信した入力値の時間ベースのウィンドウを維持します。 出力は、このウィンドウ内の値に基づいた計算です。 通常、このようなブロックでは、このウィンドウを管理する 2 つの異なる方法が提供されます。

これらを組み合わせて使用することも、どちらも使用しないことも可能ですが、より一般的にはどちらか一方を使用します。

ウィンドウ期間が指定されている場合、ブロックは古いデータを期限切れにすることができなければなりません。 これを厳密に正確に実装するには、異なる測定入力をその発生時刻とともに保存することになります。 長いウィンドウや高周波入力の場合、大量のデータが保存される可能性があります。 過剰な量のデータが保存されるのを避けるため、製品ブロックにはすべてのメジャーメントと時間が保存されません。 代わりに、ウィンドウ期間は同じサイズのバケットに分割されます。 ブロックはバケットごとに状態を保存し、その情報を使用してブロックの出力を再計算します。 履歴バケットは、完全にウィンドウ内にある場合もあれば、部分的に期限切れになっている場合もあります。 バケットの有効期限が部分的に切れている場合、ブロックはそのバケット内の値の小数部分を適用します。 この実際的な効果は、値が大きな変動なく変化している場合、ブロックの正確な (ただしリソース集約的) 実装とバケットを使用する実装との間にはわずかな違いしかないことです。 出力のシフトを引き起こす入力値の大幅な変動がある場合、個々の測定入力の正確な時間が失われ、有効期限が切れるときに重要な値が持つ影響は最大 1 つのバケットまで時間的に分散されます。 間隔。 製品ブロックでは、精度と効率の間の合理的な妥協点として 20 個のバケットを使用します。

これを説明するために、3 つのバケットと 3 秒のウィンドウを持つ 平均値 (平均) ブロックをシミュレートすることで効果を誇張します。つまり、各バケットの継続時間は 1 秒です。 いくつかの異常な読み取り値 (値 1 の連続入力後) は、正確なブロックとバケットベースの 平均 (平均) ブロックの両方の平均に同じように影響しますが、「正確な値」の結果を比較できます。 」バケットを使用して各値が発生してからちょうど 3 秒後に期限切れになり、出力の変化はバケットの期間にわたって平滑化されます。

3 x 1 秒バケットを含む平均値 (平均) ブロック

異常値の満了のタイミングの精度が低くなるだけでなく、出力の正確な形状が失われることに注意してください。 バケット化された平均は、時刻 00:13 と 00:14 の間で均一に変化します。 製品ブロックでは 20 個のバケットが使用されるため、この場合の効果はそれほど顕著ではないことに注意してください。

パルス信号

パルスは、ある時点または状態の変化を知らせるために使用されます。 パルスのユースケースは次の通りです。

Things Cloud では、イベント、アラーム、操作がパルスのソースとして使用されます。 Things Cloud ドキュメントの次のトピックもご覧ください: コンセプトガイドイベント および オペレーションリファレンス ガイドデバイス管理ライブラリ > アラーム

パルスは単なる時間の一点であるかもしれませんが、ソフトウェアのバージョン番号や接続しているネットワークノードなどの追加情報も伝えることができます。 これらは プロパティの抽出 ブロックを使用して取得できます。 独自のカスタム ブロックを作成している場合、入力がプロパティ フィールドを持つValueタイプとして宣言されていれば、これらのブロックにアクセスできます。 これは数値型でも使用できます。Valueタイプの詳細については、Analytics Builder Block SDK のドキュメントをご覧ください。

メジャーメントとは対照的に、パルスのタイミングと数は非常に重要であり、後続のパルス間の唯一の違いが受信時間である場合でも、それぞれのパルスは依然として重要です (一方、同じ値を持つ複数のメジャーメントはほとんど意味がありません)。

メジャーメントとは対照的に、パルスはモデルの 1 回の評価に対してのみアクティブになります。モデルの評価では、(入力ブロックを含む) を起動するタイマーを持つすべてのブロックと、変更された出力に接続されているすべてのブロックが処理されます。 パルスとブールメジャーメントはどちらもブロックの EPL では「boolean」タイプで表されますが、その動作は異なります。

AND ブロックなどを使用して複数のパルスを組み合わせるのは依然として有効かつ賢明です。 2 つのパルスが同じ時点で発生した場合、それは 1 つの評価になります。 たとえば、しきい値 ブロックには 超過したしきい値 出力ポートがあり、これは連続値入力がしきい値の一方の側からもう一方の側に移るときにのみ送信されるパルスです。 同じデバイス上の 2 つのセンサー (そのため、同じタイムスタンプを持つ) が同時にしきい値を超える可能性があるため、そのような 2 つのしきい値の出力の AND は、両方の入力が新しい値でしきい値を超えた場合にのみトリガーされます。 同じタイムスタンプ。 1 つのセンサーがしきい値を超えた後、もう 1 つのセンサーがしきい値を超えた場合、以下のブロックは AND ブロックから出力を提供しないことに注意してください。 彼らは、この 2 つが同時に起こった場合にのみこれを実行します。

AND ブロックを使用したモデルの例

離散時間測定

数値メジャーメントが連続時間特性を表さないメジャーメントが使用される場合があります。 例えば:

連続時間値とは対照的に、2 つのメジャーメントが同じ値であっても、これらはそれぞれ重要です。 各測定の時間には何らかの意味があるかもしれませんが、その後の測定間の時間はそれほど重要ではありません。 メジャーメントがわずかに異なるタイミングで受信された場合、または順序が間違っている可能性がある場合でも、これは違いを意味しません (たとえば、チケットの価値の合計は、チケットが異なる順序または異なるタイミングで処理された場合でも変わりません) 、値の間の時間は均一である可能性は低いです)。 離散時間とは測定時間のみを指すことに注意してください。 値はまだ連続している可能性があります。 たとえば、重量は連続値ですが、個々の小包の重さを量る場合がありますが、小包の重量は重量のグラムの分数で表現できる場合があります。 ベルトコンベア上の 2 つの荷物の間にいる場合、その時点での荷物の重量の「現在の」値はありません。 値は離散値にすることもできます。 たとえば、チケットの値は通常、離散値 (たとえば、最も近いセント単位、またはいくつかの事前定義されたチケット値の 1 つ) になります。

以下も比較してください:
https://en.wikipedia.org/wiki/Discrete_time_and_continuous_timehttps://en.wikipedia .org/wiki/Continuous_or_discrete_variable
実際には、すべてのメジャーメントは連続時間特性のサンプルです。

離散時間入力を扱う場合は、平均値 (平均) ブロックではなく 個別統計 ブロックを使用する必要があります。 荷物重量センサーからの入力を 平均値 (平均) ブロックに接続することは可能ですが、平均値 ブロックは時間別に重み付けを行います。 例えば:

時間 入力値 連続時間入力の平均 離散時間入力の平均
00:10 11 11 11
00:19 9 11 10
00:20 8 10.8 9.33

これを オンチェンジ入力と時間枠 の表と比較し、時刻 00:10 以降 (つまり、00:10 から 00:20 までのウィンドウ内にあるもの) を見てください。連続時間ブロックは、入力が異なる時間に発生した場合に異なる出力を生成しますが、離散時間に基づいて値を平均するブロックは生成しないことに注意してください。

デフォルトでは、メジャーメントは連続時間値として扱われることに注意してください。 そのため、たとえば、2 つの値の差を計算することができます。

Difference ブロックを示す例

上の例は、2 つのセンサーで受信した最新の重量の差を示します。 これらが純粋に離散時間入力である場合、これはとくに有用な区別ではない可能性があります。 ただし、2 つの離散時間入力間の平均値の差 (または平均値) を比較することには意味があります。 個別統計 ブロックの 平均値 出力端子は、連続時間値を与えます。

2 つの 個別統計 ブロックと Difference ブロックを示す例

モデルとデバイス

さまざまなデバイスでのモデルの実行

モデルは互いに独立して実行されます。 つまり、モデルが別のデバイス セットのデータ (MeasurementEvent、またはOperationオブジェクトなど) を処理している場合、可能な限りハードウェア並列処理を利用して、特定のデバイスのモデルを並列実行できます。モデルを定義するときは、特定のデバイスのセットまたはデバイスのグループからのデータを使用するようにモデルを構成し、各デバイスを個別に処理できます。

各モデルは次のいずれかを行う必要があります。

上記の 2 種類の入力ブロックを混合することはできません (ただし、ブロードキャスト デバイス をご覧ください)。 ただし、特定のデバイスを処理するモデルからのデータは、デバイスのグループのモデルを含む他のモデルとの間で送受信でき、その逆も可能です。(モデル間の接続をご覧ください)。

モデルがグループからデータを消費すると、以下に示すように、モデルはモデルの複数のインスタンスが実行されているかのように動作し、各インスタンスは各デバイスからのデータを個別に処理します。 各インスタンスは異なるデバイスのデータを処理しますが、すべて同じブロックとブロック パラメーターを共有します。 ワイヤーの値はインスタンスごとに独立しています。 平均値 (平均) ブロックなどのステートフルなブロックは、他のデバイスからのデータとは独立して動作します。 特定のデバイスを使用するモデルと同様、いずれかのブロックが実行時エラーまたは例外を引き起こすと、モデル全体が失敗状態になり、すべてのデバイスのデータ処理が停止します。

モデルの複数のインスタンスが実行されているかのように動作するモデルの図

通常、入力にデバイスのグループを使用する場合、すべての入力ブロックは同じグループを使用します。 異なるグループを使用することも可能です。 あるグループにはデバイスがあり、別のグループにはデバイスが存在しない場合、それらのブロックは、そのグループにないデバイスに対して信号を生成することはありません。 ブロックなどの一部のブロックでは、これは役に立ちません。 ブロックは、必要な入力がすべて値を受け取った場合にのみ出力を生成しますが、ゲート ブロックのpulse 入力には役立つ場合があります。

モデルに特定のデバイスからのデータを消費する入力がある場合、出力を生成する出力ブロックは同じまたは異なる特定のデバイスを指定できます。

デバイスのグループからのデータを消費する入力がモデルにある場合、すべての同期出力ブロックでトリガー デバイスまたはアセットを指定する必要があります。 トリガー デバイスは、そのインスタンスが適用されるデバイス、またはそのインスタンスをトリガーするためにデータを送信したデバイスのデータ (MeasurementEvent、または Operation) を生成します。 このようなモデルの非同期出力ブロックでは、トリガー デバイス、アセット、またはその他の特定のデバイスを指定できます。

モデルに、アセットに属する各デバイスからのデータを消費する入力がある場合、出力ブロックは出力を特定のアセットまたはトリガー デバイスに送信できます。 アセット出力は、クロスデバイス集計の送信にのみ使用できることに注意してください。

テンプレートパラメーターが出力ブロックに使用される場合、パラメーターの値がデバイスのグループである場合、これはトリガー デバイスに設定されている場合と同じように扱われます。 出力はモデルの評価をトリガーしたデバイスに送られ、グループ内の各デバイスは独立して処理されます。 通常、入力と出力の両方に同じテンプレートパラメーターが使用されるため、これらは同じグループを参照し、各デバイスは個別に処理されます。

モデルエディタを使用して、入力および出力ブロックを 1 つのデバイス、グループ、またはアセットから別のデバイス、グループ、またはアセットに変更できます。 デバイスのグループとデバイスまたはアセットの間で変更する場合、出力ブロックはトリガー デバイスと指定されたデバイスまたはアセットの間で切り替わり、モデルが使用可能な状態に保たれます。 デバイス、グループ、アセットの置換 もご覧ください。

テストモードとシミュレーションモードは、特定のデバイスを使用するモデルにのみ許可されます。 デバイスのグループを使用してモデルをテストまたはシミュレーションする場合は、モデルエディタを使用してグループ内の単一のデバイスに適用するようにモデルを変更し、テストモードまたはシミュレーションモードでモデルをアクティブにします。 これらのモードの詳細については、モデルのデプロイ をご覧ください。

同時実行レベルの構成

デフォルトでは、Analytics Builder ランタイムは 1 CPU コアを使用してモデルを実行します。 CPU コアの数を変更したい場合は、numWorkerThreadsキーの値を変更するPOSTリクエストを Things Cloud に送信します。 詳細については、構成 をご覧ください。

通常、この構成値はシステムで使用可能な CPU コアの数に設定されますが、使用可能なリソースに応じて、これをより多くまたはより少なく構成すると便利な場合があります。 デバイスの数に合わせて拡張する必要はありません (つまり、デバイスあたりのイベント レートが中程度であると仮定すると、数百のデバイスに対して 4 つのワーカー スレッドを用意するのが非常に合理的です)。

同時実行レベルを 1 に設定しても、デバイスのグループを入力として使用するモデルを作成することは可能ですが、これらはグループ内のデバイスごとに独立して動作し続けるため、グループと単一デバイスの入力を混合したり、入力や出力を混在させることはできません。

備考
同時実行レベルが 1 より大きく設定されたモデルで複数の特定のデバイスを使用すると、複数のワーカーにデプロイされたモデル間で接続が発生する可能性があります。 高スループットで複数の特定のデバイスを使用するモデルのチェーンは、通常、単一の特定のデバイスをすべて使用するモデルのチェーンよりも拡張性が低くなります。

ブロードキャストデバイス

すべてのモデルに適用できる信号があると便利な場合があります。 これらは、デバイスからの信号である場合もあれば、デバイスからの信号であるかのように表示される他のシステムからの信号である場合もあります。 そのため、Analytics Builder は、ブロードキャスト デバイスと呼ばれるデバイスをサポートしており、これらのデバイスからの信号は、すべてのデバイスのすべてのモデルで利用できます。

ブロードキャスト デバイスは、特定のデバイスまたはデバイスのグループからの入力とともに、任意のモデルの入力として使用できます。 以下の図は、ブロードキャスト デバイスがデバイス グループ内のすべてのデバイスにどのように適用されるかを示しています。 ブロックなどの処理ブロックにさまざまな入力として提供することで、デバイス グループ内のデバイスからの信号とブロードキャスト デバイスからの信号を組み合わせることができます。

ブロードキャスト デバイスがデバイス グループ内のすべてのデバイスにどのように適用されるかを示します

他のデバイスとは異なり、ブロードキャスト デバイスは、ブロードキャスト デバイスからのデータのみを消費するモデルの同期出力にのみ使用できます。 非同期タイプのブロードキャスト出力は、非ブロードキャスト入力を消費するモデルによって生成できます。

また、ブロードキャスト デバイスの出力からの同期データを使用してモデルを接続することもできません (つまり、どのモデルも別のモデルの出力であるブロードキャスト デバイスからのメジャーメントを使用することはできません)。 ブロードキャスト デバイスからの非同期出力を使用して、モデルを相互に接続できます (つまり、モデルは、別のモデルの出力であるブロードキャスト デバイスからの操作を使用することができます)。

ブロードキャスト デバイスの識別

ブロードキャスト デバイスは、そのデバイスのインベントリ内のデバイス オブジェクトのプロパティの存在によって識別されます。 pas_broadcastDevice または c8y_Kpi プロパティのいずれかの存在。 そのため、デバイスがブロードキャスト デバイスとみなされるかどうかは、すべてのモデルにわたってそのデバイスにとってグローバルです。 ブロードキャスト デバイスを含むデバイスのグループを使用することは許可されていません。 c8y_Kpi オブジェクトは通常、KPI ブロックとともに使用されます。 そのため、KPI オブジェクトを使用してデバイスのグループからのメジャーメントを比較することができます。グループ内のすべてのデバイスに対して 1 つの KPI オブジェクトが使用されます。

仮想デバイス

仮想デバイスは、モデルがテストモードまたはシミュレーションモードでデプロイされるときに使用されます。 モデルのデプロイ もご覧ください。

仮想デバイスは、c8y_VirtualDeviceプロパティを持つ Things Cloud インベントリ内のオブジェクトです。 このプロパティは、仮想デバイスがコピーである実デバイスの識別子を参照します。

creationDate を使用して、モデルのアクティベーション用にどの virtualDevice が作成されたか、およびそのデバイスをソースとして持つ測定を確認します。

デフォルトでは、仮想デバイスは 30 日間保持されます。 このデフォルトを変更する場合は、テナントオプションを変更する必要があります。 つまり、POST /tenant/optionsリクエストを送信する必要があります。 詳細については、Things Cloud OpenAPI仕様のテナントオプション の情報をご覧ください。たとえば、仮想デバイスの保存期間を 1 日に設定するには、次のように指定します。

{
     "category": "analytics.builder",
     "key": "retention.virtualDevicesMaxDays",
     "value": "1"
}

構成 もご覧ください。

仮想デバイスはデバイス管理アプリケーションには表示されません。 これらのエントリを見つけるには、リファレンス ガイド で説明されている REST 操作を使用します。

モデル間の接続

出力ブロックと入力ブロックを使用して、複数のモデルを接続できます。 測定出力 (Things CloudのMeasurement オブジェクトのため ) などの出力ブロックを含むモデルは一連のイベントを生成し、これは 別のモデルの適切な入力ブロック (測定入力 など)で消費されます。 詳細については、一連のイベントを識別するためのキー をご覧ください。

同じイベント ストリームの入力と出力を使用してモデルが接続されている場合、「チェーン」という用語は、この方法で相互に接続されているすべてのモデルを指すために使用されます。 相互に接続されているモデルの個別のグループがある場合、複数のチェーンが存在する可能性があります。

備考
あるモデルからのイベントは、関係するすべてのモデルが運用モードでデプロイされている場合にのみ、別のモデルで使用できます。 モデルがテストモードまたはシミュレーションモードでデプロイされる場合、仮想デバイスが使用されるため、あるモデルからのイベントを別のモデルで使用することはできません。

1 つのモデルに特定のキーの一連のイベントを生成する同期出力ブロックがあり、2 番目のモデルにその同じ一連のイベントから消費する入力ブロックがある場合 (つまり、同じキー パラメーターを持つ)、接続が形成されます。これにより、最初のモデルから 2 番目のモデルへの接続が形成されます。 最初のモデルが出力ブロックをトリガーすると、2 番目のモデルが入力ブロックの新しい入力で評価されます。

非同期出力ブロックからの出力を使用してモデル間の接続を形成することもできます。 この場合、最初のモデルが非同期出力ブロックをトリガーすると、出力が生成され、外部システム (Things Cloud など) に送信されます。 データは後から外部システムから受信され、そのデータを使用する他のモデルの評価が行われます。

モデル内のワイヤーの処理順序 (ワイヤーの処理順序 もご覧ください) と同様に、次のことが出力ブロックの場合に適用されます。 あるモデルは、別のモデルの入力ブロックが消費する一連のイベントを生成します。

モデル内のワイヤー制限 (ワイヤー制限 もご覧ください) と同様に、出力ブロックと入力ブロックを使用してモデルを接続する方法にも制限があります。

これらの制限を満たしていないモデルをすでにアクティベートされているモデルと組み合わせて使用すると、アクティベートしようとするとエラーが発生します。 これは、モデルのサイクルの最後の要素としてカウントされます。 このようなエラーの場合、問題は単一モデルに固有の問題ではなく、モデル間の相互作用にある可能性がありますが、すでにアクティブ化されている既存のモデルは自動的に非アクティブ化されません。 たとえば、複数のモデルがすべて同じ一連の同期イベントを (同じキーを使用して) 生成する場合、最初にアクティブ化されたモデルはデプロイできますが、後続のすべてのモデルはアクティブ化しようとするとエラーを報告します。

たとえば、Model1、Model2、Model3 という 3 つのモデルがあります。 次の場合、サイクルが存在する可能性があります。

これらのモデルのうちいずれか 2 つをアクティブ化するだけでエラーが発生しないことに注意してください。 順番にアクティブ化すると、Model3 のみでエラーが発生します。 ただし、Model1 または Model2 が非アクティブ化されている場合は、Model3 がアクティブ化される可能性があります。 以下の Model3 の例のように、チェーンの一部である入力ブロックからチェーンの一部を形成する出力ブロックへのリンクがモデルの 1 つに含まれていない場合でも、エラーが発生します。Model2 からのイベントは含まれません。 モデル1へのメジャーメント 出力ブロックへのサイクルを形成しますが、両方とも同じモデル内にあるため、サイクルとしてカウントされます。 (この場合、そのモデルを 2 つのモデルに分割し、サイクルを削除することで問題を解決できます)。

Model3 の例

備考
同時実行レベルが 1 より大きく設定されたモデルで複数の特定のデバイスを使用すると、複数のワーカーにデプロイされたモデル間で接続が発生する可能性があります。 高スループットで複数の特定のデバイスを使用するモデルのチェーンは、通常、単一の特定のデバイスをすべて使用するモデルのチェーンよりも拡張性が低くなります。

表示されるデバイス、グループ、アセットの数の構成

デフォルトでは、次の場合に最大 10 個の項目が表示されます。

上記の場合に検索ボックスを使用する場合、このデフォルトは検索結果に表示されるアイテムの最大数にも適用されます。 さらに読み込む をクリックすると、さらに最大 10 個の項目が表示されます。

このデフォルト値を変更する場合 (表示するアイテムの数を増やしたり減らしたりするため)、テナント オプションを変更する必要があります。 つまり、POST /tenant/optionsリクエストを送信する必要があります。 詳細については、Things Cloud OpenAPI仕様のテナント オプション の情報をご覧ください。

たとえば、値を 20 に設定するには、次のように指定します。

{
     "category": "analytics.builder",
     "key": "c8yAnalyticsBlocks.queryInventoryPageSize",
     "value": "20"
}

構成 もご覧ください。

デバイス、グループ、アセットの検索

デフォルトでは、次の場合、デバイス、グループ、およびアセットのみが表示されます。

ただし、上記の場合に検索ボックスを使用すると、検索条件に一致する Things Cloud インベントリ内のすべてのマネージドオブジェクト (デバイス、グループ、アセットだけでなく) が表示されます。 そのため、インベントリ内のマネージドオブジェクトを入力ブロックまたは出力ブロックとして定義することで、分析モデルを構築できます。

特定のタイプの管理対象オブジェクトのみを表示するように検索を制限する場合 (たとえば、デバイスのみを表示する場合)、テナント オプションを変更する必要があります。 つまり、POST /tenant/optionsリクエストを送信する必要があります。 詳細については、Things Cloud OpenAPI仕様のテナント オプション の情報をご覧ください。

たとえば、デバイスのみを表示する場合は、次のように指定します。

{
     "category": "analytics.builder",
     "key": "c8yAnalyticsBlocks.queryInventoryNameSearchAdditionalFilter",
     "value": "has(c8y_IsDevice)"
}

値の c8y_IsDevice は、いわゆるフラグメントです。 自分で作成したフラグメントを含め、Things Cloud が認識している任意のフラグメントを指定できます。

複数の値を組み合わせることができます。 たとえば、デバイスとデバイス グループのみを表示する場合は、次のように指定します。

{
     "category": "analytics.builder",
     "key": "c8yAnalyticsBlocks.queryInventoryNameSearchAdditionalFilter",
     "value": "has(c8y_IsDevice) or has(c8y_IsDeviceGroup)"
}

このテナント オプションのデフォルト値はnot has(c8y_IsVirtualDevice)です。 このテナント オプションを変更しない限り、仮想デバイスは分析モデルでは意味をなさないため、表示されません。 このテナント オプションの値を変更する場合は、検索結果に表示するすべてのマネージドオブジェクトを必ず指定してください。

構成 もご覧ください。

モデルシミュレーション

シミュレーションモードについて

モデルをシミュレーションモードでデプロイし、履歴入力データ (Things Cloud メジャーメントなど) に対して実行できます。 これにより、新しく開発されたモデルの動作を履歴データに対してテストしたり、既存のモデルを微調整したりすることができます。 あるいは、既知のプロパティを持つ一連の履歴データに対してモデルをテストすることもできます。

モデルマネージャーを使用して、モデルをシミュレーションモードでデプロイします。 詳細については、モデルのデプロイ をご覧ください。

備考
シミュレーションモードは、特定のデバイスを使用するモデルにのみ許可されます。 デバイスのグループを使用してモデルをシミュレートする場合は、モデルエディタを使用してグループ内の単一のデバイスに適用するようにモデルを変更し、シミュレーションモードでモデルをアクティブにします。

モデルがシミュレーションモードでデプロイされる場合、仮想デバイス (仮想デバイス もご覧ください) のデータが使用されます。 そのため、シミュレートされたモデルは、他の非シミュレートされたモデルと干渉することなく、並行して実行できます。

シミュレートされたモデルは、履歴データの時点で実行されているかのように実行されます。 入力データは履歴時間の順序で処理されます。 シミュレートされたモデルでは、生成された出力のタイムスタンプに過去の時刻も使用されます。

イベント、アラーム、オペレーションはタイムスタンプを使用して作成されます。 ただし、時間の経過とともに、これらのオブジェクトが更新される可能性があります。 たとえば、アラームをクリアしたり、オペレーションのステータスを変更したりできます。 イベント、アラーム、およびオペレーションオブジェクトへの変更履歴は保持されないため、オブジェクトは、そのプロパティの最新バージョンを使用して、最初のタイムスタンプでのみ再生されます。 そのため、これらのオブジェクトへの変更は再生されず、モデルがオブジェクトへの変更に依存している場合、シミュレーションモードの用途は限られます。

備考
マネージドオブジェクト入力 ブロックを含むモデルでは、シミュレーションモードは許可されません。

シミュレーションを実行すると、履歴データが Things Cloud データベースから Apama コリレーターに再生されます。 データベースからクエリされるデータに大幅な遅延がある場合、またはシステムの負荷が高い場合、例外的な状況で入力がドロップされる可能性があります。 シミュレートされたモデルは、入力データを通常の速度で処理します。 たとえば、履歴データ エントリが 1 秒ずつ区切られている場合、それらは 1 秒間隔で処理されます。 これは、1 時間の履歴データを使用してモデルをシミュレートすると、シミュレーション時間が約 1 時間かかることを意味します。

シミュレーションパラメーター

モデルをシミュレーションモードでデプロイするには、モデルマネージャーで開始時刻と終了時刻の 2 つのパラメーターの値を指定する必要があります。 これらの値は、シミュレートされたモデルに送信される履歴データの時間範囲を決定します。

指定された時間範囲のすべての履歴データが送信されると、シミュレートされたモデルへのデータの送信が停止されます。

シミュレーション モデルの最大数の構成

デフォルトでは、一度に最大 3 つのシミュレーション モデルをデプロイできます。

このデフォルト値を変更する場合 (一度にデプロイするシミュレーション モデルの数を増やすか、または減らすため)、テナント オプションを変更する必要があります。 つまり、「POST /tenant/options」リクエストを送信する必要があります。 詳細については、Things Cloud OpenAPI仕様のテナント オプション の情報をご覧ください。

たとえば、値を 5 に設定するには、次のように指定します。

{
     "category": "analytics.builder",
     "key": "simulation.maxInstances",
     "value":"5"
}

構成 もご覧ください。

シミュレーション用の代替データ ソースの構成

デフォルトでは、プラットフォーム データベースは、分析モデルのシミュレーションの履歴データを取得するために使用されます。 たとえば、履歴データが個別に保持されている場合など、シミュレーション用に代替データ ソースを構成できます。 データ ソースは、必要なパスとクエリ パラメーターに対する HTTP GET 操作をサポートする必要があります。 GET操作への応答は、標準の JSON 形式 Things Cloud に準拠する必要があります。 データとクエリ パラメーターの形式については、Things Cloud のドキュメントをご覧ください。

シミュレーションに代替データ ソースを使用する場合は、以下にリストされているテナント オプションを定義する必要があります。 つまり、3 つの別々の POST /tenant/options リクエストを送信する必要があります。 詳細については、テナント オプション の情報をご覧ください。 Things Cloud OpenAPI仕様。

例えば:

{
     "カテゴリ": "analytics.builder",
     "key": "simulation.dataSource.url",
     "値": "http://192.168.1.1/"
}
{
     "カテゴリ": "analytics.builder",
     "key": "simulation.dataSource.username",
     "値": "私の名前"
}
{
     "カテゴリ": "analytics.builder",
     "key": "simulation.dataSource.password",
     "値": "秘密"
}

構成 もご覧ください。

以下のセクションでは、代替データ ソースでサポートする必要があるパスとクエリ パラメーターをリストします。

アラーム

パス: alarm/alarms

クエリパラメーター:

イベント

パス: event/events

クエリパラメーター:

メジャーメント

パス: measurement/measurements

クエリパラメーター:

オペレーション

パス: devicecontrol/operations

クエリパラメーター:

ドロップされた入力の監視

例外的に、シミュレートされたモデルは遅延入力イベントをドロップすることがあります。 すべてのモデルにわたってドロップされた入力イベントの数は、user-analytics-oldEventsDroppedという名前のユーザー定義ステータスとして公開されます。 ドロップされたイベントのモニタリング もご覧ください。

監視と構成

監視

モデルマネージャーで各モデルの現在のステータスを監視できます。 モデルのカードには、このモデルの現在のモード (運用モードなど)、およびモデルがアクティブであるか (デプロイされている) か非アクティブであるかが表示されます。

モデルのカード

モデルの展開に失敗した場合、または実行中にエラーが発生した場合、モデルのカードに次のメッセージが表示されます。 ランタイム エラー

データの処理中にモデルが失敗したかどうかを確認するには、モデルマネージャーですべてのモデルを再ロードし、最新の状態を表示します。 すべてのモデルをリロードする もご覧ください。

定期ステータスの監視

モデルのカードに表示されるステータスに加えて、Things Cloud オペレーションまたはイベントとして公開される定期的なステータスの生成を有効にすることができます。 status_device_name および status_period_secs テナント オプションの設定については、構成 をご覧ください。

各操作には次のパラメーターがあります。

パラメーター 説明
models_running 実行中のデプロイ済みモデルに関する情報
models_failed 失敗したデプロイされたモデルに関する情報
chain_diagnostics モデル チェーンに関する情報。 詳細については、「モデル間の接続」をご覧ください
apama_status Apama コリレーターステータスのメトリック。 ステータス名の多くは、Apama REST API のキー名に対応しています。 値は、com.apama.correlator.EngineStatus イベントの getValues() アクションによって返され、REST API を介して公開されます
モデルのステータス

現在実行中または失敗したデプロイ済みモデルごとに、次の情報が公開されます。

名前 説明
mode デプロイされたモデルのモード。 シミュレーションモードでデプロイされたモデルの場合は SIMULATION です。 それ以外の場合は、PRODUCTION です
modeProperties モデルのモード固有のプロパティ。 これには、SIMULATIONモードで実行されているモデルのシミュレーションの開始時刻と終了時刻が含まれます
numModelEvaluations モデルがデプロイされてから評価された合計回数
numBlockEvaluations モデルがデプロイされてからモデル内でブロックが評価された合計回数。 これは、モデル内の各ブロックの評価数の合計です
avgBlockEvaluations モデル評価ごとに評価されたブロックの平均数
numOutputGenerated モデルがデプロイされてからモデルによって生成された出力の合計数

各モデルに関するこの情報は、モデルのパフォーマンスや動作についての洞察を提供します。 たとえば、別のモデルよりも numBlockEvaluations の数がはるかに多いモデルは、たとえ numModelEvaluations が低くても、ほとんどのリソースを消費していることを示している可能性があります。 同様に、モデルが評価回数と比較して期待されるレートで出力を生成しているかどうかを確認するために使用できます。

Apama REST API または EPL プラグインである管理インターフェースを使用してステータスを監視できます。 詳細については、Apama 製品ドキュメントの次のトピックをご覧ください。

チェーン診断

存在するすべてのチェーンについて次の情報が公開されます。

名前 説明
creationTime このチェーンが作成された時刻
executionCount チェーンが評価された回数。 (1)
modelsInEvalOrder モデルが評価された順序でのモデル識別子のリスト
pendingTimersCount 現在の時刻より遅れている保留中のタイマーの数
maxTime チェーンの評価にかかる最大時間。 (1)
minTime チェーンの評価にかかる最小時間。 (1)
meanTime チェーンの評価にかかる平均時間。 (1)
execBucket チェーンの実行時間統計。 (1)、(2)

(1) チェーンが完全または部分的に評価されると、フィールドが更新されます。 チェーンの部分評価とは、チェーンの一部のモデルのみが評価されることを意味します。

(2) 実行時間がバケット範囲内にあった回数を格納するバケットが 21 個あります。 各バケットのサイズは、無限に伸びる最後のバケットを除いて、timelay_secs を 10 秒で割ったものになります。 たとえば、timelay_secsが 2 秒の場合、最初のバケットにはチェーンの実行に最大 0.2 秒かかった回数が保持され、2 番目のバケットにはチェーンの実行に 0.2 秒を超えてから最大でかかった回数が保持されます。 0.4秒など。 次の例もご覧ください。

バケット 実行時間範囲
1 0 - 0.2
2 0.2 - 0.4
3 0.4 - 0.6
20 3.8 - 4.0
21 4.0 - 無限

timelay_secsの詳細については、モデル タイムアウトのキー をご覧ください。

最も遅いチェーンのステータス

高スループットのモデルのチェーンが複数のワーカーにデプロイされている場合、チェーンが入力イベントの処理に遅れをとり、まだ処理されていない入力イベントのバックログが作成されることがあります。 このようなチェーンは「スローチェーン」と呼ばれます。 最も遅いチェーンが 1 秒以上遅延した場合、メッセージがコリレーターログに書き込まれます。 例えば: 「Analytics Builder のモデル チェーン「モデル 1」、「モデル 2」、「モデル 3」は 3 秒遅くなります。」 コリレーターログの場所については、「コリレーターログへのアクセス」をご覧ください。

最も遅いチェーンに関する次の情報は、apama_status パラメーター内の Things Cloud 操作またはイベントとして公開される定期ステータスでも入手できます。

名前 説明
user-analyticsbuilder.slowestChain.models 最も遅いチェーンに含まれるすべてのモデル
user-analyticsbuilder.slowestChain.laySec 入力イベントの処理においてチェーンが遅れる秒数

以下は、Things Cloud によって公開されるステータス操作データの例です。

{
    "creationTime": "2021-01-05T21:48:54.620+02:00",
    "deviceId": "6518",
    "deviceName": "apama_status",
    "id": "8579",
    "self": "https://myown.iot.com/devicecontrol/operations/8579",
    "status": "PENDING",
    "models_running": {
        "Package Tracking": {
            "mode": "SIMULATION",
            "modeProperties":{"startTime":1533160604, "endTime":1533160614},
            "numModelEvaluations": 68,
            "numBlockEvaluations": 967,
            "avgBlockEvaluations": 14.2,
            "numOutputGenerated": 50
        }
    },
    "models_failed": {
        "Build Pipeline ": {
            "mode": "PRODUCTION",
            "numModelEvaluations": 214,
            "numBlockEvaluations": 671,
            "avgBlockEvaluations": 3.13,
            "numOutputGenerated": 4
        }
    },
    "chain_diagnostics": {
        "780858_780858": {
            "creationTime": 1600252455.164188,
            "executionCount": 4,
            "modelsInEvalOrder": ["780858_780858", "780860_780860"],
            "pendingTimersCount": 1,
            "timeData": {
                "execBucket": [2,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
                "maxTime": 0.00014781951904296875,
                "meanTime": 0.0001152356465657552,
                "minTime": 6.29425048828125e-05
            }
        }
    },
    "apama_status": {
        "user-analyticsbuilder.slowestChain.models": "\"Model 1\", \"Model 2\", \"Model 3\"",
        "user-analyticsbuilder.slowestChain.delaySec": "3",
        "user-analytics-oldEventsDropped": "1",
        "numJavaApplications": "1",
        "numMonitors": "27",
        "user-httpServer.eventsTowardsHost": "1646",
        "numFastTracked": "183",
        "user-httpServer.authenticationFailures": "4",
        "numContexts": "5",
        "slowestReceiverQueueSize": "0",
        "numQueuedFastTrack": "0",
        "mostBackedUpInputContext": "<none>",
        "user-httpServer.failedRequests": "4",
        "slowestReceiver": "<none>",
        "numInputQueuedInput": "0",
        "user-httpServer.staticFileRequests": "0",
        "numReceived": "1690",
        "user-httpServer.failedRequests.marginal": "1",
        "numEmits": "1687",
        "numOutEventsUnAcked": "1",
        "user-httpServer.authenticationFailures.marginal": "1",
        "user-httpServer.status": "ONLINE",
        "numProcesses": "48",
        "numEventTypes": "228",
        "virtualMemorySize": "3177968",
        "numQueuedInput": "0",
        "numConsumers": "3",
        "numOutEventsQueued": "1",
        "uptime": "1383561",
        "numListeners": "207",
        "numOutEventsSent": "1686",
        "mostBackedUpICQueueSize": "0",
        "numSnapshots": "0",
        "mostBackedUpICLatency": "0",
        "numProcessed": "1940",
        "numSubListeners": "207"
    }
}

ドロップされたイベントの監視

モデルがイベントを受信したときに、コリレーターがイベントを配信または処理するのが遅すぎると、そのイベントがドロップされる可能性があります。 入力ブロックとイベント タイミング をご覧ください。

すべてのモデルにわたるドロップされたイベントの合計数は、ステータス操作の一部として定期的に公開されます。 ドロップされたイベントの数のカウントは、ステータス操作の apama_status パラメーターの user-analytics-oldEventsDropped という名前のユーザー定義のステータス値として利用できます。 動作の詳細については、定期ステータスの監視もご覧ください。

ドロップされたすべての入力イベントはチャネルAnalyticsDroppedEventsにも送信されるため、ドロップされたイベントの独自の監視を実装できます。 チャネルAnalyticsDroppedEventsに送信されたドロップされた入力イベントは、タイプapama.analyticsbuilder.DroppedEventのイベント内にパッケージ化されます。 これにより、元のドロップされたイベントを抽出し、デバイスごとのドロップされたイベントの数を分類するなどの分析を実行できます。 これは、DroppedEventイベントを監視し、デバイス識別子や時間ごとに集計し、監視可能な Things Cloud にメジャーメントを送信する EPL を作成することで実現できます。 アプリのデプロイ もご覧ください。

モデルのライフサイクルの監視

ライフサイクル メッセージは、モデルが作成または削除されるとき、またはモデルが失敗したときにコリレーターログに書き込まれます。 ログ メッセージは次のようになります。

Model "Build Pipeline" with PRODUCTION mode has started.
   
Model "Build Pipeline" with PRODUCTION mode has ended.
   
Model "Build Pipeline" with PRODUCTION mode has failed with an error:
IllegalArgumentException - Error while validating parameters for the
block "toggle" of type "apama.analyticskit.blocks.core.Toggle":
The "Set Delay" must be finite and positive: -1.

モデルをデプロイすると、既存のモデルまたはチェーンを結合して新しいチェーンを形成できます。 チェーンの形成は複数の既存のモデルとチェーンを組み合わせる場合があるため、完了するまでに時間がかかる場合があります。 チェーンのアクティブ化が開始および完了するたびに、アクティブ化メッセージがコリレーターログに書き込まれます。 例えば:

Analytics Builder chain of models "Model 1", "Model 2", "Model 3" is being activated.
Analytics Builder chain of models "Model 1", "Model 2", "Model 3" has been activated.

コリレーターログの場所については、「コリレーターログへのアクセス」をご覧ください。

監査ログの表示

モデルのアクティブ化と非アクティブ化は監査ログに表示されます。 監査ログには、管理アプリケーションおよび監査 API を介してアクセスできます。 ユーザー ガイド管理 > 監査ログの表示 および Audit API をご覧ください。 監査ログへのアクセスの詳細については、Things Cloud OpenAPI仕様 をご覧ください。

監査ログ エントリには、アクションを実行しているユーザーの名前とモデルの現在のモードが含まれます。 テストモードとシミュレーションモードの場合、仮想デバイスの識別子とモード プロパティが提供されます。

以下は監査ログ エントリの例です (読みやすくするために「テキスト」フィールドに改行が追加されています)。

{
    "activity": "Activated model",
    "application": "apama_ctrl",
    "severity": "information",
    "text": "TestingModel1:Activated,
             Mode:SIMULATION,
             OutputDevices:[21628],
             startTime:2019-11-06T09:35:10.000Z,
             endTime:2019-11-06T09:35:43.000Z,
             maxDelaySecsSimulation:2",
    "type": "Inventory",
    "user": "apama_test_cep_admin"
}

診断情報の表示

診断情報を表示するには、「CEP 管理」の読み取り権限が必要です。 詳細については、ユーザー ガイド管理 > 権限の管理 をご覧ください。

備考
「CEP 管理」の管理者権限には、読み取り権限は含まれません。

「CEP 管理」の読み取り権限がある場合は、モデルマネージャーの下部に診断情報をダウンロードするためのリンクが表示されます。 これらは、ログ ファイルの内容、EPL アプリケーションのコピーなどを含む zip ファイルをダウンロードします。

問題が発生した場合、または EPL アプリケーションをデバッグする場合に、この診断情報を取得すると役立つ場合があります。 サポート チケットを提出する場合は、サポートに提供することも役立ちます。

利用可能な診断の詳細については、トラブルシューティングと診断 をご覧ください。 これには、REST リクエストに使用できる追加のエンドポイントに関する情報も含まれます。

構成

REST リクエストを Things Cloud に送信することで、Analytics Builder の設定、いわゆる「テナント オプション」をカスタマイズできます。 REST リクエストで使用できるキー名は、以下のトピックにリストされています。 カテゴリ名はキー名とともに必要です。 これは常に「analytics.builder」です。

さまざまなテナント オプションを設定するためのcurlコマンドの使用でいくつかの具体的な例を見つけることができます。 ただし、好きなツールを使用できます。

テナントオプションを変更するには、「オプション管理」の管理者権限が必要です。 詳細については、ユーザー ガイド管理 > 権限の管理 をご覧ください。

注意
REST リクエストを使用してテナント オプションを変更すると、コリレーターは自動的に再起動します。 この場合、重大度が MAJOR のアラームが作成されます。 これは、Cockpit アプリケーションの アラーム ページで表示できます (詳細については、ユーザー ガイドデバイス管理 > デバイスの監視と制御 > アラームの操作 をご覧ください)。

ステータスレポートのキー

キー名 説明
status_device_name ステータス操作が公開される Things Cloud デバイスの名前。 デフォルトの名前は apama_status です
status_period_secs ステータスが公開される頻度 (秒単位)。 デフォルト値は 0 秒で、ステータス レポートが無効であることを意味します。 ステータス レポートを有効にするには、頻度を正の値に設定します
status_send_type ステータスを公開する方法。 デフォルト値は OPERATION で、ステータスが Things Cloud オペレーションとして公開されることを意味します。 これを次のいずれかの値に変更できます。
  • EVENT - ステータスを Things Cloud イベントとして公開します
  • MEASUREMENT - ステータスを Things Cloud 測定として公開します
status_send_keys ステータスを公開するときに使用されるフィールド名のカンマ区切りのリスト。 設定されていないか空の場合、すべてのフィールドのステータスが公開されます。 たとえば、次のように指定すると、ステータスには 1 つの測定におけるこれらのフィールドの値のみが含まれます
numQueuedInput、numListeners、numMonitors
status_event_type ステータスが Things Cloud イベントとして公開される場合はイベント型、ステータスが Things Cloud 測定として公開される場合は測定タイプ。 デフォルトのタイプは apama_status です
status_event_text ステータスが Things Cloud イベントとして公開される場合のイベント テキスト。 デフォルトのテキストは Apama Status です

モデルのタイムアウトのキー

キー名 説明
timedelay_secs 入力ブロックがイベントが古いと判断するまでの最大遅延 (秒単位)。 デフォルト値は 1 秒です。 入力ブロックとイベント タイミングもご覧ください
logging_throttle_secs スロットリングを秒単位で記録します。 定期的なログ メッセージ (たとえば、入力ブロックによってドロップされたイベント数の変化を報告するメッセージ) は、この定数で定義された頻度よりも頻繁には表示されません。 デフォルト値は 1 秒です。 入力ブロックとイベント タイミングもご覧ください
minimum_wait_time_secs 最小待機時間 (秒単位)。 一部のブロックは、出力の変化率に基づいて出力を自動的に生成できます。 これにより、そのような出力間の時間の下限が設定されます。 共通のブロック入力とパラメーターもご覧ください

シミュレーションモードのキー

キー名 説明
simulation.maxInstances 一度にデプロイされるシミュレーション モデルの最大数。 デフォルト値は 3 モデルです。 シミュレーション モデルの最大数の構成もご覧ください
simulation.dataSource.url
simulation.dataSource.username
simulation.dataSource.password
シミュレーション用の代替データ ソースの URL。 これには、HTTP 基本認証のためのユーザー名とパスワードも必要です。 シミュレーション用の代替データ ソースの構成もご覧ください

その他のキー

キー名 説明
numWorkerThreads ワーカースレッドの数。 デフォルト値は 1 です同時実行レベルの構成もご覧ください
retention.virtualDevicesMaxDays 仮想デバイスを保持するための保持期間 (日数)。 デフォルト値は 30 日です。 仮想デバイスもご覧ください
c8yAnalyticsBlocks.queryInventoryPageSize [デバイス、グループ、またはアセットの選択] ダイアログ ボックスに表示されるデバイス、グループ、またはアセットの数。 デフォルト値は 10 です表示されるデバイス、グループ、アセットの数の構成もご覧ください
c8yAnalyticsBlocks.queryInventoryNameSearchAdditionalFilter [デバイス、グループ、またはアセットの選択] ダイアログ ボックスの検索ボックスを使用すると表示されるマネージドオブジェクト。 デバイス、グループ、アセットの検索もご覧ください

ログに記録されたテナントのオプション

一部のテナント オプションの値がログに記録されます。 これらは次の通りです。

これらのテナント オプションに現在どの値が使用されているかを知りたい場合は、コリレーターログでそれらを検索できます。 コリレーターログへのアクセス もご覧ください。

curl コマンドを使用してさまざまなテナント オプションを設定する

POST リクエストを Things Cloud に送信することで、さまざまなテナント オプションを設定または変更できます。 このトピックでは、curl コマンドライン ツールを使用してこれを行う方法について説明します。 Curl の詳細については、https://curl.se/ をご覧ください。 Things Cloud OpenAPI仕様 の テナント オプション に関する情報もご覧ください。

curl コマンドの構文は、作業している環境によって異なります。 たとえば、Bash UNIX シェルの構文は次の通りです。

curl --user username -X POST -H 'Content-Type: application/json' -d '{"category": "analytics.builder", "key": "keyname", "value": "value"}' -k https://hostname/tenant/options

どこ:

例 (Bash シェル):

curl --user User123 -X POST -H 'Content-Type: application/json' -d '{"category": "analytics.builder", "key": "numWorkerThreads", "value": "4"} ' -k https://mytenant/tenant/options

コリレーターログへのアクセス

コリレーターログには、管理アプリケーションからアクセスできます。 これは、Apama-ctrl マイクロサービスの ログ タブで見つけることができます。 ログを表示するには、マイクロサービスにサブスクライブする必要があります。 マイクロサービスとログ ファイルの詳細については、ユーザー ガイド管理 > マイクロサービスの管理と監視 をご覧ください。