私の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式でデバイスオブジェクトを操作するにはどうすればよいですか?
getTripId(findManagedObjectById(getString(e.source、 "value")))は正常に動作し、自分の管理対象オブジェクトを関数に表示できます。私はアクセスしたいフィールドを見ることができますが、アクセスすることはできません。 –