Как установить дочерние устройства на устройство через API инвентаря?

Я пытаюсь настроить дочернее устройство на устройство в Cumulocity, используя API инвентаря, к сожалению, безуспешно.

Я уже пробовал следующее:

            GId gid = new GId(deviceId);
            ManagedObjectRepresentation deviceRepresentation = inventoryApi.get(gid);
            ManagedObjectReferenceCollectionRepresentation childDevices = new ManagedObjectReferenceCollectionRepresentation();
            ManagedObjectReferenceRepresentation morr = new ManagedObjectReferenceRepresentation();
            morr.setManagedObject(mo);
            List<ManagedObjectReferenceRepresentation> references = new ArrayList<ManagedObjectReferenceRepresentation>();
            references.add(morr);
            childDevices.setReferences(references);
            deviceRepresentation.setChildDevices(childDevices);
            deviceRepresentation.setLastUpdatedDateTime(null);
            inventoryApi.update(deviceRepresentation);

Ошибки не возникает, но после этого, когда я смотрю в инвентаре, ни для устройства не установлено значение childDevices, ни для управляемого объекта не установлено значение deviceParents. Что я делаю неправильно?


person Ivajlo Iliev    schedule 05.08.2019    source источник


Ответы (1)


Дочерние устройства и активы задаются с помощью выделенной конечной точки, а не путем изменения списков дочерних элементов в управляемом объекте. См. https://cumulocity.com/guides/reference/inventory/#managed-object-reference-collection для получения подробной информации.

В вашем случае с помощью java-клиента вы можете сделать это так:

GId parentID = new GId(deviceId);
GId childId = new GId(childDeviceId);
ManagedObject managedObjectApi = inventoryApi.getManagedObjectApi(parentID);
managedObjectApi.addChildDevice(childId);
person l2p    schedule 05.08.2019
comment
Большое спасибо - этот код сработал. У меня есть дополнительный вопрос - раздел deviceParents дочернего устройства пуст. Это ожидаемое поведение? - person Ivajlo Iliev; 05.08.2019
comment
При запросе устройств вы должны включить параметр URL withParents=true. По умолчанию родители не заполняются. - person socona; 05.08.2019