Как писать и отлаживать скрипты и триггеры под IntelliJ IDEA
Дополнительную функциональность в TrackStudio можно реализовать с помощью скриптов и триггеров. Скрипты обычно соответствуют вычисляемым дополнительным полям различных типов. Триггеры соответствуют событиям, происходящим с задачами, а именно: созданию задач, их редактированию и выполнению операций над ними. Скрипты вычисляются всякий раз при просмотре задачи, когда нужно отобразить значение поля, триггеры - при выполнении ассоциированных действий.
Скрипты и триггеры могут быть двух видов: интерпретируемые и скомпилированные. Интерпретируемые скрипты - это java-код, обрабатываемый интерпретатором Beanshell. Писать такие скрипты несколько проще, чем скомпилированные, т.к. не требуется согласования типов данных и наличия JDK для компиляции.
Скомпилированные же скрипты имеют ряд серьезных преимуществ:
- во-первых, они выполняются быстрее из-за того, что не нужно загружать и инициализировать интерпретатор
- во-вторых, если скрипт скомпилировался — в нем хотя бы нет синтаксических ошибок
- в-третьих, в скомпилированных скриптах вы можете использовать всю мощь языка Java. Например, наследование и статические переменные
Удобнее всего писать скрипты в IDE (интегрированной среде разработки).
IntelliJ IDEA — кроссплатформенная коммерческая интегрированная среда разработки приложений от компании JetBrains. Установить IDEA можно и на Windows, и на Linux, и на OS X. На сайте JetBrains доступна бесплатная Community Edition с урезанной функциональностью, которой, однако, с лихвой хватит для разработки скриптов для TrackStudio.
- Установите и запустите IntelliJ IDEA.
- На странице Quick Start нажмите ссылку Create New Project
- То же действие можно выполнить через меню File → New Project
- Выберите Create project from scratch и нажмите кнопку Next
- Введите название проекта и прочие аттрибуты
- Укажите JDK для проекта
- Завершите создание проекта
- Перейдите в меню File → Project Structure
- Выберите вкладку Libraries
- Добавьте библиотеку. Задайте название для нее
- Нажмите кнопку Attach Classes
- Выберите библиотеку trackstudio.jar (webapps/TrackStudio/WEB-INF-lib/trackstudio.jar)
- Нажмите кнопку OK
На этом создание и настройка проекта закончена. Напишем и скомпилируем какой-нибудь скрипт, использующий TrackStudio API. Например, скрипт, выводящий список участников задачи (из примеров)
- В левой панели откройте папку вашего проекта и на подпапке src кликните правой кнопкой мыши
- В открывшемся меню выберите New → Class
- Введите название класса: scripts.task_custom_field_value.Participants
- В редакторе после определения класса допишите implements TaskUDFValueScript. Обратите внимание, что IDEA сразу же предлагает вам автодополнения для зарезервированных слов и подключенных через библиотеки классов.
- Вставьте метод calculate из примера или напишите свой.
IDEA выделит красным цветом классы, которые пока не импортированы в редактируемый. Подведите курсор к любому такому классу и нажмите Alt-Enter.
После устранения всех синтаксических ошибок скомпилируйте класс Participants. Это можно сделать через меню Build.
В папке IdeaProjects/myscripts/out/production/myscripts/scripts/task_custom_field_value должен появиться класс Participants.class. Этот класс, а лучше — всю папку scripts, скопируйте в папку etc/plugins вашего экземпляра TrackStudio. Папки scripts при этом должны совместиться.
Отладка скриптов
- Откройте в любом текстовом редакторе (не в Word) файл startJetty.vmoptions, который лежит в корне вашего экземпляра TrackStudio.
- Добавьте в его конец строку -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
- Запустите ваш экземпляр TrackStudio
- Перейдите в IDEA в меню Run → Debug
- Создайте конфигурацию Remote
- Введите номер порта 5005
- Нажмите кнопки Apply и Debug
- Точку останова в классе можно поставить, просто кликнув на пустое поле слева в строке кода. Поставьте одну точку останова где-нибудь в начале метода calculate класса Participants
- Откройте браузер
- Откройте в нем ваш экземпляр TrackStudio и войдите в систему
- Создайте для какого-нибудь процесса дополнительное поле типа "Пользователь" и подключите к нему класс Participants
Далее перейдите к задаче, использующей это вычисляемое поле. Если всё сделано правильно, выполнение скрипта должно остановиться в указанной точке. В IDEA подсветится строчка кода в точке остановки, а в отладочном окне внизу появится отладочная информация.
Во вкладке Variables вы можете увидеть объявленные в области видимости переменные и их значения.
Кнопка Resume Program (F9) продолжит выполнение кода до следующей точки останова. Кнопка Step Over (F8) выполнит текущую строчку кода без захода внутрь метода. Кнопка Step Into (F7) выполняет строчку с заходом в методпросто выполняет строчку, без захода в метод, если в данной строчке вызывается метод какого-нибудь класса. Кнопка Step Out (Shift-F8) выполняет весь код до выхода из метода и передает управление "наверх".
Использование TrackStudio API
Подключите к IDEA документацию TrackStudio Javadoc, которая расположена в папке docs вашего экземпляра TrackStudio. Для этого:
- Перейдите в меню File → Project Structure
- Выберите вкладку Libraries
- Выберите библиотеку trackstudio
- Нажмите кнопку Attach Documentation
- Укажите папку javadoc вашего экземпляра TrackStudio (docs/javadoc)
- Нажмите кнопку Apply
Подведите курсор к названию какого-нибудь класса или метода и нажмите Ctrl-Q. Во всплывающем окне появится подсказка с текстом из javadoc.
Автодополнение названий классов и методов работает в IntelliJ IDEA автоматически по мере набора.
Если у вас все же возникли трудности, посмотрите видео.