Можно сделать это, вот что я сделал:
Я продлил AbstractBulkOperation
класс и использовать подход с EventListener
добавить эту операцию в afterPropertiesSet
так:
ComponentAccessor.getBulkOperationManager().addBulkOperation(MyOperationClass.NAME_KEY, MyOperationClass.class);
Вы должны реализовать canPerform
, perform
(фактическая операция), getOperationName
, getCannotPerformMessageKey
, getNameKey
, getDescriptionKey
Я продлил AbstractBulkOperationDetailsAction
, но BulkEditBeanSessionHelper
не может быть autowired поэтому я представил защищенный конструктор и получил его там:
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, чтобы узнать, как они это делают.
Нет ничего плохого в том, что вы задаете вопрос, но если какая-либо поддержка джира среди нас на СО, я думаю, было бы лучше спросить их поддержку, которая, я думаю, очень хороша. – t3chb0t
Ну, я надеюсь, что я не единственный, и некоторые более опытные разработчики здесь :-) – Chris
Я прочитал вопрос об этом на answer.atlassian.com несколько дней назад – mdoar