@Max737

Как вывести значение пользовательского поля родительской задачи?

Решил попробовать освоить scriptrunner. Задача: вывести значение пользовательского поля родительской задачи. написал скрипт:
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.Field;
import com.atlassian.jira.issue.fields.CustomField;

return issue.getParentObject().getCustomFieldValue("customfield_10100")

Однако он выдает ошибку:

473 ERROR [customfield.GroovyCustomField]: Script field failed on issue: TASKIT-249, field: Unused
groovy.lang.MissingMethodException: No signature of method: com.atlassian.jira.issue.IssueImpl.getCustomFieldValue() is applicable for argument types: (String) values: [customfield_10100]
Possible solutions: getCustomFieldValue(com.atlassian.jira.issue.fields.CustomField), setCustomFieldValue(com.atlassian.jira.issue.fields.CustomField, java.lang.Object)
at Script191.run(Script191.groovy:5)

Подскажите, что я делаю не так?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
Вы не создали экземпляр Issue , чтобы обращаться к переменной issue.
Кроме того рекомендую делать проверки на NULL, так как ваше issue может и не иметь родительской задачи. И тоже самое касается customfield.
Рабочий пример ниже.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.Issue
import org.apache.log4j.Logger
import static org.apache.log4j.Level.DEBUG

// define logger
def _logger = Logger.getLogger("LOGGER")
_logger.setLevel(DEBUG)

// issue
String subIssueKey = "TASKIT-249" 
IssueManager issueManager = ComponentAccessor.getIssueManager()
Issue issue = issueManager.getIssueObject(subIssueKey)
_logger.debug("KEY: " + issue.getKey().toString())

if (issue.getParentObject() == null) {
    _logger.debug("Issue: " + subIssueKey + " IS NOT subTask!")
    throw new NullPointerException()
} else {
    issue = issue.getParentObject()
    _logger.debug("KEY: " + issue.getKey().toString())
}



CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
String myCustomFieldCode = "customfield_10100"

CustomField myCustomField = customFieldManager.getCustomFieldObject(myCustomFieldCode)
if (myCustomField != null) {
    String myCustomFieldValue =  issue.getCustomFieldValue(myCustomField)
    _logger.debug("Value: " + myCustomFieldValue)
} else {
    _logger.debug("Field: " + myCustomFieldCode + " NOT FOUND!")
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы