2015-01-09 3 views
0

Jira позволяет добавлять веб-фрагменты на different locations.Как добавить дополнительную операцию?

Я хотел бы написать плагин, который добавит еще одну операцию массового обслуживания, но не может найти местоположение (если это делается через веб-фрахт вообще), ни подсказки в Jira Plugin Module Types, как добавить такую ​​операцию. Из существующих плагинов (например, экспортеров) у меня сложилось впечатление, что должен быть способ.

Любая помощь приветствуется. Благодарю.

+0

Нет ничего плохого в том, что вы задаете вопрос, но если какая-либо поддержка джира среди нас на СО, я думаю, было бы лучше спросить их поддержку, которая, я думаю, очень хороша. – t3chb0t

+0

Ну, я надеюсь, что я не единственный, и некоторые более опытные разработчики здесь :-) – Chris

+0

Я прочитал вопрос об этом на answer.atlassian.com несколько дней назад – mdoar

ответ

0

Можно сделать это, вот что я сделал:

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