3.3.4.11. Метод GetDocflowUpdates
|
|
Метод GetDocflowUpdates позволяет получить список документов, к которым имеет доступ данный сотрудник, и их текущие статусы в системе Такском-Файлер.
public IDocFlowUpdates GetDocflowsUpdates(DocFlowStatus? status = null, long? lastEventTimeStamp = null, DocFlowDirection? direction = null, bool includeTransportInfo = false)
Параметры метода:
•
|
status - позволяет задать состояние документооборота, с которым необходимо выбирать документы. Параметр принимает одно из следующих значений:
|
o
|
Fail - ошибка, документ не отправлен.
|
o
|
CompletedWithWarning – есть предупреждение.
|
o
|
Sending – в процессе отправки документа.
|
o
|
WaitingForAnswer – документ успешно отправлен и ожидает ответного действия.
|
o
|
WaitingForCancellation - в ожидании аннулирования.
|
o
|
Cancelled – аннулирован.
|
•
|
lastEventTimeStamp - метка времени, начиная с которой забираются все изменения, связанные с документами. При первом вызове метода следует подать в параметр значение null. При последующих вызовах необходимо подавать значение, возвращённое предыдущим вызовом данного метода (свойство IDocFlowUpdates.LastEventTimeStamp).
|
•
|
direction – «направление» документооборота. Может принимать следующие значения:
|
o
|
Ingoing - входящие документы.
|
o
|
Outgoing - исходящие документы.
|
•
|
includeTransportInfo - признак необходимости возвращения транспортной информации. Транспортная информация - это список служебных документов, их код регламента, код транзакции и дата последнего действия документооборота.
|
Возвращаемое значение: Объектная модель со статусами документов. Метод возвращает список документооборотов в формате XML. XSD схема этого XML файла такая же, как для файла meta.xml контейнера Такском (см. п. 2.1.4. Транспортный контейнер Такском) с дополнительным атрибутом docflow InternalStatus, который предназначен для отражения состояния обработки полученного или готовящегося к отправке документа внутри организации и может принимать одно из следующих значений:
•
|
None - значение отсутствует.
|
•
|
OnNegotiation - документ направлен на согласование, ожидает согласования.
|
•
|
NegotiationOk - документ успешно согласован.
|
•
|
NegotiationRejected - согласование документа отклонено.
|
•
|
OnSign - документ направлен на подписание и ожидает подписания или отклонения.
|
•
|
SignOk - документ успешно подписан.
|
•
|
SignRejected - подписание документа отклонено.
|
Пример обработки документооборота:
public class DocFlowUpdatesProcessor
{
// Метод получает и обрабатывает все изменения в докуметооборотах,
// случившихся после lastEventTimeStamp.
public long? ProcessDocFlowsUpdates(long? lastEventTimeStamp, TaxcomApi api)
// Метод принимает обновлённое значение lastEventTimeStamp или null,
// если это первый вызов метода или необходимо получить все изменения по всем
// документооборотам.
//
// Возвращает новое значение lastEventTimeStamp, которое следует подать
// в метод при следующем вызове.
{
IDocFlowUpdates documentUpdates;
do
{
// Подаём последнее сохранённое значение lastEventTimeStamp.
// (Если подать null, то метод вернёт все изменения всех
// документооборотов пользователя за всё
// время работы с системой)
documentUpdates = api.GetDocflowUpdates(
DocFlowStatus.Succeed,
lastEventTimeStamp,
DocFlowDirection.Outgoing,
false);
// Сохранить возвращённое значение lastEventTimeStamp,
// чтобы при следующем вызове вернулись только изменения,
// имеющие более поздний TimeStamp.
lastEventTimeStamp = documentUpdates.LastEventTimeStamp;
// Обработать изменения в пришедших обновлениях.
Process(documentUpdates);
// Изменения возвращаются постранично. Обычно одна страница
// содержит до 100 записей. Однако если TimeStamp 100-ой и нескольких
// последующих записей совпадают, то все эти записи с совпадающим
// TimeStamp включаются в возвращаемую страницу. В этом случае
// будет возвращено более 100 записей.
} while (!documentUpdates.IsLast);
// Вернуть новое значение lastEventTimeStamp, которое следует подать
// в метод при следующем вызове.
return lastEventTimeStamp;
}
private static void Process(IDocFlowUpdates documentUpdates)
{
// ...
}
}