Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.FTN.DEVELOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 02 May 24 18:32:18, всего сообщений: 2457
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 256 из 2457 ==================================== RU.FTN.DEVELOP =
От   : Kirill Temnenkov                 2:5020/828.17      30 Jan 14 12:57:16
Кому : All                                                 30 Jan 14 12:57:16
Тема : Пополняем вики для jnode: пример простого пользовательского отчета
FGHI : area://RU.FTN.DEVELOP?msgid=2:5020/828.17+52ea13f5
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.FTN.DEVELOP?msgid=2:5020/570+52ea23c0
==============================================================================
Здpавствуй, All!

Hачал пополнять вики для jnode.

https://github.com/kreon/jnode/wiki/howto_report_ru


>───═══ Куть он "Windows Clipboard" ═══───
*Пример создания простого пользовательского отчета*

/Как просто сделать незамысловатый отчет для регулярного постинга в техническую эхоконференцию./

/*Регистрация скрипта*/

Для примера возьмем один из запросов в FAQ

    DB> Как узнать эхи, на которые никто не подписан?

    >SELECT e.name FROM echoarea e WHERE (SELECT COUNT(*) FROM subscription
    >WHERE echoarea_id=e.id)=1; // 1 - подписан только аплинк, 0 - вообще
    >нет подписки.

Сделаем так, чтобы в техническую эхоконференцию (в роботы) раз в неделю постился отчет об эхах, на которые никто не подписан.

*Шаг 0. Включить запуск скриптов в конфигурационном файле*

Убеждаемся, что в конфигурационном файле jscript.enable = true, если эта строка закомментирована - то раскомментируем ее

смысл - после перезагрузки jNode можно будет использовать пользовательские скрипты (на javascript)

*Шаг 1. Регистрация хелпера*

Выполняем sql-запрос INSERT INTO SCRIPTHELPERS ( HELPER , CLASSNAME ) VALUES ('reporthelper', 'jnode.jscript.ReportHelper');

смысл - теперь в пользовательский скриптах можно будет использовать класс jnode.jscript.ReportHelper, при помощи которого можно будет формировать несложные отчеты по sql-запросу

*Шаг 2 . Регистрация скрипта*

Выполняем sql-запрос INSERT INTO JSCRIPTS (CONTENT) VALUES ('reporthelper.report("828.robots", "Эхи, на которые никто не подписан", "SELECT e.name FROM echoarea e WHERE (SELECT COUNT(*) FROM subscription WHERE echoarea_id=e.id)=1 ORDER BY 1", "ECHOAREA", "50", "S")');

смысл - вызываем метод из хелпера, зарегистрированного на предыдущем шаге. А именно - метод public void report(String echoarea, String subject, String sql, String headers, String colLen, String formats)

Смысл параметров:

    echoarea - имя эхоконференцию, в которой будет опубликован отчет (у меня - 828.robots)
    subject - тема сообщения
    headers - заголовки колонок в отчете (у нас одна колонку, у нее будет заголовок ECHOAREA). Было бы несколько колонок - перечислили бы названия через запятую.
    colLen - размер колонки (у нас - 50). Было бы несколько колонок - перечислили бы размеры через запятую.
    formats - описание формата на "птичьем" языке. У нас это S, то есть строка (сейчас поддерживается еще D - дата).

*Шаг 3. Расписание запуска скрипта*

Делаем SELECT * FROM JSCRIPTS, узнаем ID скрипта, заведенного на шаге 2 (у меня это 20). Говорим

INSERT INTO SCHEDULE (TYPE, DETAILS, JSCRIPT_ID) VALUES ('WEEKLY', 1, 20);

смысл - регистрируем задание на регулярный запуск скрипта

    TYPE - тип запуска, у нас WEEKLY - еженедельно, а еще возможно HOURLY, DAILY, ANNUALLY, MONTHLY
    DETAILS - дополнительные параметра запуска. Для типа WEEKLY это день недели, начиная с воскресенья (нумерация с единицы), то есть выполнять отчет будем по воскресеньям
    JSCRIPT_ID - идентификатор скрипта, который будем выполнять, у нас в примере это 20.

Перезапускаем ноду (из-за действий в шаге 1) и на этом настройка завершена - раз в неделю, по воскресеньям, в эху 828.robots будет постится отчет.

/*Робот для ручного запуска скриптов*/

Hо что делать, если воскресенья ждать не хочется, а отчет нужен? Есть возможность запустить скрипт "вручную". Для этого надо выполнить следующие шаги:

*Шаг а. Подключить робота ScriptFix*

INSERT INTO ROBOTS (ROBOT, CLASSNAME) VALUES ('scriptfix', 'jnode.robot.ScriptFix')

смысл - теперь в jnode после перезапуска будет работать робот ScriptFix, робот для ручного запуска скриптов

*Шаг б. Включаем робота ScriptFix для определенных линков.*

INSERT INTO LINKOPTIONS (LINK_ID, NAME, VALUE) VALUES(<номер нужного линка, например, номер технического пойнта>, 'scriptfix', 'TRUE');

смысл - по умолчанию робот ScriptFix не принимает команд от линков, его надо включать явно для особо доверенных персонажей

*Шаг в. Пишем письмо роботу*

В голдеде от имени нужного линка пишем письмо роботу - в сабже пароль, в теле письма %RUN 20

смысл - немедленно запустить скрипт с идентификатором 20 (идентификатор скрипта из нашего примера)

Если все предыдущие шаги сделаны правильно (напоминаю, что после них требуется перезагрузка ноды - из-за шагов 0, 1, а, то вы увидите что-то вроде этого: http://temnenkov.ru/external/report.png
>───═══ Куть офф "Windows Clipboard" ═══───

 Видимо, по-хорошему, надо бы еще что-то добавить. Более подробную документацию на скрипты, еще примеры, еще какой-то функционал доработать?
 Мне проще всего работать в режиме вопрос (в эхе ru.jnode) - ответ (в виде статейки в вики и кода в jnode)

С уважением - Kirill

* Originally in ru.ftn.develop
* Crossposted in ru.jnode
* Crossposted in 828.local

--- 26CDDD30B63806A25C6FD3AB22BB423C8B45A86B
* Origin: kirill@temnenkov.com (2:5020/828.17)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.076217 секунды