我通过C#dll使用API的v2.0。 但是当我通过https://rally1.rallydev.com/slm/doc/webservice/
将查询字符串传递给v2.0 API 时,也会出现此问题我在神器级别查询因为我需要缺陷和故事。我试着看看Rally前端正在使用什么类型的查询字符串,并将自定义字段和内置字段传递给工件查询。我正在做同样的事情,但是没有找到运气的运气。
我需要能够从查询中过滤掉已发布的项目。此外,我还需要按自定义c_ReleaseType字段以及内置的DragAndDropRank字段进行排序。我猜这是一个问题,因为那些内置字段实际上并不在Artifact对象上,但为什么自定义字段会起作用?它们也不在Artifact对象上。这可能只是一个我无法猜到隐藏在API中的问题。如果我可以根据自定义字段查询这些对象,我希望能够通过内置字段查询它们,即使这些字段不存在于Ancestor对象上。
为了这个例子,我遗漏了一堆设置代码......只留下导致问题的代码。
var request = new Request("Artifact");
request.Order = "DragAndDropRank";
//"Could not read: could not read all instances of class com.f4tech.slm.domain.Artifact"
当我通过DragAndDropRank行评论Order时,它可以正常工作。
var request = new Request("Artifact");
request.Query = (new Query("c_SomeCustomField", Query.Operator.Equals, "somevalue").
And(new Query("Release", Query.Operator.Equals, "null")));
//"Could not read: could not read all instances of class com.f4tech.slm.domain.Artifact"
当我从查询中取出发布部分时,它可以正常工作。
var request = new Request("Artifact");
request.Query = (((new Query("TypeDefOid", Query.Operator.Equals, "someID").
And(new Query("c_SomeCustomField", Query.Operator.Equals, "somevalue"))).
And(new Query("DirectChildrenCount", Query.Operator.Equals, "0"))));
//"Could not read: could not read all instances of class com.f4tech.slm.domain.Artifact"
当我从查询中取出DirectChildrenCount部分时,它可以正常工作。
以下是API调用所展示问题的示例。
当我通过DragAndDropRank查询字符串删除Order时,它可以正常工作。
答案 0 :(得分:1)
您的问题已包含答案。
UserStory(WS API中的HierarchicalRequirement)和Defect从Artifact继承了它们的一些字段,例如: FormattedID,Name,Description,LastUpdateDate等。您可以在工件类型的上下文中使用这些字段。
您尝试在Artifact对象上访问的字段不存在于其中。它们存在于儿童级别,例如DragAndDropRank,Release,Iteration。在Artifact类型的上下文中不可能使用这些字段。
父对象无法访问特定于子对象的属性。 神器是一种抽象类型。
如果您需要按发布过滤,则需要发出两个单独的请求 - 一个用于故事,另一个用于缺陷。
答案 1 :(得分:1)
我认为你的大部分麻烦都是因为为了使用Artifact端点,你需要指定一个types参数,以便它知道要包含哪些工件子类。
只需将其添加到上面的示例WSAPI查询中,就会导致它成功返回:
https://rally1.rallydev.com/slm/webservice/v2.0/artifact?query=(c_KanbanState = "Backlog")&order=DragAndDropRank&start=1&pagesize=20&types=hierarchicalrequirement,defect
但是,我不确定C#API是否允许您将其他自定义参数编码到请求中...