2016-05-13 6 views
0

Мое требование - получить точную дату/время, когда пользователь отключится. Чтобы достичь этого, мне нужно запросить строку «user set to INACTIVE» в Истории изменений, чтобы найти дату, когда пользователь переключился с включенного на отключенный. Как получить историю изменений с помощью узла js? Я попробовал под кодом, но его не работая как команда поддержки ралли, упомянула, что его старый код и я должен попробовать с v2.0. Может ли кто-нибудь помочь мне достичь моего требования?Как получить историю изменений пользователя из Rally с помощью Node js scripting

var revisions = story.RevisionHistory.Revisions; 
 
revisions.sort(byRevisionNumber); 
 

 
var story_was_blocked = false; 
 
// it doesn't matter how many revs have been in BLOCKED state, presence of one is sufficient 
 
for (var rix = 0; rix < revisions.length && story_was_blocked === false; rix++) { 
 
    var rev = revisions[rix]; 
 
    if (rev.Description.indexOf("BLOCKED changed from ") >= 0) { 
 
    story_was_blocked = true; 
 
    } 
 
}

ответ

0

Вот краткий пример того, как это может быть достигнуто. Обратите внимание, что это только показывает, как извлечь все изменения, в коллекции на пользователе, вы должны были бы перебрать их и соответствовать полю Описания на «Disabled»:

var rally = require('rally'), 
queryUtils = rally.util.query, 
rallyApi = rally({ 
    // Example key, not valid 
    apiKey: '_UkMasZfjPZfquDIMExfEKnAboQUlyT2SP4UppMHir', 
    server: 'https://rally1.rallydev.com', 
    requestOptions: { 
     headers: { 
      'X-RallyIntegrationName': 'Query User Revisions', 
      'X-RallyIntegrationVendor': 'Stackoverflow user4211235', 
      'X-RallyIntegrationVersion': '1.0' 
     } 
    } 
}); 

function onError(error) { 
    console.log('Failure!', error); 
} 

function queryUserRevisions(result) { 
    var revisions = result.Revisions; 
    rallyApi.query({ 
     ref: revisions, 
     start: 1, 
     limit: Infinity, 
     order: 'RevisionNumber', 
     fetch: ['RevisionNumber','Description','CreationDate'] 
    }, function(error, result) { 
     if(error) { 
      onError(error); 
     } else { 
      console.log('Success querying User Revisions...'); 
      console.log('Summary of revisions on User:') 
      console.log(result); 
     } 
    }); 
} 

function queryUserRevisionHistory(result) { 
    rallyApi.query({ 
     ref: result.Results[0].RevisionHistory, 
     start: 1, 
     limit: Infinity, 
     fetch: ['Revisions','RevisionNumber','Description','CreationDate'] 
    }, function(error, result) { 
     if(error) { 
      onError(error); 
     } else { 
      console.log('Success querying User Revision History. Querying Revisions...'); 
      queryUserRevisions(result); 
     } 
    }); 
} 

function queryUser(callback) { 
    rallyApi.query({ 
     type: 'user', 
     start: 1, 
     pageSize: 2, 
     limit: 10, 
     order: 'CreationDate', 
     fetch: ['UserName', 'EmailAddress', 'RevisionHistory'], 
     query: queryUtils.where('UserName', '=', "[email protected]") 
    }, function(error, result) { 
     if(error) { 
      onError(error); 
     } else { 
      console.log('Success querying User. Querying Revision History...'); 
      callback(result); 
     } 
    }); 
} 

queryUser(queryUserRevisionHistory); 
+0

код работает для меня. Но у меня есть другой вопрос: я создаю соединение RestApi в другом классе RallyDataLoader, поэтому я не могу использовать его в этом конкретном классе. Как это можно сделать? –

+0

В коде отображается только первая история изменений пользователя. вы должны всегда фильтровать с именем пользователя? –

+0

В то время как пример запрашивает только одного пользователя, вы можете выбрать опрос коллекции пользователей, чтобы получить несколько пользователей, если хотите. – user4211235