Не реализовано
enum FeatureStatus
{
FEATURE_IDEA,
FEATURE_PROTOTYPE,
FEATURE_SCHEDULED,
FEATURE_DONE,
FEATURE_REJECTED
};
FEATURE_IDEA - ИдеяFEATURE_PROTOTYPE - ПрототипFEATURE_SCHEDULED - ЗапланированноFEATURE_DONE - РеализованоFEATURE_REJECTED - Отклоненноenum ScheduleAction
{
SCHEDULE_NOP,
SCHEDULE_ADD,
SCHEDULE_EDIT,
SCHEDULE_REMOVE,
SCHEDULE_CLOSE
};
SCHEDULE_NOP - Ничего не делатьSCHEDULE_ADD - Добавить задачуSCHEDULE_EDIT - Редактировать задачуSCHEDULE_REMOVE - Удалить задачуSCHEDULE_CLOSE - Закрыть задачуstruct FeatureInfo
{
integer id;
string project;
string developer;
string title;
string description;
FeatureStatus status;
integer position;
integer ctime;
integer mtime;
};
id: integer - project: string - developer: string - title: string - description: string - status: FeatureStatus - position: integer - ctime: integer - mtime: integer - struct FeatureLogChunk
{
integer Remain;
integer NextTime;
FeatureLog Records;
};
Remain: integer - NextTime: integer - Records: FeatureLog - struct FeatureLogRecord
{
integer id;
integer FeatureId;
string FeatureTitle;
integer time;
string actor;
string comment;
string changes;
};
id: integer - FeatureId: integer - FeatureTitle: string - time: integer - actor: string - comment: string - changes: string - struct ScheduleItem
{
integer id;
string developer;
ScheduleAction action;
string problem;
string subproblem;
integer first;
integer current;
integer past;
datetime ctime;
datetime mtime;
};
id: integer - developer: string - action: ScheduleAction - problem: string - subproblem: string - first: integer - current: integer - past: integer - ctime: datetime - mtime: datetime - Список элементов FeatureLogRecord
Список элементов ScheduleItem
integer AddFeature(string project, FeatureInfo AFeatureInfo)project: string -
AFeatureInfo: FeatureInfo -
Возвращает: integer -
Не реализовано
void EditFeatureInfo(string project, integer id, FeatureInfo AFeatureInfo, string comment)project: string -
id: integer -
AFeatureInfo: FeatureInfo -
comment: string -
FeatureInfo GetFeatureInfo(string project, integer id)Возвращает: FeatureInfo -
FeatureLogChunk GetFeatureLog(string project, integer FromTime, integer Limit)Функция GetFeatureLog возвращает записи из журнала свойств, начиная с указаной даты. Параметр limit указывает ограничение. Функция возращает структуру в которой указывается число непрочтеных записей (отброшеных из-за ограничения), следующая дата, которую нужно указать для получения остатка, и массив с записями журнала. С помощью этой функции можно получать обновления с сервера.
Для получения обновления используется параметр FromTime,
который указывает дату получения последних обновлений. Предполагается
что записи до FromTime либо уже известны, либо не интересны.
Функция возращает пакет записей начиная с указанной даты, но возращает
не больше чем указано в ограничении (параметр Limit).
Чтобы получить все записи нужно циклически вызывать функцию
GetFeatureLog, передавая в качестве FromTime
возращенное значение NextTime, до тех пор пока
Remain (число записей не вошедших в выборку) не окажется
равным нулю. После чего получение журнала можно остановить, а для
получения последующих обновлений использовать дату NextTime.
Пример получения всех записей:
type
(**
* Функция принимающая и обрабатывающая записи журнала свойств
* (см. функцию GetFeatureLogFull)
* @param prj название проекта (строковый идетификатор)
* @param LogRecord (запись журнала)
*)
TFeatureLogCallback = procedure (const prj: string; const LogRecord: TFeatureLogRecord);
(**
* Прочитать полный журнал
* @param prj название проекта (строковый идентификатор)
* @param BeginTime время начиная с которого надо получить записи
* @param Callback процедура принимающая записи журнала
* @param Limit число записей извлекаемых за один вызов
* @return последняя дата (время которое нужно указать для получения последующих обовлений)
*)
function GetFeatureLogFull(const prj: string; BeginTime: integer; Callback: TFeatureLogCallback; Limit: integer = 20): integer;
var
chunk: TFeatureLogChunk;
time: integer;
i, len: integer;
begin
assert(Limit > 0, 'Limit must be positive');
time := BeginTime;
repeat
chunk := schedule.GetFeatureLog(prj, time, Limit);
len := Length(chunk.Records);
for i := 0 to len-1 do Callback(prj, chunk.Records[i]);
time := chunk.NextTime;
until chunk.remain <= 0;
Result := time;
end;
(**
* Функция принимающая и обрабатывающая записи журанала
*
* Эта функция может выводить записи на экран или добавлять в базу данных
*)
procedure feature_log_callback(const prj: string; const LogRecord: TFeatureLogRecord);
begin
with LogRecord do
begin
writeln(' LogID: ', Id);
writeln(' Time: ', Time, ' (', DateTimeToStr(UnixToDateTime(Time)), ')');
writeln(' Feature[', FeatureId, ']: ', FeatureTitle);
writeln(' Actor: ', actor);
writeln(' Comment: ', comment);
writeln(' Changes: ', changes);
writeln;
end; // for i with LogRecord
end;
begin
time := получить дату посленего обновления;
time := := GetFeatureLogFull(prj_name, FromTime, feature_log_callback, 20);
сохранить дату последнего обновления (time);
end.
project: string -
FromTime: integer -
Limit: integer -
Возвращает: FeatureLogChunk -
Не реализовано
project: string -
developer: string -
Возвращает: Schedule -
Schedule GetScheduleReport(string project, string developer, datetime startDate, datetime endDate, boolean closed)Не реализовано
project: string -
developer: string -
startDate: datetime -
endDate: datetime -
closed: boolean -
Возвращает: Schedule -