Как извлекать данные о расписании с использованием Rally WS API?

StackOverflow https://stackoverflow.com//questions/21055800

  •  22-12-2019
  •  | 
  •  

Вопрос

Я хочу все записи в течение двух конкретных дат, независимо от того времени, когда они были введены.Должен ли я запросить элементы ввода времени, затем получить значение _REF для значений в отдельных запросах.

Есть ли более эффективный способ добраться до часов? Может быть, пример куска кода?

Это было полезно?

Решение

Выбираете ли вы начать с часовой целостины и пройти время к времени RepertryValues, или наоборот, зависит от проблемы, которую вы пытаетесь решить.Если, например, вы хотели бы состоить время, вы можете выбрать элемент -> Значения направления.

Вот два примера, написанные с Rally Read Pree для узла :

var rally = require('rally'),
    queryUtils = rally.util.query,
    restApi = rally({
        user: 'user@co.com', 
        pass: 'secret', 
        apiVersion: 'v2.0', 
        server: 'https://rally1.rallydev.com',  
        requestOptions: {
            headers: {
                'X-RallyIntegrationName': 'Timesheet data: from TEItem to TEValue',  
                'X-RallyIntegrationVendor': 'Rally',             
                'X-RallyIntegrationVersion': '1.0'                    
            },
        }
    });

function getTimeEntryValues(result) {
    for(var i = 0, length = result.Results.length; i < length; i++){
        console.log(result.Results[i].Values._ref);
        getValue(result.Results[i].Values._ref);
    }

}

function getValue(ref){
     restApi.query({
            ref: ref,
            fetch: ['Hours', 'DateVal']
    },
    function(error, result){
        if(error) {
            onError(error);
        } else {
            console.log('Success!', result)
        }
    });
}

 function getTimeEntryItems(callback) {

   var query = queryUtils.where('WeekStartDate', '>=','2014-01-01T00:00:00.000Z' );
   query = query.and('WeekStartDate', '<=','2014-02-01T00:00:00.000Z' );
    restApi.query({
        type: 'TimeEntryItem',
        start: 1,
        limit: Infinity,
        fetch: ['Values', 'TaskDisplayString', 'WorkProductDisplayString'],
        scope: {
            workspace: '/workspace/12352608129', 
            up: false, 
            down: false 
    },
        query: query
    },  function(error, result) {
            if(error) {
            onError(error);
        } else {
            callback(result);
        }
    });
}

function onSuccess(result) {
    console.log('Success!', result);
}

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

getTimeEntryItems(getTimeEntryValues);
.

Вот второй пример, что запросы на часовые временности первыми, а затем запросы на вершину:

var rally = require('rally'),
    queryUtils = rally.util.query,
    restApi = rally({
        user: 'user@co.com', 
        pass: 'secret', 
        apiVersion: 'v2.0', 
        server: 'https://rally1.rallydev.com',  
        requestOptions: {
            headers: {
                'X-RallyIntegrationName': 'Timesheet data node.js program',  
                'X-RallyIntegrationVendor': 'Rally',             
                'X-RallyIntegrationVersion': '1.0'                    
            },
        }
    });

 function getTimeEntryValues() {

    var query = queryUtils.where('DateVal', '>=','2014-01-08T00:00:00.000Z' );
    query = query.and('DateVal', '<=','2014-01-10T00:00:00.000Z' );
    return restApi.query({
        type: 'TimeEntryValues',
        start: 1,
        limit: Infinity,
        fetch: ['TimeEntryItem', 'Hours'],
        scope: {
            workspace: '/workspace/12352608129', 
            up: false, 
            down: false 
    },
        query: query
    });
}


function getTimeEntryItems(result) {
    var timeEntryItems = [];
    for(var i = 0, length = result.Results.length; i < length; i++){
        console.log(result.Results[i].TimeEntryItem._ref.split("/").pop());
        timeEntryItems.push(result.Results[i].TimeEntryItem._ref.split("/").pop()); //get ObjectID from _ref, since _ref is not queriable

    }
    console.log('object ids of time entry items: ', timeEntryItems);

    var query = queryUtils.where('ObjectID', '=',timeEntryItems[0]);
    for (var i = 1, length = timeEntryItems.length; i < length; i++) {
        query = query.or('ObjectID', '=',timeEntryItems[i]);
    }
    return restApi.query({
            type: 'TimeEntryItem',
            fetch: ['TaskDisplayString', 'WorkProductDisplayString', 'WeekStartDate'], 
            query: query,
    });

}

function onSuccess(result) {
    console.log('Success!', result);
}

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

getTimeEntryValues()
    .then(getTimeEntryItems)
    .then(onSuccess)
    .fail(onError);
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top