2012-03-29 2 views
3

랠리에서 결함에 대한 사용자 정의 웹 링크 필드를 구성했습니다. 그리고 랠리 rest .net api를 사용하여 랠리에 맞게 사용자 정의 weblink 필드의 값으로 새로운 결함을 제출하고 싶습니다.랠리 레스트 .net api로 결함을 제출할 때 사용자 정의 WebLink 필드 값을 설정하는 방법?

웹 링크 인스턴스가 LinkID 및 DisplayString 값을 필요로하지 않으면 웹 링크 인스턴스를 초기화하여 결함 필드를 설정하는 방법을 알지 못합니다.

또한 랠리 레스트 .net api에서 해당 필드를 지원하는 DynamicJsonObject를 설정하려고 시도했지만 여전히 실패했습니다.

디버깅 스크린 샷 enter image description here

도와주세요!

편집 : 아래의 샘플 코드와

내가 게시 해봤 결함 :

 var api = new RallyRestApi("<myusername>", "<mypassword>", "https://community.rallydev.com"); 

     var defect = new DynamicJsonObject(); 
     defect["Name"] = "Sample Defect"; 
     defect["Description"] = "Test posting defect with weblink type field"; 
     defect["Project"] = "https://trial.rallydev.com/slm/webservice/1.29/project/5839639589.js"; 
     defect["SubmittedBy"] = "https://trial.rallydev.com/slm/webservice/1.29/user/5797741589.js"; 
     defect["ScheduleState"] = "In-Progress"; 
     defect["State"] = "Open"; 
     defect["Severity"] = "Major Problem"; 
     defect["Priority"] = "High Attention"; 
     defect["CustWebLink"] = new DynamicJsonObject(new Dictionary<string, object> 
     { 
      {"DisplayString", "abc"}, 
      {"LinkID", "123"} 
     }); 

     CreateResult creationResult = api.Create("defect", defect); 

이제 결함이 랠리에 게시하지만, CustWebLink의 값을 가질 수 할 수 있습니다 . 조사하는 동안 나는 CustWebLink 필드가 게시 요청의 직렬화에서 무시 된 것을 본다.

이 비교적 간단
Rally.RestApi Post Response: {"CreateResult": {"_rallyAPIMajor": "1", "_rallyAPIMinor": "29", "Errors": [], "Warnings": ["Ignored JSON element defect.CustWebLink during processing of this request."],.....} 

답변

3

, 당신은 단지 웹 링크에 대해 별도의 DynamicJsonObject를 만들고 linkID를하고 DisplayString 속성을 위해 값을 할당해야합니다. 그런 다음 Weblink 개체를 결함 필드로 지정하십시오. 여기에 간단한 예가 있습니다 :

//Set our Workspace and Project scopings 

    String workspaceRef = "/workspace/5912034914"; 
    String projectRef = "/project/5912035004"; 

    DynamicJsonObject myDefect = new DynamicJsonObject(); 
    DynamicJsonObject myWeblink = new DynamicJsonObject(); 

    // Populate the Weblink 
    myWeblink["LinkID"] = "123456"; 
    myWeblink["DisplayString"] = "External Image Link"; 

    // Populate the Defect 
    myDefect["Name"] = "My Defect"; 
    myDefect["Priority"] = "Normal"; 
    myDefect["Workspace"] = workspaceRef; 
    myDefect["Project"] = projectRef; 
    myDefect["zWeblinkField"] = myWeblink; 

    CreateResult createDefect = restApi.Create("Defect", myDefect); 
+0

감사합니다. @ 마크, 나는 당신과 같은 방식으로했지만 여전히 KeyNotFoundException 오류를 계속 발생시킵니다. 'Rally.RestApi 게시자 응답 : { "CreateResult": { "_rallyAPIMajor": "1", "_rallyAPIMinor": "29", "Errors": [ "JSON 문서로 I/O 오류로 인해 입력 스트림을 구문 분석 할 수 없습니다 : 구문 분석 오류 : 속성 값을 읽으려고 할 때 예기치 않은 문자 'R'을 읽습니다. [chars read = >>> { "defect": { "Name": "sdf", "Description": "abc", "Project" "상태": "열림", "CusWebLink": R <<<] "],"상태 ":"완료 "," 경고 : "[]}}' –

+0

안녕하세요, 위의 오류 문자열을 기반으로 Triet은 다음과 같은 할당 문이 있습니까 : myDefect ["CusWebLink "] = ...; ? 웹 링크에 해당하는 다른 DynamicJSON 객체로 설정됩니까? Weblink 필드에는 URL 정보 자체가 포함되어 있지 않습니다. 이는 Rally 내부의 속성입니다. LinkID 및 DisplayString에 대한 숫자 식별자 만 포함해야합니다. DynamicJSONObject에 전달한 문자열 안에 \/" ''< > 등의 특수 문자를"이스케이프 "해야합니다. 그렇지 않으면 올바르게 직렬화되지 않을 수 있습니다. –

+0

안녕하세요. 내 질문을 업데이트했습니다. CusWebLink 필드에 2 개의 필드 (LinkID 및 DisplayString) 만있는 DynamicJsonObject가 할당 된 것을 볼 수 있습니다 .LinkID와 DisplayString 모두 문자열 값을가집니다. –

관련 문제