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/