Extjs 使用sdk 2.0在应用程序中创建缺陷的自定义链接

Extjs 使用sdk 2.0在应用程序中创建缺陷的自定义链接,extjs,rally,Extjs,Rally,我编写了一个在树面板中显示测试用例的应用程序。在该窗格中,我有一个特定的列,其中包含用户可以对测试用例执行的操作的图标(显示详细信息、编辑、添加bug…)。在列配置中,呈现程序调用此函数,其中数据是一个具有\u ref属性的对象,如/testcase/123456/: \u gridDataFormatTestCaseIcons:函数(数据) { var iconstring=Ext.String.format(“”,Rally.nav.Manager.getDetailUrl(数据)); IC

我编写了一个在树面板中显示测试用例的应用程序。在该窗格中,我有一个特定的列,其中包含用户可以对测试用例执行的操作的图标(显示详细信息、编辑、添加bug…)。在列配置中,呈现程序调用此函数,其中
数据
是一个具有
\u ref
属性的对象,如
/testcase/123456/

\u gridDataFormatTestCaseIcons:函数(数据)
{
var iconstring=Ext.String.format(“”,Rally.nav.Manager.getDetailUrl(数据));
IConString+='';
IConString+='';
IConString+='';
IConString+='';
返回IConString;
}
我的第一个图标打开了一个新的选项卡,其中包含关于TestCase的详细信息:OK。我的第二个图标打开一个弹出窗口,在那里我可以编辑我的测试用例:OK。我的第三个图标打开了一个弹出窗口,在那里我可以创建一个新的bug。好的,但是。。。我需要填写所有的文件,包括那些我想可以自动填写的文件


因此,我的问题是关于第三个图标和函数
Rally.nav.Manager.create('defect')
:表示可以接受另一个参数
args
,但没有给出任何细节。我可以使用它来指定所有者和测试用例字段,例如,以及如何指定吗?

如果您是正确的,args参数可以是一个包含默认属性的对象,以填充到“创建”对话框中。但是,仅接受有限的字段子集:

Allowed args keys
User Story:
defaultName
rank
iteration
release
parent
dpyOid {dependency}

Defect:
defaultName
defectSuiteOid {Defect Suites}
testCaseResult
testCase
requirement
iteration

Defect Suite:
defaultName
rank
iteration

Portfolio Item:
defaultName
rank
parent

Task:
workProduct

Test Case:
testfolderOid {Test Folder}
artifactOid {Artifact}
看起来这些文档有点误导,也就是说,因为我们正在创建一个新对象,而不是包含对现有缺陷的引用:

//Launch the create dialog
Rally.nav.Manager.create('/defect/12345');
文件内容应为:

//Launch the create dialog
Rally.nav.Manager.create('defect');
下面是一个使用按钮弹出和编辑的快速示例,并设置缺陷名称和默认迭代。请注意,Rally.nav.Manager功能通常仅在Rally内部安装并运行应用程序时才起作用

<!DOCTYPE html>
<html>
<head>
    <title>Create Example</title>

    <script type="text/javascript" src="https://rally1.rallydev.com/apps/2.0rc2/sdk.js"></script>

    <script type="text/javascript">
        Rally.onReady(function() {
            Ext.define('CustomApp', {
                extend: 'Rally.app.App',
                componentCls: 'app',

                launch: function() {
                    var myButtonContainer = Ext.create('Ext.Container', {
                        items: [{
                            xtype: 'rallybutton',
                            text: 'Click Here to Create a New Defect',
                            handler: function() {
                                //Launch the create dialog
                                var defectDefaults = {
                                    defaultName: "My Defect",
                                    iteration: "12345678910"
                                };

                                Rally.nav.Manager.create('defect', defectDefaults);
                            }
                        }],
                    });
                    this.add(myButtonContainer);
                }
            });


            Rally.launchApp('CustomApp', {
              name: 'Create Example'
            });
        });
    </script>

    <style type="text/css">

    </style>
</head>
<body></body>
</html>

创建示例
onReady(函数(){
Ext.define('CustomApp'{
扩展:“Rally.app.app”,
组件CLS:“应用程序”,
启动:函数(){
var myButtonContainer=Ext.create('Ext.Container'{
项目:[{
xtype:“拉力按钮”,
文本:“单击此处创建新缺陷”,
处理程序:函数(){
//启动创建对话框
var默认值={
默认名称:“我的缺陷”,
迭代:“12345678910”
};
Rally.nav.Manager.create('defect',DefectDefault);
}
}],
});
添加(myButtonContainer);
}
});
Rally.launchApp('CustomApp'{
名称:“创建示例”
});
});

谢谢你的回答。我试过这样做:
Rally.nav.Manager.create('defect',{testCase:'/testCase/12345',defaultName:'FooBar'})
其中
/testCase/12345/
有效:默认名称可以,但testCase不行,这是我需要的字段之一。而且,在我可以创建的对象列表中,我没有看到TestCaseResult。如果我尝试
Rally.nav.Manager.create('testcasesult'),它会打开一个popeup,其中显示以下消息“测试用例结果无法保存,因为测试用例已被删除。”。也许我需要传递一个或多个文档中没有的参数?我明白你的意思。既然您提到了它,我的迭代引用也没有在其中填充。我会做一些挖掘,让你知道我发现了什么。对于测试用例的创建,这行代码是:
Rally.nav.Manager.create('defect',{testCase:'12345',defaultName:'FooB‌​ar'})
:字符串必须仅为objectID。在迭代示例中尝试相同的方法:
iteration:“12345678910”
而不是
iteration:/iteration/12345678910”
…在ObjectID上找到了很好的结果!最终,一旦发布了可编辑的详细信息页面,您将能够将对象的实际WebServicesJSON属性传递到创建页面,默认值将填充到中。