mun*_*ger 4 jira event-handling custom-fields
那么如何在Jira IssueEventListener中获取自定义字段的先前值?我正在为issueUpdated(IssueEvent)事件编写自定义处理程序,如果某个自定义字段已更改,我想更改处理程序的行为.要检测更改类型,我想比较先前和当前值.
(我不是在问如何获得它的当前值 - 我知道如何从相关问题中获得它)
我正在开发针对Windows上的Jira 4.0.2.
扫描最近已知值的更改历史记录的最佳方法是什么?
List changes = changeHistoryManager.getChangeHistoriesForUser(issue, user);
Run Code Online (Sandbox Code Playgroud)
小智 8
我假设原来的海报是用Java编写JIRA插件.我无法确定如何在JIRA v4.0.2中完成此任务,但这里是我如何使用JIRA v5.0.2(解决方案可能完全相同)的方式:
public void workflowEvent( IssueEvent event )
{
Long eventTypeId = event.getEventTypeId();
if( eventTypeId.equals( EventType.ISSUE_UPDATED_ID ) )
{
List<GenericValue> changeItemList = null;
try
{
changeItemList = event.getChangeLog().getRelated( "ChildChangeItem" );
}
catch( GenericEntityException e )
{
// Error or do what you need to do here.
e.printStackTrace();
}
if( changeItemList == null )
{
// Same deal here.
return;
}
Iterator<GenericValue> changeItemListIterator = changeItemList.iterator();
while( changeItemListIterator.hasNext() )
{
GenericValue changeItem = ( GenericValue )changeItemListIterator.next();
String fieldName = changeItem.get( "field" ).toString();
if( fieldName.equals( customFieldName ) ) // Name of custom field.
{
Object oldValue = changeItem.get( "oldvalue" );
Object newValue = changeItem.get( "newvalue" );
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
changeItem的一些可能的键值是:
对于许多自定义字段类型,Object oldValue可能只是一个String.但我不认为每个案例都是如此.