Поля гидратированных объектов
Я хочу получить объект Feature для пользовательских историй, полученный из lookback API. Но когда я пытаюсь увлажнить функцию, я получаю только неформатированный идентификатор функции.
Могу ли я получить реальные объекты объектов для пользовательских историй из набора результатов просмотра?
Ниже приведен пример кода, который я использую для получения данных:
storeConfig: {
find: {
"_TypeHierarchy": { '$in' : [-51038] },
"Children": null
},
fetch: ["ScheduleState", "PlanEstimate", "ObjectID", "_ValidFrom", "_ValidTo", "c_BaselineDeliveryConfidence", "Name", "Feature"],
hydrate: ["ScheduleState", "c_BaselineDeliveryConfidence", "Name", "Feature"],
sort: {
"_ValidFrom": 1
},
compress: true,
useHttpPost: true
2 ответа
Нельзя увлажнять объекты прямо из LBAPI. Тем не менее, я работал над вспомогательным классом, чтобы сделать именно это, используя метод, подобный тому, что предложил Ник.
https://github.com/ConnerReeves/RallyHelpers/blob/master/RecordHydrator/RecordHydrator.js
Вот пример того, как это используется. Я собираю все листовые пользовательские истории (которые имеют назначение итерации), а затем увлажняю это поле Инициативы:
launch: function() {
var self = this;
Ext.create('Rally.data.lookback.SnapshotStore', {
limit : Infinity,
fetch : ['Name','Iteration'],
filters : [{
property : '__At',
value : 'current'
},{
property : '_TypeHierarchy',
value : 'HierarchicalRequirement'
},{
property : 'Iteration',
operator : '!=',
value : null
},{
property : 'Children',
value : null
}]
}).load({
params : {
compress : true,
removeUnauthorizedSnapshots : true
},
callback : function(records, operation, success) {
self._hydrateRecords(records);
}
});
},
_hydrateRecords: function(records) {
Ext.create('CustomApp.RecordHydrator', {
fields: [{
name : 'Iteration',
hydrate : ['Name','StartDate','EndDate']
}]
}).hydrate(records).then({
success: function(hydratedRecords) {
console.log(_.groupBy(hydratedRecords, function(record) {
return record.get('Iteration') && record.get('Iteration').get('Name');
}));
}
});
}
Элемент - это полный объект, на который ссылается пользовательская история (через атрибут "Элемент"). Ваш код, который похож на этот запрос:
https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/111/artifact/snapshot/query.js?find={"_TypeHierarchy":"HierarchicalRequirement"}&fields=["Name","ScheduleState","PlanEstimate","Feature"]&hydrate=["ScheduleState"]
вернет что-то вроде этого:
{
Feature: 12483739639,
Name: "my story",
ScheduleState: "Defined",
PlanEstimate: 3
}
где 12483739639 - ObjectID объекта. Добавление "функции" к гидрату не будет иметь никакого значения.
Если вы хотите получить полный объект Feature или некоторые его атрибуты, в своем коде вы можете использовать OID функции и выполнить отдельный запрос. Вы также можете поместить эти OID в массив и использовать $in
оператор в этом втором запросе.