forum.bitel.ru http://forum.bitel.ru/ |
|
не активно устройство созданное программно (CRM) http://forum.bitel.ru/viewtopic.php?f=19&t=11275 |
Страница 1 из 1 |
Автор: | Darg [ 19 янв 2016, 13:00 ] |
Заголовок сообщения: | не активно устройство созданное программно |
Всем привет! Недавно исходя из примеров на wiki и форуме написал функцию для добавления коммутатора в дерево устройств. Устройство добавляется и в дерево и в библиотеку. Но оно как бы не активно что ли. Например название устройства (EntityTitle) сохраняется в формате "type:[ipaddr]" вместо "type:[ipaddr] address mac уст." как у всех. Надо обязательно открыть устройство и нажать "сохранить" вручную, тогда и название (EntityTitle) сохраняется как надо. Так как я программно в договоре создаю сразу же в сервис на этом устройстве, то сервис имеет состояние "удален". Приходится заходить и вручную пересохранять устройство, чтоб сервис активировался. Ниже фрагмент функции по созданию устройства, может кто подскажет, где и что я упустил? Код: device = new InetDevice(); EntityAttrAddress adrEnt = new EntityAttrAddress( device.getEntityId(), INET_DEVICE_ENTITY_SPEC_ID, hid, 0, 0, null, "", "", "0",dev_addr ); EntityAttrText mac_ent = new EntityAttrText( device.getEntityId(), 1, mac ); Map<Integer, EntityAttr> dev_attr = new HashMap<Integer, EntityAttr>(); dev_attr.put(1, mac_ent); dev_attr.put(2, adrEnt); device.setHost( host ); device.setEntityAttributes( dev_attr ); device.setInvHost( host ); device.setSecret( snmp_comm ); device.setDeviceTypeId( typeId ); device.setInvDeviceTypeId( typeId ); device.setOrderManagerDisabled(false); device.setDeviceGroupIds( groupIds ); device.setParentId( INET_ROOT_DEVICE_ID ); device.setPassword( password ); device.setUsername( username ); device.setConfig( "# список битых портов \n ports.reserved="+ports_rn+" \n# список портов для сервисных нужд \n ports.service="+ports_sn+" \n# список транковыx портов \n ports.trunk="+ports_tn ); device.setInvConfig( "# список битых портов \n ports.reserved="+ports_rn+" \n# список портов для сервисных нужд \n ports.service="+ports_sn+" \n# список транковыx портов \n ports.trunk="+ports_tn ); device.setIdentifier( "" ); device.setInvIdentifier( "" ); device.setDateFrom( oct2015 ); device.setComment( " "+comment ); device.setInvDeviceGroupIds( groupIds ); InetDeviceType type = wsDevice.deviceTypeGet( typeId ); device.setTitle(Device.generateTitle( device, type)); device.setInvTitle(Device.generateTitle( device, type)); /* InvDevice invdevice = device.toInvDevice(); invdevice.setHost( host ); invdevice.setEntityAttributes( dev_attr ); invdevice.setSecret( snmp_comm ); invdevice.setDeviceTypeId( typeId ); invdevice.setOrderManagerDisabled(false); invdevice.setDeviceGroupIds( groupIds ); invdevice.setParentId( 59 ); invdevice.setPassword( password ); invdevice.setUsername( username ); invdevice.setConfig( "# список битых портов \n ports.reserved="+ports_rn+" \n# список портов для сервисных нужд \n ports.service="+ports_sn+" \n# список транковыx портов \n ports.trunk="+ports_tn ); invdevice.setIdentifier( "" ); invdevice.setDateFrom( oct2015 ); invdevice.setComment( " "+comment ); invdevice.setTitle(Device.generateTitle( device, type)); //(type+": ["+host+"] "+dev_addr+" "+mac); invdevice.setEntityTitle(type+": ["+host+"] "+dev_addr+" "+mac+" уст."); wsDevice.deviceUpdate( invdevice ); */ wsDevice.inetDeviceUpdate( device, true ); EventProcessor.getInstance().publish( new InetReloadEvent( INET_MODULE_ID, 0 )); версия 6.1 |
Автор: | stark [ 20 янв 2016, 18:52 ] |
Заголовок сообщения: | Re: не активно устройство созданное программно |
как этот код запускается ? |
Автор: | Darg [ 20 янв 2016, 20:56 ] |
Заголовок сообщения: | Re: не активно устройство созданное программно |
это вырезка из кода модуля написанного в "управление динамическим кодом" |
Автор: | Darg [ 22 янв 2016, 16:26 ] |
Заголовок сообщения: | Re: не активно устройство созданное программно |
ну что народ, нет никаких подсказок? Вроде много кто писал аналогичное, для добавления устройств в модуле Inet. Наверняка какой то атрибут забыл установить или кроме inetDeviceUpdate (или deviceUpdate) нужно вызвать еще какой то метод, чтоб сохранение устройства прошло как положено?! |
Автор: | Amir [ 17 мар 2016, 20:51 ] |
Заголовок сообщения: | Re: не активно устройство созданное программно (CRM) |
Основная проблема, что до вызова EventProcessor.getInstance().publish( new InetReloadEvent( INET_MODULE_ID, 0 )); нужно вызвать context.commit(), т.к. до коммита изменения в БД другим соединениям не видны, а InetAccess по событию InetReloadEvent начинает перечитывать устройства и еще не видит новое. Проблема с именем пока не понятна - если просто добавляете новое устройство через клиент - такая же проблема или имя сохраняется нормально? |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |