Как писать и отлаживать скрипты и триггеры под Eclipse
Дополнительную функциональность в TrackStudio можно реализовать с помощью скриптов и триггеров. Скрипты обычно соответствуют вычисляемым дополнительным полям различных типов. Триггеры соответствуют событиям, происходящим с задачами, а именно: созданию задач, их редактированию и выполнению операций над ними. Скрипты вычисляются всякий раз при просмотре задачи, когда нужно отобразить значение поля, триггеры - при выполнении ассоциированных действий.
Скрипты и триггеры могут быть двух видов: интерпретируемые и скомпилированные. Интерпретируемые скрипты - это java-код, обрабатываемый интерпретатором Beanshell. Писать такие скрипты несколько проще, чем скомпилированные, т.к. не требуется согласования типов данных и наличия JDK для компиляции.
Скомпилированные же скрипты имеют ряд серьезных преимуществ:
- во-первых, они выполняются быстрее из-за того, что не нужно загружать и инициализировать интерпретатор
- во-вторых, если скрипт скомпилировался — в нем хотя бы нет синтаксических ошибок
- в-третьих, в скомпилированных скриптах вы можете использовать всю мощь языка Java. Например, наследование и статические переменные
Удобнее всего писать скрипты в IDE (интегрированной среде разработки).
Eclipse — кроссплатформенная свободная интегрированная среда разработки приложений. Развивается и поддерживается Eclipse Foundation. Установить Eclipse можно и на Windows, и на Linux, и на OS X. Скачать Eclipse можно с сайта проекта. Пользователи Ubuntu могут установить Eclipse прямо из Центра приложений.
- Установите и запустите Eclipse IDE.
- Создайте где-нибудь workspace.
- Откройте меню File → New → Java Project
- Создайте новый проект
- Нажмите кнопку Next
- На следующем экране перейдите на закладку Libraries
- Нажмите кнопку Add External JARs
- Выберите библиотеку trackstudio.jar (webapps/TrackStudio/WEB-INF-lib/trackstudio.jar)
- Нажмите кнопку Finish
На этом создание и настройка проекта закончена. Напишем и скомпилируем какой-нибудь скрипт, использующий TrackStudio API. Например, скрипт, выводящий список участников задачи (из примеров)
- В левой панели откройте папку вашего проекта и на подпапке src кликните правой кнопкой мыши
- В открывшемся меню выберите New → Class
- Введите Package Name: scripts.task_custom_field_value
- Введите название класса: Participants
- Выберите интерфейс: TaskUDFValueScript
- Нажмите кнопку Finish, чтобы закончить создание класса
- Вставьте метод calculate из примера или напишите свой.
Обратите внимание, что Eclipse сразу же нашел кучу ошибок в коде. Если навести курсор на подчеркнутые красной линией слова, в выпадающем меню Eclipse предложит варианты решения. В данном случае нужно импортировать соответствующие классы. Сделайте это.
В данном случае в Eclipse включена автоматическая компиляция классов, поэтому после исправления ошибок в папке workspace/myscripts/bin должна появиться подпапка 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
- Перейдите в Eclipse в меню Run → Debug Configurations
- Выберите Remote Java Application и нажмите иконку New вверху
- Введите номер порта 5005
- Нажмите кнопки Apply и Debug
- Из меню Eclipse Run вы можете управлять точками останова. Поставьте одну точку останова где-нибудь в начале метода calculate класса Participants
- Откройте браузер
- Откройте в нем ваш экземпляр TrackStudio и войдите в систему
- Создайте для какого-нибудь процесса дополнительное поле типа "Пользователь" и подключите к нему класс Participants
Далее перейдите к задаче, использующей это вычисляемое поле. Если всё сделано правильно, выполнение скрипта должно остановиться в указанной точке. Eclipse предложит открыть окно отладки и, если вы согласитесь, покажет код скрипта с выделенной строчкой в месте останова.
Во вкладке Variables вы можете увидеть объявленные в области видимости переменные и их значения, через вкладку Debug — управлять выполнением скрипта.
Кнопка Resume (F8) продолжит выполнение кода до следующей точки останова. Кнопка Step Into (F5) выполнит текущую строчку кода с заходом внутрь метода, если в данной строчке вызывается метод какого-нибудь класса. Кнопка Step Over (F6) просто выполняет строчку, без захода в методы. Кнопка Step Return (F7) выполняет весь код до выхода из метода и передает управление "наверх".
Использование TrackStudio API
Подключите к Eclipse документацию TrackStudio Javadoc, которая расположена в папке docs вашего экземпляра TrackStudio. Для этого:
- В левой панели раскройте узел Referenced Libraries
- Выберите trackstudio.jar
- Правой кнопкой мыши раскройте контекстное меню и выберите пункт Properties (или нажмите Alt-Enter)
- Выберите пункт Javadoc Location
- Укажите папку javadoc вашего экземпляра TrackStudio (docs/javadoc)
- Нажмите кнопку Apply
В нижней панели редактора Eclipse есть вкладка Javadoc. В ней можно видеть описание классов и методов, на которые указывает курсор.
Если начать вводить название класса и нажать комбинацию клавиш Ctrl-Пробел, Eclipse предложит варианты классов для выбора, при этом также показывается описание класса из Javadoc.