Rally SDK 2 — Как прикрепить историю к объекту

#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. Спасибо, вы правы! Это работает! Я попробовал с другой функцией, и она отлично работает. Я не понимаю, почему, но это работает не со всеми функциями, возможно, с некоторыми ограничениями / привилегиями.