ИС "Такском-Доклайнз"                  ИНФОРМАЦИЯ ДЛЯ РАЗРАБОТЧИКОВ
×
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)
        {
            // ...
        }
    }