2016-10-28 24 views
0

私のEsperルールの1つでは、管理対象オブジェクトの特定の(カスタム)プロパティを取得する必要があります。存在しない場合はデフォルト値を取得する必要があります。そこで私はjs式でこれを行うことにしました。私はこのように始まった:累積アクセスオブジェクトのプロパティと累積関数

しかし、テストすると、 "findManagedObjectByIdが定義されていない"と出力されます。だから、私はそれが直接managedObjectとるように私の機能を書き換えると、次のように続けること:

create expression Number js:getTripId(managedObject) [ 
    function getTripIdorOrDefault(managedObject) { 
     // treatments for nulls... 
     return managedObject.tripId; 
    } 

    getTripIdorOrDefault(managedObject); 
]; 

私が呼び出すことを:私はnull値を取得しかし

getTripId(findManagedObjectById(getString(e.source, "value"))) 

。 managedObjectを出力すると、そうでないことがわかります。私はその後、テキスト、時刻、型のような他の「デフォルト」プロパティにアクセスしようとしましたが、nullも取得しようとしました。

私はブラケット表記myObject['myProperty']を使用しようとしましたが、Cumulocityはモジュールを保存しませんでした(構文が正しくありません)。私はObject.keys(managedObject)を使って自分のオブジェクトの利用可能なプロパティをチェックしようとしましたが、JavaScriptのバージョンは1.8.5より古いと思われます。 CumulocityのgetString、getNumberなどの関数は、私が理解しているようにjavascriptでは利用できません。

したがって、javascript式でデバイスオブジェクトを操作するにはどうすればよいですか?

答えて

0

式内でfindManagedObjectByIdのような関数を使用することはできません。これは、式を実行するために基本的にesperコンテキストを残していて、その関数がもう分かりません。

式内のオブジェクトを変更したい場合は、以前にクエリを実行してから、パラメータの式に渡します。

それは表現にそれを渡すとき、それは地図(自分自身をテストするために、その必要性についてはよく分からない)

のgetString(e.source、「値」)を右見ていないとなっている可能性があります。 eとは何ですか? eがEventCreatedよりもe.event.source.valueを関数なしで使用する必要がある場合

+0

getTripId(findManagedObjectById(getString(e.source、 "value")))は正常に動作し、自分の管理対象オブジェクトを関数に表示できます。私はアクセスしたいフィールドを見ることができますが、アクセスすることはできません。 –