В одном из моих правил Esper мне нужно получить конкретное (настраиваемое) свойство управляемого объекта или значение по умолчанию, если оно не существует. Поэтому я решил сделать это в выражении js. Я начал так:Свойства объекта доступа Cumulocity и функции Cumulocity
create expression Number js:getTripId(deviceId) [
function getTripIdorOrDefault(managedObject) {
// ...
}
getTripIdorOrDefault(findManagedObjectById(deviceId));
];
При тестировании, однако, вывод говорит мне, что «findManagedObjectById не определен». Так и быть, я переписать мою функцию так, что она принимает managedObject прямо и продолжать, как это:
create expression Number js:getTripId(managedObject) [
function getTripIdorOrDefault(managedObject) {
// treatments for nulls...
return managedObject.tripId;
}
getTripIdorOrDefault(managedObject);
];
То, что я называю с:
getTripId(findManagedObjectById(getString(e.source, "value")))
Однако я получаю нулевое значение. Когда я вывожу управляемый объект, я вижу, что это не так. Затем я попытался получить доступ к другим свойствам по умолчанию, таким как текст, время и тип, а также получить нуль.
Поэтому я попытался использовать скобку нотации myObject['myProperty']
, но Cumulocity не позволит мне сохранить мой модуль (неправильный синтаксис). Я попытался использовать Object.keys(managedObject)
, чтобы проверить доступные свойства моего объекта, но, похоже, версия javascript старше 1.8.5. А функции Cumulocity getString, getNumber и т. Д. Недоступны в javascript, насколько я понимаю.
Итак, как я могу манипулировать объектами своего устройства в выражениях javascript?
getTripId (findManagedObjectById (getString (e.source, «value»))) работает правильно, я могу отображать мой управляемый объект в своей функции и Я вижу поля, к которым я хочу получить доступ, но я не могу получить к ним доступ. –