Как добавить еще одну массовую операцию?

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, чтобы увидеть, как они это делают.

Другие вопросы по тегам