forum.bitel.ru http://forum.bitel.ru/ |
|
Использование объектов в макросах http://forum.bitel.ru/viewtopic.php?f=44&t=12112 |
Страница 1 из 1 |
Автор: | skyb [ 22 ноя 2016, 07:50 ] |
Заголовок сообщения: | Использование объектов в макросах |
Подскажите, как можно использовать параметры из объектов в макросах подстановок Код: Также в командах можно задавать переменные. Переменные обозначаются через значок $. Примеры $ip, $vlan и т.п. Список переменных
host - ip адрес устройства из поля Хост/порт ip - ip адрес сервиса или сессии (192.168.1.1) net - сеть сервиса (192.168.1.1/32) mask,bitmask - битовая маска сервиса (32) netmask - маска сервиса в виде (255.255.255.255) netmaskWild - маска wildcard сервиса (0.0.0.0) vlan - vlan сервиса iface, port - интерфейс сервиса ifaceTitle - наименование интерфейса сервиса mac - MAC-адрес сервиса (00:14:fd:11:dd:79) macBytes - MAC-адрес сервиса (0014fd11dd79) macBytesDoted - MAC-адрес сервиса (abcd.ef12.3456) servId - код сервиса servTitle - наименование сервиса contractId - код договора contractTitle - название договора translit($contractTitle) - транслитерация аргумента ipGate - значение поля Gate из IP-ресурса ipDns - значение поля DNS из IP-ресурса ipSubnetMask - значение поля Маска подсети из IP-ресурса ipParam(myParam) - значение параметра конфигурации myParam из IP-ресурса deviceAttr(1) - значение атрибута 1 устройства deviceAttr(1,2,default) - значение атрибута 2 устройства 1 ifaceTitleBeforeColon - название интерфейса из тайтла до : . Например EPON0/1:2 = EPON0/1 ifaceTitleAfterColon - название интерфейса из тайтла после : . Например EPON0/1:2 = 2 servParam - параметр сервиса из вкладки Дополнительно (параметры хранятся с индексами .1/.2 в ключах, поэтому до 7.0 нужно указывать ключ.1) $deviceIP($servDeviceId) - IP устройства, привязанного к сервису $deviceIdentifier($servDeviceId) - идентификатор устройства, привязанного к сервису $iface($servDeviceId) - порт сервиса |
Автор: | barguzin2 [ 22 ноя 2016, 14:57 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
видимо, придумать макрос самому, т.к. таковых сейчас нет и дописать код SA. Или попросить об этом разработчиков. или как обычно, helpdesk=>доработка=>профит |
Автор: | skyb [ 22 ноя 2016, 16:55 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
А примера нет случаем? |
Автор: | Amir [ 22 ноя 2016, 17:06 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
В самом AbstractTerminalServiceActivator: Код: else if( "contractTitle".equals( macros ) )
{ final DefaultContext context = DefaultContext.get(); final ContractRuntime contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), serv.getContractId() ); if( contractRuntime == null ) { return "null"; } return contractRuntime.getContractTitle(); } |
Автор: | skyb [ 23 ноя 2016, 12:13 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
А как то можно сделать так, чтобы при обновлении этот класс не перетирался? А то не вспомню что менял ) и подскажите как номер супердоговора получить? Код: else if( "contractTitleParent".equals( macros ) ) { final DefaultContext context = DefaultContext.get(); final ContractRuntime contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), serv.getContractId() ); if( contractRuntime == null ) { return "null"; } return ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), contractRuntime.getSuperContractId()).getContractTitle(); } так говорит что id договора = 0 |
Автор: | Amir [ 23 ноя 2016, 18:16 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Никак, только расширять своим классом в другом пакете. contractRuntime.getSuperContractId() |
Автор: | skyb [ 24 ноя 2016, 11:58 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Amir писал(а): Никак, только расширять своим классом в другом пакете. contractRuntime.getSuperContractId() Код: else if( "contractParentTitle".equals( macros ) ) { final DefaultContext context = DefaultContext.get(); final ContractManager cm = new ContractManager(context.getConnectionSet().getConnection()); final Contract c = cm.getContractById(serv.getContractId()); if( c == null ) { return "null"; } return cm.getContractById(c.getSuperId()).getTitle(); } если я так сделаю, ничего не поломается? )))) |
Автор: | Amir [ 24 ноя 2016, 17:15 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Ну если договор не найдент с superId - то упадет. Лучше через ContractRuntime использовать - там title кэшируется, не будет базу нагружать лишними запросами. |
Автор: | skyb [ 25 ноя 2016, 08:11 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Amir писал(а): Ну если договор не найдент с superId - то упадет. Лучше через ContractRuntime использовать - там title кэшируется, не будет базу нагружать лишними запросами. а я не особо понял как это сделать ![]() |
Автор: | Amir [ 25 ноя 2016, 13:09 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Код: else if( "contractTitleParent".equals( macros ) )
{ final DefaultContext context = DefaultContext.get(); ContractRuntime contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), serv.getContractId() ); if( contractRuntime == null ) { return "null"; } contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), contractRuntime.getSuperContractId() ); if( contractRuntime == null ) { return "null"; } return contractRuntime.getContractTitle(); } |
Автор: | skyb [ 02 дек 2016, 06:58 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Amir писал(а): Код: else if( "contractTitleParent".equals( macros ) ) { final DefaultContext context = DefaultContext.get(); ContractRuntime contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), serv.getContractId() ); if( contractRuntime == null ) { return "null"; } contractRuntime = ContractRuntimeMap.getInstance().getContractRuntime( context.getConnectionSet(), contractRuntime.getSuperContractId() ); if( contractRuntime == null ) { return "null"; } return contractRuntime.getContractTitle(); } Так null прилетает |
Автор: | Amir [ 02 дек 2016, 17:08 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
null когда у договора этого сервиса есть родительский? |
Автор: | skyb [ 02 дек 2016, 17:21 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
не, идея то какая была, на субдоговоре передать название супердоговора, везде сервисы родительские, без дочерних |
Автор: | Amir [ 02 дек 2016, 18:21 ] |
Заголовок сообщения: | Re: Использование объектов в макросах |
Добавить логирования, посмотреть кто из них null. По идее null сейчас вернет, если супер договора нет у текущего договора. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |