#javascript #sdk #rally
#javascript #sdk #ралли
Вопрос:
Я пытаюсь написать пользовательский HTML-блок, используя Rally SDK 2.1 (Javascript), чтобы создать новую историю. Я могу придумать, как создать историю с пользовательским заголовком и описанием.
Если я пытаюсь установить функцию, создание зависает, и ничего не происходит… Вот как я устанавливаю функцию в скрипте:
var story = Ext.create(model, {
Name: 'Can be deleted, created via Rally app SDK 2.1',
Description: 'Dummy generated story - tests',
PortfolioItem: '/portfolioitem/featureset/12345' // FEATURE
});
Если я удалю атрибут «PortfolioItem», то это сработает как по волшебству.
Вот мой глобальный скрипт:
<!DOCTYPE html>
<html>
<head>
<title>test - Story creation</title>
<script type="text/javascript" src="/apps/2.1/sdk.js"></script>
<script type="text/javascript">
// SDK documentation: https://docs.ca.com/en-us/ca-agile-central/saas/apps/2.1/doc/#!/api
Rally.onReady(function() {
// Create a new story
function addStory() {
console.log('Creating a new story...');
// Retrieve the Rally user stories model
Rally.data.ModelFactory.getModel({
type: 'UserStory',
context: {
workspace: '/workspace/12345', // dummy reference
project: '/project/12345' // dummy reference
},
success: function(model) {
// Create a new story thanks to the retrieved model
var story = Ext.create(model, {
Name: 'Can be deleted, created via Rally app SDK 2.1',
Description: 'Dummy generated story - tests',
PortfolioItem: '/portfolioitem/featureset/12345' // dummy reference
});
// Save the new story
story.save({
callback: function(result, operation) {
if(operation.wasSuccessful()) {
console.log('New story created!', result.get('FormattedID'));
}
}
});
}
});
}
// The Rally application
Ext.define('Rally.grg.storyCreation', {
extend: 'Rally.app.App',
// Method fired on application launch
// Retrieve release features asynchronously
launch: function() {
console.log('Launch...');
addStory();
}
});
Rally.launchApp('Rally.grg.storyCreation', {
name: 'test - Story creation'
});
});
</script>
<style type="text/css">
</style>
</head>
<body></body>
</html>
Я попытался объявить новый объект portfolioitem, который ссылался бы на нужную мне функцию. Затем я ссылаюсь на это на уровне истории, но оно ведет себя точно так же:
var f;
console.log('Defining the feature...');
// Retrieve the Rally features model
Rally.data.ModelFactory.getModel({
type: 'portfolioitem',
success: function(portfolioitemkModel) {
// Define an existing feature thanks to the retrieved model
f = Ext.create(portfolioitemkModel, {
_ref: "/portfolioitem/featureset/12345",
_refObjectName: "...",
_refObjectUUID: "...",
_type: "PortfolioItem/FeatureSet"
});
}
});
Как кто-нибудь пример связывания истории и ее родительской функции с помощью JavaScript SDK2, пожалуйста?
Ответ №1:
Я бы попробовал изменить эту строку:
PortfolioItem: '/portfolioitem/featureset/12345'
к этому:
PortfolioItem: '/portfolioitem/feature/12345'
Комментарии:
1. Спасибо за ваше предложение JPKole, но оно работает не лучше.
2. Я использовал точный приведенный выше код, заменив только идентификатор объекта (12345) рабочей области, проекта и объекта, а также изменив ‘featureset’ на ‘feature’. Затем он успешно создал историю, которая была связана с моей функцией.
3. Спасибо, вы правы! Это работает! Я попробовал с другой функцией, и она отлично работает. Я не понимаю, почему, но это работает не со всеми функциями, возможно, с некоторыми ограничениями / привилегиями.