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

在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