forum.bitel.ru
http://forum.bitel.ru/

Обработчик в тарифах
http://forum.bitel.ru/viewtopic.php?f=19&t=8535
Страница 1 из 1

Автор:  skyb [ 28 сен 2013, 07:09 ]
Заголовок сообщения:  Обработчик в тарифах

А подскажите как работает обработчик в тарифах, я так понял можно повесить класс на ветку и что то делать в этот момент?

Автор:  snark [ 17 окт 2013, 06:35 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Примерчик бы не помешал бы, согласись ;)

Автор:  Cromeshnic [ 17 окт 2013, 06:43 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Код:
package ru.dsi.bgbilling.modules.inet.dyn.tariff.server;

import ru.bitel.bgbilling.kernel.tariff.tree.server.TariffTreeNode;
import ru.bitel.bgbilling.kernel.tariff.tree.server.TreeContext;
import ru.bitel.bgbilling.modules.inet.runtime.InetServRuntime;
import ru.bitel.bgbilling.modules.inet.tariff.server.InetTariffContext;
import ru.bitel.bgbilling.modules.inet.tariff.server.InetTariffRequest;
import ru.bitel.bgbilling.modules.inet.tariff.server.InetTariffWorkerContext;
import ru.bitel.common.ParameterMap;
import ru.bitel.common.Utils;

import java.util.Set;

/**
 * Узел тарифа - фильтр по типам сервиса.
 */
public class ServTypeTariffTreeNode extends TariffTreeNode<InetTariffRequest, InetTariffContext, TreeContext, InetTariffWorkerContext> {

    private Set<Integer> servTypes;

    public ServTypeTariffTreeNode(int id, ParameterMap parameterMap) {
        super(id, parameterMap);
        this.servTypes = Utils.toIntegerSet(parameterMap.get("servTypes", ""));
    }

    @Override
    protected int executeImpl(Long treeNodeId, Long parentTreeNodeId, InetTariffRequest req, InetTariffContext ctx, TreeContext treeContext, InetTariffWorkerContext workerContext) {
        //TODO
        //http://forum.bgbilling.ru/viewtopic.php?p=65223#p65223
        InetServRuntime inetServRuntime = req.inetServRuntime;
        if(inetServRuntime!=null){
            if(this.servTypes.contains(inetServRuntime.getInetServ().getTypeId())){//Наш клиент, обрабатываем
                return 1;
            }
        }
        return 0;
    }
}

Автор:  skyb [ 17 окт 2013, 10:10 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Cromeshnic а от куда брать какой класс использовать? я так понимаю ты декомпилишь?

Автор:  Cromeshnic [ 17 окт 2013, 10:19 ]
Заголовок сообщения:  Re: Обработчик в тарифах

- Пишешь свой класс в дин коде, расширяющий TariffTreeNode (у меня в примере - код моего такого класса).
- Прописываешь его в узле-обработчике полностью в поле "Класс" : ru.dsi.bgbilling.modules.inet.dyn.tariff.server.ServTypeTariffTreeNode
- В конфиге узла указываешь параметры, например, в моём случае:
Код:
servTypes=1,2,3

- ...
- PROFIT!

Автор:  Amir [ 17 окт 2013, 14:49 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Да, и там неспроста каска на иконке.

Автор:  Cromeshnic [ 17 окт 2013, 15:05 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Да, зря рассказал.
Это такой тест - сам догадался, как пользоваться, значит сумеешь :)

Автор:  skyb [ 17 окт 2013, 15:05 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Amir писал(а):
Да, и там неспроста каска на иконке.

А описание более подробное как все работает будет?

Автор:  Amir [ 17 окт 2013, 15:16 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Нет - это на свой страх и риск (как, впрочем, и договаривались, когда просили данную ветку тарифа) :)
Если описывать - придется полностью описывать систему тарификации, а это все-таки внутрення кухня, которую мы не хотим обременять поддержкой и обратной совместимостью сторонних скриптов.
К тому же тарификация может вызываться очень часто. Что-то простое, как в примере выше, с использованием только тех данных, что передаются в метод еще можно, а что-то сложное там делать я бы не рекомендовал.

Автор:  skyb [ 17 окт 2013, 15:20 ]
Заголовок сообщения:  Re: Обработчик в тарифах

да мне нада то при переходе с одного(включенного трафика) на привышенный трафик отправить письмо, был бы даже раз за скилет кода, куда можно было бы вставить свой =)

Автор:  Amir [ 17 окт 2013, 15:28 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Так тариф на каждый байт может вызываться - это на каждый байт письмо будет посылаться, или надо делать записи в БД, что уже посылали письмо, что, как я писал выше, будет уже плохо.
Как вариант - можно попробовать сделать через опции Inet и ServiceActivator - появилась опция - послали письмо через ServiceActivator.

Автор:  stark [ 28 окт 2013, 20:35 ]
Заголовок сообщения:  Re: Обработчик в тарифах

skyb писал(а):
да мне нада то при переходе с одного(включенного трафика) на привышенный трафик отправить письмо, был бы даже раз за скилет кода, куда можно было бы вставить свой =)

ага, чтобы ваш отправлящик писем повесил всю тарификацию, пока отправка по таймауту не отвалится ? Я начинаю боятся за этот узел, может его удалить в следующем обновлении от греха.

Автор:  Cromeshnic [ 28 окт 2013, 21:11 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Можно не отображать его в списке при добавлении в интерфейсе, а сам гуи оставить.
Люди не будут задавать вопросов, а знающие смогут добавить ручками в базу сами.

Автор:  barguzin2 [ 28 окт 2013, 22:29 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Не-не, не надо удалять. Оставим это как недокументированную возможность :)

Автор:  skyb [ 29 окт 2013, 06:33 ]
Заголовок сообщения:  Re: Обработчик в тарифах

stark писал(а):
skyb писал(а):
да мне нада то при переходе с одного(включенного трафика) на привышенный трафик отправить письмо, был бы даже раз за скилет кода, куда можно было бы вставить свой =)

ага, чтобы ваш отправлящик писем повесил всю тарификацию, пока отправка по таймауту не отвалится ? Я начинаю боятся за этот узел, может его удалить в следующем обновлении от греха.

да не же, я спросил, как его заюзать, амир объяснил что может поломаться и смотреть в другую сторону лучше, я оставил этот моент

Автор:  LёLik [ 10 фев 2017, 17:00 ]
Заголовок сообщения:  Re: Обработчик в тарифах

Подскажите, не появилось ли какой-нибудь фичи в 6.2, чтобы реализовать логику "inet:Превышение по трафику" -> письмо клиенту/менеджеру или делать, как описывал Amir "опция/ServiceActivator"?

ЗЫ: Видимо нет.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/