Как добавить еще одну массовую операцию?
Jira позволяет добавлять веб-фрагменты в разных местах.
Я хотел бы написать плагин, который добавляет еще одну массовую операцию, но не может ни найти местоположение (если это вообще делается через веб-фрейминг), ни подсказку в типах модулей плагинов Jira, как добавить такую операцию. Из существующих плагинов (например, экспортеров) у меня сложилось впечатление, что должен быть способ.
Любая помощь приветствуется. Благодарю.
1 ответ
Это можно сделать, вот что я сделал:
Я продлил AbstractBulkOperation
класс и используемый подход с EventListener
добавить эту операцию в afterPropertiesSet
как это:
ComponentAccessor.getBulkOperationManager().addBulkOperation(MyOperationClass.NAME_KEY, MyOperationClass.class);
Вам необходимо реализовать canPerform
, perform
(фактическая операция), getOperationName
, getCannotPerformMessageKey
, getNameKey
, getDescriptionKey
Я продлил AbstractBulkOperationDetailsAction
, но BulkEditBeanSessionHelper
не может быть автоматически подключен, поэтому я представил защищенный конструктор и получил его там:
protected MyActionClass()
{
super(null, ComponentManager.getComponentInstanceOfType(BulkEditBeanSessionHelper.class));
genericBulkWatchOperation = ComponentAccessor.getBulkOperationManager().getOperation(NAME_KEY);
}
Вам необходимо реализовать getOperationDetailsActionName
, doDetails
,doDetailsValidation
, doPerform
методы в этом классе.
я создал Webwork
элемент в atlassian-plugin.xml
, что-то вроде этого:
<webwork1 key="key" name="name" class="java.lang.Object">
<actions>
<action name="path to action class" alias="Action">
<command name="details" alias="ActionDetails">
<view name="success">/secure/views/bulkedit/bulkchooseoperation.jsp</view>
<view name="input">/secure/views/bulkedit/bulkActiondetails.jsp</view>
<view name="error">/secure/views/bulkedit/bulkchooseoperation.jsp</view>
</command>
<command name="detailsValidation" alias="ActionDetailsValidation">
<view name="input">/secure/views/bulkedit/bulkActionconfirmation.jsp</view>
<view name="error">/secure/views/bulkedit/bulkActionconfirmation.jsp</view>
</command>
<command name="perform" alias="ActionPerform">
<view name="error">/secure/views/bulkedit/bulkActionerror.jsp</view>
</command>
</action>
</actions>
</webwork1>
JSP-файлы не могут быть встроены в плагин, я развернул их в /secure/views/bulkedit
Чтобы обернуть это - вам нужно 3 класса (Operation
, Action
а также EventListener
), webwork
определение в atlassian-plugin.xml и Event Listener
определение также в atlassian-plugin.xml. Тогда вам нужны файлы JSP. Вы можете взять существующие и использовать их в качестве примера. В основном я взял WatchIssue
операции с файлами и делали это аналогично.
Я настоятельно рекомендую взглянуть на код JIRA, чтобы увидеть, как они это делают.