問題のリンクされた叙事詩を見つけて、叙事詩の状態を移行を行って更新する方法を示す下の例を見つけてください。これはScriptRunner用のGroovyスクリプトです。スクリプトコンソールでこれをすばやくテストしましたが、このようなスクリプトをワークフロー移行のポスト機能とともに使用することができました。
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.IssueInputParameters;
import com.atlassian.jira.issue.IssueInputParametersImpl;
import com.atlassian.jira.bc.issue.IssueService
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
IssueManager issueManager = ComponentAccessor.getIssueManager();
IssueService issueService = ComponentAccessor.getComponent(IssueService);
CustomField epicLinkField = customFieldManager.getCustomFieldObjectByName('Epic Link');
//hardcode lookup to issue for script console:
MutableIssue issue = issueManager.getIssueObject("FID-15");
IssueInputParameters issueInputParameters = new IssueInputParametersImpl([:]);
//lookup the corresponding epic via the subtask's parent
MutableIssue epic = issueManager.getIssueObject(
(String)issue.getCustomFieldValue(epicLinkField)
);
// 21 is the transition ID in my workflow
IssueService.TransitionValidationResult validationResult =
issueService.validateTransition(epic.getAssignee(),
epic.id, 21 as Integer, issueInputParameters)
def errorCollection = validationResult.errorCollection
log.error(errorCollection)
if (! errorCollection.hasAnyErrors()) {
issueService.transition(epic.getAssignee(), validationResult)
log.error("OK")
}
else {
log.error("ERROR")
}
出典
2017-09-30 20:16:59
mdo
ありがとうございました。 1つの質問が考えられました。問題を見つけてコーディングすることなくそれを行うことができる方法はありますか? – kya
はい、もちろんです。 ScriptRunnerを使用すると、ワークフロー遷移またはイベントリスナーへのポスト関数を作成できます。 SRドキュメントでは、これらの問題イベントの処理方法について説明しています(https://scriptrunner.adaptavist.com/5.0.0/jira/listeners.html#_custom_listeners) – mdo