2016-05-27 7 views
0

私はこのブログの記事から働いている:http://codedevstuff.blogspot.com/2015/04/convert-multiple-tasks-to-sub-tasks-in.htmlScriptRunner&グルーヴィー:サブタスクにタスク

私のコードは次のとおりです。

import com.atlassian.jira.component.ComponentAccessor 
import com.atlassian.jira.issue.search.SearchProvider 
import com.atlassian.jira.jql.parser.JqlQueryParser 
import com.atlassian.jira.web.bean.PagerFilter 
import com.atlassian.jira.ComponentManager 
import com.atlassian.jira.security.Permissions 
import com.atlassian.jira.event.type.EventDispatchOption 
import com.atlassian.jira.issue.Issue; 
import com.atlassian.jira.issue.MutableIssue; 
import com.atlassian.jira.user.ApplicationUser; 
import com.atlassian.jira.issue.UpdateIssueRequest; 
import com.atlassian.jira.issue.IssueManager; 
import com.atlassian.jira.user.ApplicationUser; 
import com.atlassian.jira.issue.MutableIssue; 
import com.atlassian.jira.issue.UpdateIssueRequest; 

def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser.class) 
def searchProvider = ComponentAccessor.getComponent(SearchProvider.class) 
def issueManager = ComponentAccessor.getIssueManager() 
def user = ComponentAccessor.getJiraAuthenticationContext().getUser() 
def parentIdKey = "DIG-11514" 
def subTaskIssueTypeId = "5" 
//def query = jqlQueryParser.parseQuery("project = AR AND 'Business Requirement Id' ~ '5' AND (" + queryParamsString + ")") 
def query = jqlQueryParser.parseQuery("issue in (DIG-16826, DIG-17281, DIG-14493, DIG-13886, DIG-17939, DIG-17071, DIG-15430, DIG-15409, DIG-15409)") 
def results = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter()) 
results.getIssues().each {documentIssue -> 
    //log.debug(documentIssue.key) 
    def issue = issueManager.getIssueObject(documentIssue.id) 
    changeToSubTaskAndLink(parentIdKey, documentIssue.key, subTaskIssueTypeId) 
} 
//Method to do all the work 
def changeToSubTaskAndLink(parentId, childId, subTaskIssueTypeId) 
{ 
    IssueManager issueManager = ComponentAccessor.getIssueManager() 
    //Get the parent Issue 
    def parent = issueManager.getIssueObject(parentId) 
    //Get the child Issue 
    def child = issueManager.getIssueObject(childId) 
    //Change the child to the subtask type 
    child.setIssueTypeId(subTaskIssueTypeId) 
    //Update the issue 
    ComponentAccessor.getIssueManager().updateIssue((ApplicationUser)ComponentManager.getInstance().jiraAuthenticationContext?.user, (MutableIssue)child, UpdateIssueRequest.builder().build()) 
    //Create the subtask link, if this is not done you'll end up with orphans 
    ComponentAccessor.getSubTaskManager().createSubTaskIssueLink(parent, child, ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()) 
} 

しかし、私はいつもで報わしています:メソッドCOMをマッチング見つけることができません.atlassian.jira.issue.IssueManager#getIssueObject(java.lang.Object)。宣言された型が正しいかどうか、メソッドが存在するかどうかを確認してください。例えば

:行46、列40(def parent

can't find matching method

私は方法タイプを追加するために必要な、changeToSubTaskAndLink方法でJIRAのv6.4.13を

+2

'getIssueObject'は、ロング(発行ID)またはストリング(発行キー)を受け入れます。あなたが意図せずに別のクラスのものを渡しているように見えます。ローカル変数とメソッドのパラメータを強く型付けできますか? (例えば、 "def"の代わりに "String"や "Long"を使用するなど)これにより、問題がどこにあるかをより明確に見ることができます。 –

答えて

0

を使用していそれらの入力パラメータに対するオブジェクトタイプとを含む。

def void changeToSubTaskAndLink(String parentId, String childId, String subTaskIssueTypeId) 

ALSO!内部IDEは、一部の変数が実際には動的であることを常に認識しているわけではなく、getIssueObjectを呼び出すときにnull以外の値を持つことになるので、エラーを表示しても試してみてください。

関連する問題