Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

在ScriptRunner中使用Listener来临听Issue指定字段是否变更,然后执行插件中的逻辑。

前置条件: ScriptRunner中 Events指定为Issue Updated。


//引入自己的插件
@WithPlugin("com.hktx.htcx.refinedmanager")
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.atlassian.jira.component.ComponentAccessor
import com.hktx.htcx.refinedmanager.services.SettlementWorkloadService;
import com.hktx.jira.utils.PropertiesUtils
import com.hktx.htcx.refinedmanager.Constants
import com.atlassian.jira.issue.MutableIssue

//只有配置的问题类型才生效,否则直接退出
def issue = event.issue as MutableIssue
def showTypes = PropertiesUtils.getValue(Constants.DISPLAY_WEBPANEL_ISSUE_TYPE);
if (!(","+showTypes+",").contains(","+issue.getIssueTypeId()+",")) {
   return 
}

def settlementService = ComponentAccessor.getOSGiComponentInstanceOfType(SettlementWorkloadService);
def changeHistoryManager = ComponentAccessor.getChangeHistoryManager();
def changeHistories = changeHistoryManager.getChangeHistories(event.issue)
if (changeHistories) {
	//判断最新的变更记录中Dev Supplier字段有没有被修改
    def devSupplierChangeRecord = changeHistories.last().getChangeItemBeans().find {
        // 指定字段修改前后的值不一样
        it.field == 'Dev Supplier' && it.fromString != it.toString
    }
	//如果指定字段被修改调用插件中的service方法 
    if (devSupplierChangeRecord) {
        log.error("开发厂商变更 changed: "+ devSupplierChangeRecord.fromString+" to:" + devSupplierChangeRecord.toString)
        settlementService.handlerSupplierChanged(issue.id, 1);
    }

	//判断最新的变更记录中Test Supplier字段有没有被修改 
    def testSupplierChangeRecord = changeHistories.last().getChangeItemBeans().find {
        // 指定字段修改前后的值不一样
        it.field == 'Test Supplier' && it.fromString != it.toString
    }
	//如果指定字段被修改调用插件中的service方法
    if (testSupplierChangeRecord) {
        log.error("测试厂商变更 changed: "+ testSupplierChangeRecord.fromString+" to:" + testSupplierChangeRecord.toString)
        settlementService.handlerSupplierChanged(issue.id, 2);
    }
}


  • No labels