О Web Services API сервера приложений ABBYY FlexiCapture 10

Web Services API сервера приложений позволяет внешней системе подключиться к серверу приложений ABBYY FlexiCapture 10, используя протокол SOAP поверх HTTP, создать задание на обработку документов, запустить его и получить результаты обработки. Наличие Web Services API позволяет разрабатывать сторонние приложения, использующие систему ABBYY FlexiCapture 10 как сервис анализа изображений документов и экспорта результатов.

Web Services API сервера приложений позволяет управлять уже настроенным процессом обработки. Таким образом, перед началом работы необходимо создать на Станции Настройки Проектов необходимые проекты, указав для каждого из них использующиеся определения документов, типы пакетов, настройки обработки изображений и т.д.

Управление осуществляется с помощью вызова методов Web Services API. В качестве параметров и возвращаемых значений используются стандартные и специально разработанные типы данных.

Формальное описание интерфейса сервиса (WSDL) можно получить по следующей ссылке:

http://appServer/FlexiCapture10/Server/WebServices.dll?Handler=Version2WSDL, где appServer – имя установленного сервера приложений,

или открыть в браузере.


Новые возможности

В текущей версии программного интерфейса добавлены новые методы для работы со следующими объектами:

  • Задания
  • Сессии
  • Страницы

Некоторые новые методы перекрывают функциональность реализованных в предыдущей версии. Тем не менее, старые методы оставлены для обеспечения совместимости существующих приложений (см. раздел "Переход с предыдущих версий Web Services API").

Также добавлены методы для работы со следующими объектами:

  • Пользователи
  • Мандаты лицензирования
  • Именованные параметры

Кроме того, добавлен новый способ работы с файлами: с помощью POST-запросов.


Переход с предыдущих версий Web Services API

Приложения, использующие предыдущие версии Web Services API, можно использовать и с новой версией. Для этого выполните следующие действия:

  1. Измените в исходном коде приложения URL web-сервиса на следующую строку:
    http://<имя сервера>/flexicapture10/server/webservices.dll?Handler=Version2WSDL
  2. Обновите WebReference.
  3. Скомпилируйте проект.


Использование Web Services API сервера приложений ABBYY FlexiCapture 10

Стандартный сценарий использования Web Services API состоит из следующих этапов обработки:

  • Сканирование и отправка документов на обработку;
  • Верификация распознанных документов;
  • Повторное сканирование документов;
  • Получение результатов обработки.

Рекомендуется использовать Web Services API для обработки документов на этапах типа "Внешний" (ID=2000). Эти этапы создаются на закладке Процесс обработки диалогового окна Настройка проекта в режиме Расширенный. При подключении необходимо использовать роль "Оператор пользовательской станции" (ID=12) и тип станции "Пользовательская станция" (ID=10).

Для заданий на данных этапах всегда выполняется пред- и постобработка, вне зависимости от типа этапа, указанного при вызове метода CloseTaskEx (для других этапов постобработка выполняется только в том случае, если указан этап требуемого типа, например, "Обработка после верификации"). При предобработке формируются XML-файлы с описанием документов задания. Необходимо загрузить их с помощью POST-запроса, внести необходимые изменения и сохранить на сервере, после чего закрыть задание с помощью метода CloseTaskEx. При постобработке информация из XML-файлов, описывающих документы, будет сохранена в базе данных ABBYY FlexiCapture 10.


Сканирование документов

Для сканирования документов необходимо выполнить следующие действия:

  • Открыть сессию;
  • Открыть проект;
  • Создать новый пакет;
  • Открыть созданный пакет;
  • Добавить в него страницы / документы;
  • Закрыть пакет;
  • Запустить пакет в обработку;
  • Закрыть проект;
  • Закрыть сессию.


Верификация документов

Для верификации документов необходимо выполнить следующие действия:

  • Открыть сессию;
  • Открыть проект;
  • Запросить очередное задание;
  • Открыть пакет, указанный в задании;
  • Запросить список документов задания;
  • Запросить с сервера файлы, прикрепленные либо к заданию (этап верификации данных), либо к документу (этап верификации);
  • При необходимости – модифицировать и сохранить на сервере файлы задания;
  • Вернуть задание на сервер;
  • Закрыть проект;
  • Закрыть сессию.


Повторное сканирование документов

Для повторного сканирования документов необходимо выполнить следующие действия:

  • Открыть сессию;
  • Открыть проект;
  • Запросить очередное задание;
  • Запросить информацию о задании
  • Открыть пакет, указанный в задании;
  • Запросить список документов задания;
  • Изменить изображения страниц или добавить документы/страницы/изображения;
  • Вернуть задание на сервер на этап сканирования;
  • Закрыть проект;
  • Закрыть сессию.


Получение результатов обработки

Для получения результатов обработки необходимо выполнить следующие действия:

  • Открыть сессию;
  • Открыть проект;
  • Получить список файлов с результатами экспорта документов;
  • Получить файлы с результатами экспорта документов;
  • Закрыть проект;
  • Закрыть сессию.


Справочная информация о Web Services API сервера приложений ABBYY FlexiCapture 10

В данном разделе приведена справочная информация о Web Services API: описание доступных методов, используемых типов данных и работы с файлами.


Методы программного интерфейса

С помощью методов программного интерфейса осуществляется управление сервером приложений.

Замечание. Некоторые методы перекрывают функциональность реализованных в предыдущей версии. Тем не менее, старые методы оставлены для обеспечения совместимости существующих приложений.

Сессии | Проекты
Типы пакетов | Пакеты
Задания | Документы
Страницы | Мандаты лицензирования
Пользователи | Файлы
Приложения | Журнал
Шаблоны | Прочее

Сессии

CloseSession | Закрыть сессию
IsSessionExists | Проверить существование сессии
OpenSession | Открыть сессию подключения станции сканирования
OpenSessionEx | Открыть сессию подключения с указанием типов роли и станции

Проекты

CloseProject | Закрыть проект
GetProjects | Получить список пакетов, загруженных на сервер приложений
GetProjectsForUser | Получить список проектов, к которым пользователю предоставлен доступ
OpenProject | Открыть проект

Типы пакетов

GetBatchType | Получить информацию о типе пакетов
GetBatchTypes | Получить список типов пакетов
GetProcessingStages | Получить список этапов обработки
GetProcessingStagesExt | Получить расширенную информацию об этапах обработки
HasRightsToBatchType | Проверить права доступа роли пользователя к типу пакетов

Пакеты

AddNewBatch | Добавить новый пакет
AddNewImage | Добавить в пакет изображение
CloseBatch | Закрыть (разблокировать) пакет
DeleteBatch | Удалить пакет
GetBatch | Получить информацию о пакете
GetBatches | Получить список пакетов проекта
GetBatchPercentCompleted | Получить информацию об обработке пакета
GetDetailedBatch | Получить расширенную информацию о пакете
GetDetailedBatches | Получить расширенную информацию о пакетах
OpenBatch | Открыть (заблокировать) пакет
ProcessBatch | Запустить обработку пакета

Задания

CancelTask | Прекратить выполнение задания
CloseTask | Закрыть задание
CloseTaskEx | Закрыть задание и отправить его на этап обработки
CreateTask | Создать задание
GetAvailableTasks | Получить список доступных заданий на этапах обработки указанного типа
GetAvailableTasksByStageId | Получить список доступных заданий на указанных этапах обработки
GetAvailableQueues | Получить набор записей о доступных пользователю этапах обработки
GetCurrentTask | Получить идентификатор задания, полученного с помощью метода GetTask и еще не обработанного.
GetPostponedTasks | Получить список отложенных заданий
GetTask | Выбрать наиболее приоритетное задание на этапах указанного типа и открыть его для обработки
GetTaskByStageId | Выбрать наиболее приоритетное задание на указанных этапах и открыть его для обработки
GetTaskDocuments | Получить список документов задания
GetTaskInfo | Получить информацию о задании
GetTaskInfoExt | Получить расширенную информацию о задании
OpenTask | Открыть задание
PostponeTask | Отложить выполнение задания
SendTask | Отправить задание на указанный этап обработки
SendTaskToException | Отправить задание в Исключения

Документы

AddNewDocument | Добавить новый документ
AddNewDocumentEx | Добавить новый документ с указанием дополнительной информации
AddNewEmptyDocument | Добавить пустой документ (не содержащий изображения)
AddNewImage | Добавить в пакет изображение
DeleteDocument | Удалить документ
GetDocument | Получить информацию о документе
GetDocumentResultList | Получить список файлов, в которые были экспортированы результаты обработки документа
GetDocuments | Получить список документов в пакете
LoadDocumentResult | Получить файл, в который были экспортированы результаты обработки документа
SetDocumetnProperties | Указать регистрационные параметры документа

Страницы

AddNewPage | Добавить в документ изображение страницы
AddNewPageEx | Добавить в документ изображение страницы с описанием
DeletePage | Удалить страницу документа
ReplacePageImage | Заменить изображение страницы документа

Мандаты лицензирования

GetNewTicket | Получить новый мандат
ReleaseTicket | Освободить мандат
UpdateTicket | Обновить состояние мандата

Пользователи

AddUserIfNotExist | Получить идентификатор текущего пользователя, при необходимости - создать запись в базе данных
FindUser | Получить идентификатор пользователя с указанным именем
GetAvailableQueues | Получить набор записей о доступных пользователю этапах обработки
GetProjectsForUser | Получить список проектов, к которым пользователю предоставлен доступ
GetUser | Получить информацию о пользователе по идентификатору
GetUsers | Получить список пользователей
GetUserStatistics | Получить набор записей о числе пакетов, документов и страниц, состояние которых изменилось на "обработанные" за указанный период времени.
HasRightsToBatchType | Проверить права доступа роли пользователя к типу пакетов

Файлы

GetCustomFileNames | Получить список пользовательских файлов, хранящихся на сервере приложений
LoadCustomFile | Загрузить пользовательский файл с сервера приложений
SaveCustomFile | Сохранить пользовательский файл на сервере приложений
RemoveCustomFile | Удалить пользовательский файл с сервера приложений

Приложения

GetAttachmentNames | Получить список приложений
LoadAttachment | Загрузить приложение
RemoveAttachment | Удалить приложение
SaveAttachment | Добавить приложение

Шаблоны

GetTemplates | Получить список определений документов в проекте
GetBatchTypeTemplates | Возвращает список идентификаторов определений документов, прикрепленных к типу пакета

Журнал

WriteToLog Записать в журнал сервера приложений информацию о событиях

Прочее

GetSettingValue | Получить из базы данных именованный параметр
SetSettingValue | Сохранить в базе данных именованный параметр


Сессии

Методы программного интерфейса позволяют выполнять с сессиями следующие действия:

CloseSession | Закрыть сессию
IsSessionExists | Проверить существование сессии
OpenSession | Открыть сессию подключения станции сканирования
OpenSessionEx | Открыть сессию подключения с указанием типов роли и станции


CloseSession

Назначение

Закрывает ранее открытую сессию подключения к серверу приложений.

Определение

void CloseSession(int sessionId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений, которую необходимо закрыть
Возвращаемое значение

Отсутствует.


IsSessionExists

Назначение

Позволяет проверить существование сессии соединения с указанным идентификатором.

Определение

bool IsSessionExists(int sessionId);

Параметры
Название | Тип | Значение
sessionID | int | Идентификатор сессии.
Возвращаемое значение
Тип Значение
bool Признак существования сессии с указанным идентификатором:
  • True - сессия существует;
  • False - сессия не существует.


OpenSession

Назначение

Открывает сессию подключения станции сканирования к серверу приложений.

Замечание. Данный метод оставлен для совместимости с предыдущими версиями Web Services API. Используйте метод OpenSessionEx.

Определение

int OpenSession();

Параметры

Отсутствуют.

Возвращаемое значение
Тип | Значение
int | Идентификатор открытой сессии подключения


OpenSessionEx

Назначение

Открывает сессию подключения к серверу приложений.

Замечание. Данный метод разработан как замена метода OpenSession в ранних версиях Web Services API.

Определение

int OpenSession Ex(int roleType, int stationType);

Параметры
Название | Тип | Значение
roleType | int | Тип роли, с которым осуществляется подключение. Возможные значения: см. Role.
stationType | int | Тип подключающейся станции. Возможные значения: см. WorkstationType.
Возвращаемое значение
Тип | Значение
int | Идентификатор открытой сессии подключения


Проекты

Методы программного интерфейса позволяют выполнять с проектами следующие действия:

CloseProject | Закрыть проект
GetProjects | Получить список пакетов, загруженных на сервер приложений
GetProjectsForUser | Получить список проектов, к которым пользователю предоставлен доступ
OpenProject | Открыть проект


CloseProject

Назначение

Закрывает ранее открытый проект.

Определение

void CloseProject(int sessionId, int projectId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор закрываемого проекта
Возвращаемое значение

Отсутствует.


GetProjects

Назначение

Позволяет получить информацию о всех проектах на сервере приложений.

Определение

Project[] GetProjects();

Параметры

Отсутствуют

Возвращаемое значение
Тип | Значение
Project[] | Набор записей, каждая из которых содержит информацию об одном из проектов


OpenProject

Назначение

Открывает проект для дальнейшей работы с ним.

Замечание. Открытый проект нельзя удалить. Для удаления проекта необходимо закрыть его с помощью метода CloseProject .

Определение

int OpenProject(int sessionId, string projectNameOrGuid);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectNameOrGuid | string | Имя или GUID открываемого проекта
Возвращаемое значение
Тип | Значение
int | Идентификатор открытого проекта


Типы пакетов

Методы программного интерфейса позволяют выполнять следующие действия с типами пакетов:

GetBatchType | Получить информацию о типе пакетов
GetBatchTypes | Получить список типов пакетов
GetProcessingStages | Получить список этапов обработки
GetProcessingStagesExt | Получить расширенную информацию об этапах обработки
HasRightsToBatchType | Проверить права доступа роли пользователя к типу пакетов


GetBatchType

Назначение

Позволяет получить информацию о типе пакетов.

Определение

BatchType GetBatchType(int batchTypeId);

Параметры
Название | Тип | Значение
batchTypeId | int | Идентификатор типа пакетов, о котором необходимо получить информацию
Возвращаемое значение
Тип | Значение
BatchType | Информация о типе пакетов


GetBatchTypes

Назначение

Позволяет получить информацию о всех типах пакетов в проекте.

Определение

BatchType [] GetBatchTypes(int projectId);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта, о типах пакетов которого необходимо получить информацию
Возвращаемое значение
Тип | Значение
BatchType [] | Набор записей, каждая из которых содержит информацию об одном из типов пакетов проекта


GetProcessingStages

Назначение

Позволяет получить информацию об этапах обработки.

Определение

ProcessingStage[] Get ProcessingStages(int projectId, int batchTypeId, int stageType, string Name);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта, об этапах которого необходимо получить информацию
batchTypeId | int | Идентификатор типа пакета. Также возможны значения: 0 – тип пакета "По умолчанию"; -1 – все типы пакетов.
stageType | int | Идентификатор типа этапа. Возможные значения: см. ProcessingStage. Используйте значение "-1" для получения информации об этапах обработки всех типов.
Name | string | Наименование этапа обработки. Используйте пустую строку ("") для получения информации обо всех этапах обработки.
Возвращаемое значение
Тип | Значение
ProcessingStage [] | Набор записей, каждая из которых содержит информацию об одном из этапов обработки


GetProcessingStagesExt

Назначение

Позволяет получить расширенную информацию об этапах обработки.

Опеределение

ProcessingStagesExt[] GetProcessingStagesExt(int projectId, int batchTypeId, int stageType, string Name);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта, об этапах которого необходимо получить информацию
batchType | int | Идентификатор типа пакета. Также возможны значения: 0 – тип пакета "по умолчанию" -1 – все типы пакетов
stageType | int | Идентификатор типа этапа. Возможные значения: см. ProcessingStage. Используйте значение "-1" для получения информации об этапах обработки всех типов.
Name | string | Наименование этапа обработки. Используйте пустую строку ("") для получения информации обо всех этапах обработки.
Возвращаемое значение
Тип | Значение
ProcessingStagesExt[] | Набор записей, каждая из которых содержит расширенную информацию об одном из этапов обработки


HasRightsToBatchType

Назначение

Позволяет проверить наличие прав доступа к типам пакетов для указанной роли пользователя.

Определение

bool HasRightsToBatchType(int sessionId, int projectId, int batchTypeId, int roleType);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта
batchTypeId | int | Идентификатор типа пакетов. 0 - тип пакетов "по умолчанию", -1 - проверка наличия прав доступа хотя бы к одному типу пакетов.
roleType | int | Роль пользователя. Возможные значения: см. Role. Значение параметра roleType можно посмотреть в таблице Role базы данных.
Возвращаемое значение
Тип Значение
bool Наличие прав доступа. Возможные значения:
  • True - доступ разрешен;
  • False - доступ запрещен.


Пакеты

Методы программного интерфейса позволяют выполнять следующие действия с пакетами:

AddNewBatch | Добавить новый пакет
AddNewImage | Добавить в пакет изображение
CloseBatch | Закрыть (разблокировать) пакет
DeleteBatch | Удалить пакет
GetBatch | Получить информацию о пакете
GetBatches | Получить список пакетов проекта
GetBatchPercentCompleted | Получить информацию об обработке пакета
GetBatchType | Получить информацию о типе пакетов
GetBatchTypes | Получить список типов пакетов
GetDetailedBatch | Получить расширенную информацию о пакете
GetDetailedBatches | Получить расширенную информацию о пакетах
OpenBatch | Открыть (заблокировать) пакет
ProcessBatch | Запустить обработку пакета


AddNewBatch

Назначение

Добавляет в проект новый пакет.

Определение

int AddNewBatch(int sessionId, int projectId,  Batch batch);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта, в который необходимо добавить пакет
batch | Batch | Параметры добавляемого пакета
Возвращаемое значение
Тип | Значение
int | Идентификатор созданного пакета


AddNewImage

Назначение

Добавляет в пакет изображение (в том числе многостраничное).

Внимание. Добавленные изображения будут доступны только после предварительной обработки. После добавления всех изображений запустите обработку пакета с помощью метода ProcessBatch либо верните задание с помощью метода CloseTaskEx на этап импорта (если изображения добавлены в документы задания, открытого с помощью метода OpenTask).

Определение

void AddNewImage(int sessionId, int batchId,  File file);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в который необходимо добавить изображение
file | File | Файл, содержащий изображение
Возвращаемое значение

Отсутствует.


CloseBatch

Назначение

Снимает блокировку от удаления пакета (закрывает пакет).

Определение

void CloseBatch(int sessionId, int batchId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, с которого необходимо снять блокировку от удаления
Возвращаемое значение

Отсутствует.


DeleteBatch

Назначение

Удаляет указанный пакет.

Внимание. Вместе с пакетом удаляются также результаты экспорта входящих в него документов!

Определение

bool DeleteBatch(int sessionId, int batchId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, который необходимо удалить
Возвращаемое значение
Тип Значение
bool Признак успешного завершения операции:
  • True - пакет был успешно удален;
  • False - удалить пакет не получилось.


GetBatch

Назначение

Позволяет получить информацию о пакете.

Определение

Batch GetBatch(int batchId);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, о котором необходимо получить информацию
Возвращаемое значение
Тип | Значение
Batch | Информация о пакете


GetBatches

Назначение

Позволяет получить информацию о всех пакетах проекта.

Определение

Batch [] GetBatches(int projectId);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта, о пакетах которого необходимо получить информацию
Возвращаемое значение
Тип | Значение
Batch [] | Набор записей, каждая из которых содержит информацию об одном из пакетов проекта. Не включает пакеты, созданные на Станции ввода документов.


GetBatchPercentCompleted

Назначение

Позволяет получить информацию о ходе обработки пакета.

Определение

int GetBatchPercentCompleted(int batchId);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, об обработке которого необходимо получить информацию
Возвращаемое значение
Тип | Значение
int | Процент выполнения задания (100% - задание завершено)


GetDetailedBatch

Назначение

Позволяет получить расширенную информацию о пакете.

Определение

DetailedBatch GetDetailedBatch(int batchId);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, о котором необходимо получить информацию
Возвращаемое значение
Тип | Значение
DetailedBatch | Информация о пакете


GetDetailedBatches

Назначение

Позволяет получить расширенную информацию о пакетах.

Определение

DetailedBatch GetDetailedBatches(int batchId, int sessionId, bool onlyPrivateBatches);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, о котором необходимо получить информацию
sessionId | int | Идентификатор сессии подключения к серверу приложений
onlyPrivateBatches bool Признак возращения пакетов, созданных на Станции ввода документов:
  • True - возвращаются все пакеты, созданные на Станции ввода документов. На этапе верификации эти пакеты доступны только оператору, создавшему их на этапе сканирования;
  • False - возвращаются пакеты, созданные на всех станциях, кроме Станции ввода документов.
Возвращаемое значение
Тип | Значение
DetailedBatch[] | Расширенная информация о пакетах


OpenBatch

Назначение

Открывает пакет (блокирует его удаление для других сессий подключения). Для удаления пакета необходимо закрыть его с помощью метода CloseBatch .

Определение

bool OpenBatch(int sessionId, int batchId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор открываемого пакета
Возвращаемое значение
Тип Значение
bool Признак успешного завершения операции:
  • True - пакет успешно открыт;
  • False - открыть пакет не удалось.


ProcessBatch

Назначение

Запускает обработку пакета. Пакет направляется на стадию обработки Импорт.

Определение

void ProcessBatch(int sessionId, int batchId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, обработку которого надо запустить.
Возвращаемое значение

Отсутствует.


Задания

Методы программного интерфейса позволяют выполнять с заданиями следующие действия:

CancelTask | Прекратить выполнение задания
CloseTask | Закрыть задание
CloseTaskEx | Закрыть задание и отправить его на этап обработки
CreateTask | Создать задание из набора документов пакета
GetAvailableTasks | Получить список доступных заданий на этапах обработки указанного типа
GetAvailableTasksByStageId | Получить список доступных заданий на указанных этапах обработки
GetAvailableQueues | Получить набор записей о доступных пользователю этапах обработки
GetCurrentTask | Получить идентификатор задания, полученного с помощью метода GetTask и еще не обработанного.
GetPostponedTasks | Получить список отложенных заданий
GetTask | Выбрать наиболее приоритетное задание на этапах указанного типа и открыть его для обработки
GetTaskByStageId | Выбрать наиболее приоритетное задание на указанных этапах и открыть его для обработки
GetTaskDocuments | Получить список документов задания
GetTaskInfo | Получить информацию о задании
GetTaskInfoExt | Получить расширенную информацию о задании
OpenTask | Открыть задание
PostponeTask | Отложить выполнение задания
SendTask | Отправить задание на указанный этап обработки
SendTaskToException | Отправить задание в Исключения

Внимание. C помощью Web Services API доступны задания только на этапах, для которых в проекте разрешены web-станции (пункт главного меню Проект>Свойства проекта…, закладка Процесс обработки)


CancelTask

Назначение

Прекращает обработку задания.

Определение

void CancelTask(int sessionId, int taskId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, обработку которого необходимо прекратить
Возвращаемое значение

Отсутствует.


CloseTask

Назначение

Возвращает задание для дальнейшей обработки.

Внимание. При маршрутизации с помощью методов Web Services API другие способы маршрутизации, такие как условия входа документа на этап обработки или скрипты, не используются. Исключением являются этапы пользовательского типа (ID=2000) - для них всегда выполняется пред- и постобработка и маршрутизация работает корректно.

Замечание. Данный метод оставлен для совместимости с предыдущими версиями Web Services API. Используйте метод CloseTaskEx.

Определение

void CloseTask(int sessionId, int taskId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, которое необходимо вернуть для дальнейшей обработки
Возвращаемое значение

Отсутствует.


CloseTaskEx

Назначение

Возвращает задание для дальнейшей обработки.

Внимание. При маршрутизации с помощью методов Web Services API другие способы маршрутизации, такие как условия входа документа на этап обработки или скрипты, не используются. Исключением являются этапы пользовательского типа (ID=2000) - для них всегда выполняется пред- и постобработка и маршрутизация работает корректно.

Замечание. Данный метод разработан как замена метода CloseTask в ранних версиях Web Services API.

Определение

void CloseTaskEx(int sessionId, int taskId, int stageType);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, которое необходимо вернуть для дальнейшей обработки
stageType int Идентификатор типа этапа, на который необходимо отправить задание. Возможные значения: см. ProcessingStage.

Замечание. Чтобы вернуть задание для дальнейшей обработки, нужно указать значение параметра stageType, равное 410 или 510.

Замечание. На этапе "Верификация данных" внесенные изменения сохраняются в задании. Для того, чтобы перенести их в документы, необходимо загрузить на сервер xml-файл с информацией о задании и при закрытии задания отправлять его на этап "Обработка после верификации данных". Также для обработки этапа "Верификация данных" методами Web Services API на закладке Процесс обработки диалогового окна Свойства проекта должна быть подключена web-станция верификации данных.

Возвращаемое значение

Отсутствует.


CreateTask

Назначение

Создает задание из наборов документа одного пакета.

Определение

int GetTask(int sessionId, int stageExternalId, int priority, string comment, int UserId, int[] docIds, bool setAsCurrentTask);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
stageExternalId | int | Идентификатор этапа, на который будет помещено задание
priority | int | Приоритет задания. Допустимые значения: см. ProcessingPriority.
comment | string | Текст комментария к заданию
userId | int | Идентификатор пользователя, которому будет назначено задание. "0" означает, что задание может быть обработано любым оператором.
docIds | int[] | Идентификаторы документов пакета
setAsCurrentTask bool Признак определяет, будет ли задание добавлено на этап в состоянии "в обработке" или будет помещено в очередь. Допустимые значения:
  • True - задание будет иметь состояние "в обработке";
  • False - задание будет помещено в очередь.
Возвращаемое значение
Тип | Значение
int | Идентификатор задания


GetAvailableTasks

Назначение

Позволяет получить список доступных заданий, находящихся на этапах обработки указанного типа.

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

Определение

TaskList GetAvailableTasks(int sessionId, int projectId, int processingStage);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта, для которого требуется получить список заданий
processingStage | int | Идентификатор типа этапа. Возможные значения: см. ProcessingStage.
Возвращаемое значение
Тип | Значение
TaskList | Список доступных заданий


GetAvailableTasksByStageId

Назначение

Позволяет получить список доступных заданий, находящихся на указанных этапах обработки.

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

Определение

TaskList GetAvailableTasksByStageId(int sessionId, int projectId, int[] stageIds);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта, для которого требуется получить список заданий
stageIds | int[] | Идентификаторы этапов обработки
Возвращаемое значение
Тип | Значение
TaskList | Список доступных заданий


GetCurrentTask

Назначение

Возвращает идентификатор задания, полученного с помощью метода GetTask и не закрытого.

Определение

int GetCurrentTask (int sessionId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
Возвращаемое значение
Тип | Значение
int | Идентификатор задания


GetPostponedTasks

Назначение

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

Определение

TaskList GetPostponedTasks(int sessionId, int projectId, int processingStage);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта, для которого требуется получить список заданий
processingStage | int | Идентификатор этапа. Возможные значения: см. ProcessingStage .
Возвращаемое значение
Тип | Значение
TaskList | Список доступных заданий


GetTask

Назначение

Выбирает наиболее приоритетное задание и открывает его для обработки. При этом задание блокируется (не может быть открыто другими пользователями).

Внимание. Необходимо открыть задание перед тем, как выполнять с ним какие-нибудь действия!

Определение

int GetTask(int sessionId, int projectId, int stageType, bool onlyPreprocessedTask);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта
stageType | int | Идентификатор типа этапа. Возможные значения: см. ProcessingStage.
onlyPreprocessedTask bool Признак отбора заданий, прошедших предобработку. Возможные значения:
  • True - отбирать только задания, прошедшие предобработку;
  • False - выбирать среди всех заданий.
Возвращаемое значение
Тип | Значение
int | Идентификатор задания


GetTaskByStageId

Назначение

Выбирает наиболее приоритетное задание и открывает его для обработки. При этом задание блокируется (не может быть открыто другими пользователями).

Внимание. Необходимо открыть задание перед тем, как выполнять с ним какие-нибудь действия!

Определение

int GetTaskByStageId(int sessionId, int projectId, int[] stageIds, bool onlyPreprocessedTask);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта
stageIds | int[] | Идентификаторы этапов обработки
onlyPreprocessedTask bool Признак отбора заданий, прошедших предобработку. Возможные значения:
  • True - отбирать только задания, прошедшие предобработку;
  • False - выбирать среди всех заданий.
Возвращаемое значение
Тип | Значение
int | Идентификатор задания


GetTaskDocuments

Назначение

Позволяет получить информацию о всех документах задания.

Определение

TaskDocumentList GetTaskDocuments(int taskId);

Параметры
Название | Тип | Значение
taskId | int | Идентификатор задания, о документах которого необходимо получить информацию
Возвращаемое значение
Тип | Значение
TaskDocumentList | Список документов в задании


GetTaskInfo

Назначение

Позволяет получить информацию о задании.

Определение

Task GetTaskInfo(int taskId);

Параметры
Название | Тип | Значение
taskId | int | Идентификатор задания, о котором надо получить информацию
Возвращаемое значение
Тип | Значение
Task | Информация о документе


GetTaskInfoExt

Назначение

Позволяет получить расширенную информацию о задании.

Определение

TaskExt GetTaskInfoExt(int taskId);

Параметры
Название | Тип | Значение
taskId | int | Идентификатор задания, о котором надо получить информацию
Возвращаемое значение
Тип | Значение
TaskExt | Расширенная информация о документе


OpenTask

Назначение

Открывает задание для дальнейшей работы с ним. При этом задание блокируется (не может быть открыто другими пользователями).

Внимание. Необходимо открыть задание перед тем, как выполнять с ним какие-нибудь действия!

Определение

bool OpenTask(int sessionId, int taskId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор открываемого задания
Возвращаемое значение
Тип Значение
bool Признак успешного завершения операции:
  • True - задание успешно открыто;
  • False - открыть задание не удалось.


PostponeTask

Назначение

Откладывает задание для обработки в другое время.

Определение

void PostponeTask(int sessionId, int taskId, string comment);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, которое необходимо отложить
comment | string | Текст комментария к отложенному заданию.
Возвращаемое значение

Отсутствует.


SendTask

Назначение

Отправляет задание целиком на указанный этап обработки.

Определение

void SendTask(int sessionId, int taskId, int stageId, string comment);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, которое необходимо отправить на этап Исключений
stageId | int | Идентификатор этапа, на который необходимо отправить задание
comment | string | Текст комментария к заданию.
Возвращаемое значение

Отсутствует.


SendTaskToException

Назначение

Отправляет задание на этап Исключений.

Определение

void SendTaskToException(int sessionId, int taskId, string comment, bool needPostprocessing);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
taskId | int | Идентификатор задания, которое необходимо отправить на этап Исключений
comment | string | Текст комментария к заданию.
needPostprocessing bool Признак необходимости постобработки. Возможные значения:
  • True - постобработка необходима;
  • False - постобработка не требуется.
Возвращаемое значение

Отсутствует.


Документы

Методы программного интерфейса позволяют выполнять следующие действия с документами:

AddNewDocument | Добавить новый документ
AddNewDocumentEx | Добавить новый документ с указанием дополнительной информации
AddNewEmptyDocument | Добавить пустой документ (не содержащий изображения)
AddNewImage | Добавить в пакет изображение
DeleteDocument | Удалить документ
GetDocument | Получить информацию о документе
GetDocumentResultList | Получить список файлов, в которые были экспортированы результаты обработки документа
GetDocuments | Получить список документов в пакете
LoadDocumentResult | Получить файл, в который были экспортированы результаты обработки документа
SetDocumetnProperties | Указать регистрационные параметры документа


AddNewDocument

Назначение

Добавляет в пакет новый документ из файла с изображением.

Внимание. Добавленные документы будут доступны только после предварительной обработки изображений. Для этого после добавления документов необходимо запустить обработку с помощью метода ProcessBatch.

Замечание. Данный метод оставлен для совместимости с предыдущими версиями Web Services API. Используйте метод AddNewDocumentEx.

Определение

int AddNewDocument(int sessionId, int batchId,  File file);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в который необходимо добавить документ
file | File | Файл, содержащий изображение документа
Возвращаемое значение
Тип | Значение
int | Идентификатор созданного документа


AddNewDocumentEx

Назначение

Добавляет в пакет новый документ из файла с изображением.

Внимание. Добавленные документы будут доступны только после предварительной обработки изображений. Для этого после добавления документов необходимо запустить обработку с помощью метода ProcessBatch.

Замечание. Данный метод разработан как замена метода AddNewDocument в ранних версиях Web Services API.

Определение

int AddNewDocumentEx(int sessionId, int batchId, DocumentEx document, File file, bool excludeFromAutomaticAssembling);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в который необходимо добавить документ
document | DocumentEx | Описание создаваемого документа
file | File | Файл, содержащий изображение документа. Для создания документа без изображения используйте пустой параметр file (file.Name = "", file.Bytes = new bytes [0])
excludeFromAutomaticAssembling bool Признак исключения документа из процесса сборки документов:
  • True - документ уже собран, в процессе сборки не участвует;
  • False - документ участвует в процессе сборки.

Замечание. Также файл с изображением документа можно добавить с помощью POST-запроса. Для этого с помощью данного метода создайте документ с пустым файлом (file.Name = "FileName", file.Bytes = new bytes [0]). Далее загрузите изображение с помощью POST-запроса со следующими параметрами:

Action = Save

objectType = 0

objectId = documentId, где documentId – идентификатор документа, возвращенный методом AddNewDocumentEx.

version = 0

streamName = "FileName", где FileName – имя файла, указанное при вызове метода AddNewDocumentEx.

Возвращаемое значение
Тип | Значение
int | Идентификатор созданного документа


AddNewEmptyDocument

Назначение

Добавляет в пакет пустой документ. В дальнейшем к нему можно будет прикрепить страницы (метод AddNewPageEx).

Замечание. Данный метод оставлен для совместимости с предыдущими версиями программного интерфейса. Для создания документа без изображения используйте метод AddNewDocumentEx с пустым параметром file (file.Name = "", file.Bytes = new bytes [0]).

Определение

int AddNewEmptyDocument(int sessionId, int batchId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в который необходимо добавить документ
Возвращаемое значение
Тип | Значение
int | Идентификатор созданного пустого документа


DeleteDocument

Назначение

Удаляет указанный документ.

Внимание. Вместе с документом удаляются также результаты его экспорта!

Определение

bool DeleteDocument(int sessionId, int batchId, int documentId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, документ которого необходимо удалить
documentId | int | Идентификатор документа, который необходимо удалить
Возвращаемое значение
Тип Значение
bool Признак успешного завершения операции:
  • True - документ был успешно удален;
  • False - удалить документ не получилось.


GetDocument

Назначение

Позволяет получить расширенную информацию о документе.

Определение

DocumentEx GetDocument(int batchId, int documentId);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, о документе которого необходимо получить информацию
documentId | int | Идентификатор документа, о котором необходимо получить информацию
Возвращаемое значение
Тип | Значение
DocumentEx | Информация о документе


GetDocumentResultList

Назначение

Позволяет получить список файлов, в которые были экспортированы результаты обработки документа.

Определение

string[] GetDocumentResultsList(int documentId);

Параметры
Название | Тип | Значение
documentId | int | Идентификатор документа, о котором необходимо получить информацию
Возвращаемое значение
Тип | Значение
string[] | Список файлов, в который были экспортированы результаты обработки документа


GetDocuments

Назначение

Позволяет получить информацию о всех документах пакета.

Определение

Document [] GetDocuments(int batchId);

Параметры
Название | Тип | Значение
batchId | int | Идентификатор пакета, о документах которого необходимо получить информацию
Возвращаемое значение
Тип | Значение
Document[] | Набор записей, каждая из которых содержит информацию об одном из документов пакета


LoadDocumentResult

Назначение

Позволяет получить файл, в который были экспортированы результаты обработки документа.

Определение

File LoadDocumentResult(int documentId, string fileName);

Параметры
Название | Тип | Значение
documentId | int | Идентификатор документа, результаты экспорта которого надо получить
fileName | string | Имя файла, который необходимо получить с сервера
Возвращаемое значение
Тип | Значение
File | Файл, в который были экспортированы результаты обработки документа


SetDocumentProperties

Назначение

Позволяет указать регистрационные параметры документа.

Определение

void SetDocumentProperties(int sessionId, int batchId, int documentId, RegistrationProperty [] properties);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в состав которого входит документ
documentId | int | Идентификатор документа, для которого необходимо указать регистрационные параметры
properties | RegistrationProperty [] | Набор записей, каждая из которых описывает один из регистрационных параметров документа
Возвращаемое значение

Отсутствует.


Страницы

Методы программного интерфейса позволяют выполнять со страницами следующие действия:

AddNewPage | Добавить в документ изображение страницы
AddNewPageEx | Добавить в документ изображение страницы с описанием
DeletePage | Удалить страницу документа
ReplacePageImage | Заменить изображение страницы документа


AddNewPage

Назначение

Добавляет в документ изображение страницы.

Внимание. Добавленные изображения будут доступны только после предварительной обработки. После добавления всех изображений запустите обработку пакета с помощью метода ProcessBatch либо верните задание с помощью метода CloseTaskEx на этап импорта (если изображения добавлены в документы задания, открытого с помощью метода OpenTask).

Замечание. Данный метод оставлен для совместимости с предыдущими версиями Web Services API. Используйте метод AddNewPageEx.

Определение

int AddNewPage(int sessionId, int documentId,  File file);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
documentId | int | Идентификатор документа, в который надо добавить страницу
file | File | Файл, содержащий изображение страницы
Возвращаемое значение
Тип | Значение
int | Идентификатор добавленной страницы


AddNewPageEx

Назначение

Добавляет в документ новую страницу из файла с изображением.

Внимание. Добавленные изображения будут доступны только после предварительной обработки. После добавления всех изображений запустите обработку пакета с помощью метода ProcessBatch либо верните задание с помощью метода CloseTaskEx на этап импорта (если изображения добавлены в документы задания, открытого с помощью метода OpenTask).

Замечание. Данный метод разработан как замена метода AddNewPage в предыдущих версиях Web Services API.

Определение

int AddNewPageEx(int sessionId, int batchId, int documentId, PageEx page, File file);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в который входит документ
documentId | int | Идентификатор документа, в который необходимо добавить страницу
page | PageEx | Описание страницы
file | File | Файл, содержащий изображение страницы

Замечание. Также файл с изображением страницы можно добавить с помощью POST-запроса. Для этого с помощью данного метода создайте страницу без файла. Далее загрузите страницу с помощью POST-запроса со следующими параметрами:

Action = Save

objectType = 0

objectId = documentId

version = 0

streamName = "Page pageId", где pageId – идентификатор страницы, возвращенный методом AddNewPageEx.

Возвращаемое значение
Тип | Значение
int | Идентификатор добавленной страницы


DeletePage

Назначение

Удаляет страницу из документа.

Определение

bool DeletePage(int sessionId, int batchId, int documentId, int pageId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
batchId | int | Идентификатор пакета, в котором находится документ
documentId | int | Идентификатор документа, страницу которого необходимо удалить
pageId | int | Идентификатор страницу, которую необходимо удалить
Возвращаемое значение
Тип Значение
bool Признак успешного завершения операции:
  • True - страница была успешно удалена;
  • False - удалить страницу не получилось.


ReplacePageImage

Назначение

Заменяет изображение страницы в документе.

Внимание. Добавленные изображения будут доступны только после предварительной обработки. После добавления всех изображений запустите обработку пакета с помощью метода ProcessBatch либо верните задание с помощью метода CloseTaskEx на этап импорта (если изображения добавлены в документы задания, открытого с помощью метода OpenTask).

Определение

void ReplacePageImage(int sessionId, int documentId, int pageId, File file);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
documentId | int | Идентификатор документа, в котором надо заменить изображение страницы
pageId | int | Идентификатор страницы, изображение которой надо заменить
file | File | Файл, содержащий изображение

Замечание. Также файл с изображением страницы можно изменить с помощью POST-запроса. Для этого вызовите данный метод, а затем загрузите изображение страницы с помощью POST-запроса со следующими параметрами:

Action = Save

objectType = 0

objectId = documentId

version = 0

streamName = "Page pageId", где pageId – идентификатор страницы, изображение которой необходимо заменить.

Возвращаемое значение

Отсутствует.


Пользователи

Методы программного интерфейса пользователя позволяют выполнять следующие операции с учетными записями:

AddUserIfNotExist | Получить идентификатор текущего пользователя, при необходимости - создать запись в базе данных
FindUser | Получить идентификатор пользователя с указанным именем
GetAvailableQueues | Получить набор записей о доступных пользователю этапах обработки
GetProjectsForUser | Получить список проектов, к которым пользователю предоставлен доступ
GetUser | Получить информацию о пользователе по идентификатору
GetUsers | Получить список пользователей
GetUserStatistics | Получить набор записей о числе пакетов, документов и страниц, состояние которых изменилось на "обработанные" за указанный период времени
HasRightsToBatchType | Проверить права доступа роли пользователя к типу пакетов


AddUserIfNotExist

Назначение

Возвращает идентификатор текущего пользователя. Если в базе данных записи о пользователе нет, создает запись.

Определение

int AddUserIfNotExist();

Параметры

Нет.

Возвращаемое значение
Тип | Значение
int | Идентификатор пользователя


FindUser

Назначение

Возращает идентификатор пользователя с указанным именем

Определение

int FindUser(string userLogin);

Параметры
Название | Тип | Значение
userLogin | string | Имя пользователя
Возвращаемое значение
Тип | Значение
int | Идентификатор пользователя


GetAvailableQueues

Назначение

Позволяет получить набор записей об этапах обработки, доступных пользователю.

Определение

Queue [] GetAvailableQueues(int sessionId, int projectId);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
projectId | int | Идентификатор проекта, для которого требуется получить список очередей
Возвращаемое значение
Тип | Значение
Queue [] | Набор записей о доступных пользователю этапах обработки


GetProjectsForUser

Назначение

Позволяет получить информацию о проектах на сервере приложений с учетом прав доступа пользователя.

Определение

Project[] GetProjectsForUser(int userId, int roleType);

Параметры
Название | Тип | Значение
userId | int | Идентификатор пользователя
roleType | int | Идентификатор типа роли пользователя. Возможные значения: см. Role. Значение параметра roleType можно посмотреть в таблице Role базы данных.
Возвращаемое значение
Тип Значение
Project[] Набор записей, каждая из которых содержит информацию об одном из проектов. Набор формируется в зависимости от значения входных параметров следующим образом:
  • userId<>0, roleType<>0 – проекты, в которых у указанного пользователя есть права доступа указанной роли хотя бы к одному из типов пакетов;
  • userId<>0, roleType=0 – проекты, в которых у указанного пользователя есть какие-либо права доступа хотя бы к одному из типов пакетов;
  • userId=0, roleType=0 – список всех проектов;
  • userId=0, roleType<>0 – пустой список.


GetUser

Назначение

Возвращает информацию о пользователе.

Определение

bool GetUser(int userID, out User user);

Параметры
Название | Тип | Значение
userId | int | Идентификатор пользователя
Возвращаемое значение
Тип | Значение
bool Признак наличия пользователя. Возможные значения:
  • True - пользователь найден;
  • False - пользователь не найден.
User | Информация о пользователе


GetUsers

Назначение

Возвращает список пользователей.

Определение

UserList GetUsers();

Параметры

Отсутствуют.

Возвращаемое значение
Тип | Значение
UserList | Список пользователей


GetUserStatistics

Назначение

Получает набор записей, каждая из которых содержит информацию о числе пакетов, документов и страниц, состояние которых изменилось на "обработанные" за указанный период времени.

Определение

UserStatistics [] GetUserStatistics(int userId, long fromDate, long toDate);

Параметры
Название | Тип | Значение
userId | int | Идентификатор пользователя
fromDate | long | Начальная дата подсчета статистики. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
toDate | long | Конечная дата подсчета статистики. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
Возвращаемое значение
Тип | Значение
UserStatistics[] | Набор записей, каждая из которых содержит информацию о числе пакетов, документов и страниц, состояние которых изменилось на "обработанные" за указанный период времени.


Мандаты

Мандаты лицензирования

Методы программного интерфейса пользователя позволяют выполнять следующие операции с мандатами:

GetNewTicket | Получить новый мандат
ReleaseTicket | Освободить мандат
UpdateTicket | Обновить состояние мандата


GetNewTicket

Назначение

Возвращает мандат лицензирования.

Определение

bool GetNewTicket(int sessionId, int stationType, out TicketInfo ticketInfo);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения
stationType | int | Тип станции, для которой нужно получить мандат. Возможные значения: см. WorkstationType. Замечание. Используйте значения WT_Verification и WT_Validation вместо WT_RemoteDataVerification и WT_RemoteVerification соответственно.
Возвращаемое значение
Тип | Значение
bool Признак получения мандата. Возможные значения:
  • True - мандат успешно получен;
  • False - получить мандат не удалось.
TicketInfo | Мандат лицензирования


ReleaseTicket

Назначение

Освобождает мандат лицензирования.

Определение

void ReleaseTicket(int sessionID, int ticketID);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения
ticketId | int | Идентификатор мандата лицензирования
Возвращаемое значение

Отсутствует.


UpdateTicket

Назначение

Обновляет мандат лицензирования.

Определение

bool UpdateTicket(int sessionId, int ticketId, out TicketInfo ticketInfo);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения
ticketId | int | Идентификатор мандата лицензирования
Возвращаемое значение
Тип | Значение
bool Признак обновления мандата. Возможные значения:
  • True - мандат успешно обновлен;
  • False - обновить мандат не удалось.
TicketInfo | Мандат лицензирования


Файлы

Методы программного интерфейса пользователя позволяют выполнять следующие операции с файлами:

GetCustomFileNames | Получить список пользовательских файлов, хранящихся на сервере приложений
LoadCustomFile | Загрузить пользовательский файл с сервера приложений
RemoveCustomFile | Удалить пользовательский файл с сервера приложений
SaveCustomFile | Сохранить пользовательский файл на сервере приложений


GetCustomFileNames

Назначение

Позволяет получить список пользовательских файлов, сохраненных на сервере приложений.

Определение

string[] GetCustomFileNames();

Параметры

Отсутствуют.

Возвращаемое значение
Тип | Значение
string[] | Список сохраненных файлов


LoadCustomFile

Назначение

Позволяет получить пользовательский файл, сохраненный на сервере приложений.

Определение

File LoadCustomFile(string fileName);

Параметры
Название | Тип | Значение
fileName | string | Имя файла, который необходимо получить с сервера приложений
Возвращаемое значение
Тип | Значение
File | Пользовательский файл


RemoveCustomFile

Назначение

Позволяет удалить с сервера приложений сохраненный там пользовательский файл.

Определение

void RemoveCustomFile(int sessionId, string filename);

Параметры
Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
filename | string | Имя сохраненного на сервере приложений файла, который нужно удалить
Возвращаемое значение

Отсутствует.


SaveCustomFile

Назначение

Позволяет сохранить пользовательский файл на сервере приложений.

Определение

void SaveCustomFile(int sessionId, File file);

Параметры

Название | Тип | Значение
sessionId | int | Идентификатор сессии подключения к серверу приложений
file | File | Пользовательский файл
Возвращаемое значение

Отсутствует.


Приложения

Методы программного интерфейса пользователя позволяют выполнять следующие операции с файлами:

GetAttachmentNames | Получить список приложений
LoadAttachment | Загрузить приложение
RemoveAttachment | Удалить приложение
SaveAttachment | Добавить приложение


GetAttachmentNames

Назначение

Позволяет получить список приложений указанного типа.

Определение

string[] GetAttachmentNames(int attachmentType, int objectId, int batchId, int projectId);

Параметры
Название | Тип | Значение
attachmentType int Тип приложения. Возможные значения:
  • 9 - приложение к документу;
  • 10 - приложение к странице;
  • 11 - приложение к пакету.
objectId | int | Идентификатор объекта
batchId | int | Идентификатор пакета
projectId | int | Идентификатор проекта
Возвращаемое значение
Тип | Значение
string[] | Список названий приложений указанного типа для выбранного пакета


LoadAttachment

Назначение

Позволяет получить приложение в виде файла.

Определение

File LoadAttachment(int session, int attachmentType, int objectId, int batchId, int projectId, string attachmentName);

Параметры
Название | Тип | Значение
session | int | Идентификатор сессии подключения к серверу приложений
attachmentType int Тип приложения. Возможные значения:
  • 9 - приложение к документу;
  • 10 - приложение к странице;
  • 11 - приложение к пакету.
objectId | int | Идентификатор объекта
batchId | int | Идентификатор пакета
projectId | int | Идентификатор проекта
attachmentName | string | Название приложения, которое необходимо загрузить
Возвращаемое значение
Тип | Значение
File | Файл приложения


RemoveAttachment

Назначение

Позволяет удалить приложение.

Определение

void RemoveAttachment(int session, int attachmentType, int objectId, int batchId, int projectId, string attachmentName);

Параметры
Название | Тип | Значение
session | int | Идентификатор сессии подключения к серверу приложений
attachmentType int Тип приложения. Возможные значения:
  • 9 - приложение к документу;
  • 10 - приложение к странице;
  • 11 - приложение к пакету.
objectId | int | Идентификатор объекта
batchId | int | Идентификатор пакета
projectId | int | Идентификатор проекта
attachmentName | string | Название приложения, которое необходимо удалить
Возвращаемое значение

Отсутствует.


SaveAttachment

Назначение

Позволяет добавить приложение к объекту.

Определение

void SaveAttachment(int session, int attachmentType, int objectId, int batchId, int projectId, File file);

Параметры

Название | Тип | Значение
session | int | Идентификатор сессии подключения к серверу приложений
attachmentType int Тип приложения. Возможные значения:
  • 9 - приложение к документу;
  • 10 - приложение к странице;
  • 11 - приложение к пакету.
objectId | int | Идентификатор объекта
batchId | int | Идентификатор пакета
projectId | int | Идентификатор проекта
file | File | Файл с приложением, которое необходимо добавить
Возвращаемое значение

Отсутствует.


Шаблоны

Методы программного интерфейса пользователя позволяют выполнять следующие операции с учетными записями:

GetTemplates | Получить список определений документов в проекте
GetBatchTypeTemplates | Получить список идентификаторов определений документов, прикрепленных к типу пакета


GetTemplates

Назначение

Получает информацию об определениях документа в проекте.

Определение

Template[] GetTemplates(int projectId);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта
Возвращаемое значение
Тип | Значение
Template[] | Набор записей, каждая из которых содержит информацию об определении документа


GetBatchTypeTemplates

Назначение

Возвращает список идентификаторов определений документов, прикрепленных к типу пакета. Пустой список (NULL) означает, что в свойствах проекта включена опция "Использовать все определения документа" или что не выбрано ни одно определение документа.

Определение

int[] GetBatchTypeTemplates(int projectId, int batchTypeId);

Параметры
Название | Тип | Значение
projectId | int | Идентификатор проекта
batchTypeId | int | Идентификатор типа пакета
Возвращаемое значение
Тип | Значение
int[] | Определения документа, прикрепленные к типу пакета


Журнал

Методы программного интерфейса позволяют выполнить следующие операции с журналом:

WriteToLog Записать в журнал сервера приложений информацию о событиях


WriteToLog

Назначение

Позволяет записать сообщения о событиях в журнал сервера приложений.

Определение

void WriteToLog(long clientTime, LogRecord [] records);

Параметры
Название | Тип | Значение
clientTime | long | Дата и время возникновения событий. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
records | LogRecord[] | Набор записей, каждая из которых описывает одно из событий, которое надо записать в журнал сервера приложений
Возвращаемое значение

Отсутствует.


Прочее

Методы программного интерфейса пользователя также позволяют выполнять следующие операции:

GetSettingValue | Получить из базы данных именованный параметр
SetSettingValue | Сохранить в базе данных именованный параметр


GetSettingValue

Назначение

Возвращает значение именованного параметра, сохраненное в базе данных методом SetSettingValue.

Замечание. Возможно сохранение одноименных параметров с разными значениями для разных пользователей / типов пакетов / проектов.

Определение

string GetSettingValue(int userId, int projectId, int batchTypeId, string settingName);

Параметры
Название | Тип | Значение
userId | int | Идентификатор учетной записи пользователя
projectId | int | Идентификатор проекта
batchTypeId | int | Идентификатор типа пакетов
settingName | string | Наименование параметра
Возвращаемое значение
Тип | Значение
string | Значение именованного параметра


SetSettingValue

Назначение

Сохраняет именованный параметр в базе данных.

Замечание. Одноименные параметры можно сохранять отдельно для каждого пользователя / типа пакетов / проекта. Если параметр с указанным именем и набором идентификаторов пользователя, типа пакетов и проекта существует, метод изменяет его значение.

Определение

void SetSettingValue(int userId, int projectId, int batchTypeId, string settingName, string settingValue);

Параметры
Название | Тип | Значение
userId | int | Идентификатор учетной записи пользователя
projectId | int | Идентификатор проекта
batchTypeId | int | Идентификатор типа пакетов
settingName | string | Наименование параметра
settingValue | string | Значение параметра
Возвращаемое значение

Отсутствует


Типы данных программного интерфейса

В данном разделе описаны типы данных, которые используют методы программного интерфейса сервера приложений.

Замечание. Некоторые типы данных расширяют те, которые использовались методами предыдущей версии программного интерфейса. Тем не менее, старые методы и типы данных оставлены для обеспечения совместимости существующих приложений.

Перечисления | Список используемых перечислений
Batch | Пакет
BatchType | Тип пакета
DetailedBatch | Расширенная информация о пакете
Document | Информация о документе (оставлено для совместимости с предыдущими версиями)
DocumentEx | Информация о документе
File | Файл
LogRecord | Запись в журнал
Page | Информация о странице (оставлено для совместимости с предыдущими версиями)
PageEx | Информация о странице
ProcessingStage | Информация об этапе обработки
ProcessingStagesExt | Расширенная информация об этапе обработки
Project | Информация о проекте на сервере приложений
Queue | Информация об очереди документов на этапе обработки
RegistrationProperty | Регистрационный параметр
RegistrationPropertyDef | Описание регистрационного параметра
Task | Информация о задании
TaskDocument | Документ задания
TaskExt | Расширенная информация о задании
TaskList | Список заданий
TaskDocumentList | Список документов задания
TaskPage | Страница задания
Template | Информация об определении документа
TicketInfo | Мандат лицензирования
User | Информация о пользователе
UserList | Список пользователей
UserStatistics | Информация о числе пакетов, документов, и страниц, обработанных пользователем


Перечисления

В данном разделе описаны перечисления, используемые Web Services API сервера приложений ABBYY FlexiCapture 10.

LogRecordType | Типы событий для записи в журнал
ProcessingPriority | Приоритет обработки пакета, документа или задания
ProcessingStage | Этап обработки
Role | Роль пользователя
WorkstationType | Тип станции


LogRecordType

Назначение

Содержит типы событий для записи в журнал.

Элементы
Номер | Значение
1 | Сообщение об ошибке
2 | Предупредительное сообщение
3 | Информационное сообщение


ProcessingPriority

Назначение

Содержит список приоритетов обработки.

Элементы
Номер | Значение
-2 | Самый низкий
-1 | Низкий
0 | Обычный
1 | Высокий
2 | Самый высокий


ProcessingStage

Назначение

Содержит список предопределенных этапов обработки.

Элементы
Номер | Значение
100 | Импорт
150 | Повторное сканирование
200 | Распознавание
250 | Автоматическая обработка
300 | Проверка сборки документов
390 | Предварительная обработка для верификации данных
400 | Верификация данных
410 | Обработка после верификации данных
490 | Предварительная обработка для верификации
500 | Верификация
510 | Обработка после верификации
600 | Проверка целостности пакета
700 | Подтверждение экспорта
800 | Экспорт
900 | Обработанные
1000 | Исключения
-1 | Неизвестный этап
-2 | Обработка задания завершилась ошибкой. Следующий этап обработки определяется настройками маршрутизации
-3 | Следующий по порядку этап обработки
2000 | Внешний


Role

Назначение

Содержит список предопределенных ролей пользователя.

Элементы
Номер | Значение
1 | Оператор сканирования
2 | Оператор верификации данных
3 | Оператор верификации
4 | Не используется
5 | Не используется
6 | Старший оператор верификации
7 | Сервер обработки
8 | Редактор настроек проекта
9 | Оператор мониторинга
10 | Администратор
11 | Станция обработки
12 | Оператор пользовательской станции
13 | Оператор ввода документов в Web-интерфейсе


WorkstationType

Назначение

Содержит типы станций.

Элементы
Номер | Значение
1 | Станция сканирования
2 | Станция верификации данных
3 | Станция верификации
4 | Сервер обработки
5 | Станция настройки проектов
6 | Станция обработки
7 | Удаленная станция верификации данных
8 | Удаленная станция верификации
9 | Консоль мониторинга
10 | Пользовательская станция
11 | Web-станция ввода документов
12 | Web-станция верификации
13 | Web-станция верификации данных
14 | Web-станция сканирования
-1 | Неизвестно


Batch

Назначение

Тип данных Batch используется для хранения информации о пакете.

Поля

Имя | Тип | Значение
Id | int | Идентификатор пакета
Name | string | Имя пакета
BatchTypeId | int | Идентификатор типа пакета. 0 - тип пакета "По умолчанию".
Priority | int | Приоритет пакета. Допустимые значения: см. ProcessingPriority.
Description | string | Описание пакета
Properties | RegistrationProperty[] | Набор регистрационных параметров пакета
PropertiesCount | int | Количество регистрационных параметров пакета


BatchType

Назначение

Тип данных BatchType используется для хранения информации о типе пакета.

Поля

Имя | Тип | Значение
Id | int | Идентификатор типа пакета
Name | string | Имя типа пакета
Description | string | Описание типа пакета
PropertyDefs | RegistrationPropertyDef[] | Набор регистрационных параметров типа пакета
PropertiyDefsCount | int | Количество регистрационных параметров


DetailedBatch

Detailed

Назначение

Тип данных Batch используется для хранения информации о пакете.

Поля

Имя | Тип | Значение
Id | int | Идентификатор пакета
Name | string | Имя пакета
BatchTypeId | int | Идентификатор типа пакета. 0 - тип пакета "По умолчанию".
Priority | int | Приоритет пакета. Допустимые значения: см. ProcessingPriority.
Description | string | Описание пакета
Properties | RegistrationProperty[] | Набор регистрационных параметров пакета
PropertiesCount | int | Количество регистрационных параметров пакета
StageExternalId | int | Идентификатор этапа обработки, на котором создается задание с помощью метода CreateTask
CreationDate | long | Дата и время создания пакета. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
DocumentsCount | int | Число документов в пакете
RecognizedDocumentsCount | int | Число распознанных документов
AssembledDocumentsCount | int | Число собранных документов
VerifiedDocumentsCount | int | Число верифицированных документов
ExportedDocumentsCount | int | Число проэкспортированных документов
PagesCount | int | Число страниц в пакете
RecognizedSymbolsCount | int | Число распознанных символов
UncertainSymbolsCount | int | Число неуверенно распознанных символов
VerificationSymbolsCount | int | Число верифицированных символов


Document

Назначение

Тип данных Document используется для хранения информации о документе.

Замечание. Данный тип данных использовался в ранних версиях Web Services API. В текущей версии рекомендуется использовать тип данных DocumentEx.

Поля

Имя | Тип | Значение
Id | int | Идентификатор документа
Pages | Page [] | Набор страниц документа
PageCount | int | Количество страниц в документе
IsProcessed bool Признак обработанного документа:
  • True - документ обработан;
  • False - документ не обработан.
HasProcessingErrors bool Наличие ошибок обработки документа:
  • True - при обработке документа возникли ошибки;
  • False - при обработке документа ошибок не возникло.
HasDocumentErrors bool Наличие ошибок в документе (форматные ошибки, ошибки правил или сборки):
  • True - документ содержит ошибки;
  • False - документ ошибок не содержит.
ErrorText | string | Описание ошибок обработки документа


DocumentEx

Назначение

Тип данных DocumentEx используется для хранения расширенной информации о документе.

Замечание. Данный тип данных появился в качестве замены типа данных Document.

Поля

Имя | Тип | Значение
Id | int | Идентификатор документа. Заполняется сервером приложений
Pages | Page [] | Набор страниц документа
PageCount | int | Количество страниц в документе
IsProcessed bool Признак обработанного документа:
  • True - документ обработан;
  • False - документ не обработан.

Заполняется сервером приложений

HasProcessingErrors bool Наличие ошибок обработки документа:
  • True - при обработке документа возникли ошибки;
  • False - при обработке документа ошибок не возникло.

Заполняется сервером приложений

HasDocumentErrors bool Наличие ошибок в документе (форматные ошибки, ошибки правил или сборки):
  • True - документ содержит ошибки;
  • False - документ ошибок не содержит.

Заполняется сервером приложений

ErrorText | string | Описание ошибок обработки документа. Заполняется сервером приложений
ExternalId | string | Внешний идентификатор документа. Если параметр не указан, он заполняется сервером приложений и совпадает с Id
FileVersion | int | Номер версии файла документа на сервере. Заполняется сервером приложений
OwnerId | int | Идентификатор пользователя, которому назначен документ
Properties | RegistrationProperty [] | Набор регистрационных параметров документа
PropertiesCount | int | Количество регистрационных параметров документа
Priority | int | Приоритет документа. Допустимые значения: см. ProcessingPriority


File

Назначение

Тип данных File используется для хранения файлов.

Поля

Имя | Тип | Значение
Name | string | Название файла
Bytes | System.byte[] | Бинарные данные файла


LogRecord

Назначение

Тип данных LogRecord используется для хранения записи об ошибке.

Поля

Имя | Тип | Значение
Type | int | Тип записи об ошибке. Возможные значения: см. LogRecordType.
SessionId | int | Идентификатор сессии подключения к серверу приложений
MachineId | string | Идентификатор рабочей станции
RoleId | int | Идентификатор роли пользователя. Возможные значения: см. Role.
TaskId | int | Идентификатор задания
ProjectId | int | Идентификатор проекта
BatchId | int | Идентификатор пакета
DocumentId | int | Идентификатор документа
PageId | int | Идентификатор страницы
Comment | string | Краткое описание события
Details | string | Подробное описание события
Time | long | Дата и время возникновения события на рабочей станции. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();


Page

Назначение

Тип данных Page используется для хранения информации о странице документа.

Замечание. Данный тип данных использовался в ранних версиях Web Services API . В текущей версии рекомендуется использовать тип данных PageEx.

Поля

Имя | Тип | Значение
Id | int | Идентификатор страницы
SourceFileName | string | Имя исходного файла изображения
SourcePageNumber | string | Номер изображения в исходном файле
ErrorText | string | Описание ошибок обработки страницы


PageEx

Назначение

Тип данных Page Ex используется для хранения расширенной информации о странице документа.

Замечание. Данный тип данных появился в качестве замены типа данных Page.

Поля

Имя | Тип | Значение
Id | int | Идентификатор страницы. Заполняется сервером приложений
SourceFileName | string | Имя исходного файла изображения
SourcePageNumber | string | Номер изображения в исходном файле
ErrorText | string | Описание ошибок обработки страницы. Заполняется сервером приложений
ExternalId | string | Внешний идентификатор страницы. Если параметр не указан, он заполняется сервером приложений и совпадает с Id
SourceDetails | string | Описание источника изображения страницы
PreviousPageId int Идентификатор страницы документа, после которой необходимо добавить новую. Также можно использовать следующие значения:
  • 0 – добавить страницу в начало документа;
  • -1 – добавить страницу в конец документа.


ProcessingStage

Назначение

Тип данных ProcessingStage используется для хранения информации об этапе обработки.

Поля

Имя | Тип | Значение
Id | int | Идентификатор этапа обработки
ProjectId | int | Идентификатор проекта
BatchTypeId | int | Идентификатор типа пакета
Type | int | Тип этапа обработки. Возможные значения: см. ProcessingStage.
Name | string | Наименование этапа обработки


ProcessingStagesExt

Назначение

Тип данных ProcessingStagesExt используется для хранения расширенной информации об этапе обработки.

Поля

Имя | Тип | Значение
Id | int | Идентификатор этапа обработки
StageExternalId | int | Идентификатор этапа обработки, на котором создается задание с помощью метода CreateTask
ProjectId | int | Идентификатор проекта
BatchTypeId | int | Идентификатор типа пакета
Type | int | Тип этапа обработки. Возможные значения: см. ProcessingStage.
Name | string | Наименование этапа обработки


Project

Назначение

Тип данных Project используется для хранения информации о проекте на сервере приложений.

Поля

Имя | Тип | Значение
Id | int | Идентификатор проекта на сервере приложений.
Name | string | Имя проекта на сервере приложений
Guid | string | Уникальный идентификатор (GUID) проекта
IsTestProject bool Признак, является ли проект тестовым. Возможные значения:
  • True - проект является тестовым;
  • False - проект рабочий.


Queue

Назначение

Тип данных Queue используется для хранения информации об очереди документов на этапе обработки.

Поля

Имя | Тип | Значение
Name | string | Наименование этапа обработки
StageType | int | Тип этапа обработки. Возможные значения: см. ProcessingStage.
TaskCount | int | Количество заданий на этапе обработки
UserTaskCount | int | Количество заданий на этапе обработки, назначенных данному пользователю
PostponedTaskCount | int | Количество заданий на этапе обработки, отложенных пользователем
IsEnabled bool Включен ли этап обработки. Возможные значения:
  • True - этап обработки включен;
  • False - этап обработки отключен.
Id | int | Идентификатор этапа обработки


RegistrationProperty

Назначение

Тип данных RegistrationProperty используется для хранения информации о регистрационном параметре пакета или документа.

Поля

Имя | Тип | Значение
Name | string | Имя регистрационного параметра
Value | string | Значение регистрационного параметра


RegistrationPropertyDef

Назначение

Тип данных RegistrationPropertyDef используется для хранения информации о регистрационном параметре типа пакета.

Поля

Имя | Тип | Значение
Id | int | Идентификатор регистрационного параметра типа пакета. Заполняется сервером приложений
Name | string | Имя регистрационного параметра типа пакета
IsRequired bool Признак обязательного заполнения регистрационного параметра. Возможные значения:
  • True - регистрационный параметр обязателен для заполнения;
  • False - регистрационный параметр не обязателен.


Task

Назначение

Тип данных Task используется для хранения информации о заданиях.

Замечание. Кроме записей данного вида, информация о заданиях хранится в xml-файлах. Файл может описывать задание в целом или отдельные его файлы. Информация о структуре данных файлов и работе с ними приведена в разделе "Работа с файлами".

Поля

Имя | Тип | Значение
BatchId | int | Идентификатор пакета, в который входят документы задания
BatchName | string | Имя пакета, с которым связано задание
Id | int | Идентификатор задания
ProjectId | int | Идентификатор проекта, к которому относится задание
Priority | int | Приоритет задания. Допустимые значения: см. ProcessingPriority.
StageType | int | Тип этапа обработки, на котором сформировано задание. Допустимые значения: см. ProcessingStage.
Status System.UInt32 Статус задания. Допустимые значения:
  • 0 - создается;
  • 1 - ожидает обработки;
  • 2 - обрабатывается;
  • 3 - обработка завершена;
  • 4 - отложена.
Flags int Набор флагов, описывающих состояние задания. Значение поля складывается из значений флагов, в числе которых:

TA_HasAttachedDataVerificationXml = 0x200 – для задания сформирован xml-файл с данными предобработки

TA_HasAttachedDocumentsXml = 0x1000 – для задания сформированы xml-файлы с данными

Замечание. Описаны только флаги, имеющие смысл при работе с заданиями методами Web Services API.

CreationTime long Время создания задания. Для конвертации используйте следующие методы (пример на языке C#):

DateTime dtTime;

long lTime;

...

// конвертация из DateTime в long

dTime = DateTime.FromFileTime(lTime);

...

// конвертация из long в DateTime

lTime = dTime.ToFileTime();

CreatorId | int | Идентификатор пользователя, создавшего задание
ModificationTime long Время последнего изменения задания. Для конвертации используйте следующие методы (пример на языке C#):

DateTime dtTime;

long lTime;

...

// конвертация из DateTime в long

dTime = DateTime.FromFileTime(lTime);

...

// конвертация из long в DateTime

lTime = dTime.ToFileTime();

UserId | int | Идентификатор пользователя или группы, которым назначено задание.
Comment | string | Комментарий к заданию


TaskDocument

Назначение

Тип данных TaskDocument используется для хранения информации о документе в составе задания.

Поля

Имя | Тип | Значение
BatchId | int | Идентификатор пакета, содержащего документ
Comment | string | Комментарий к документу
DocumentId | int | Идентификатор документа
ExternalId | string | Внешний идентификатор документа
Flags int Набор флагов, описывающих состояние документа. Значение поля складывается из значений флагов, в числе которых:

BIF_IsAnalyzed = 0x100 – документ проанализирован

BIF_IsRecognized = 0x200 – документ распознан

BIF_IsVerified = 0x400 – документ верифицирован

BIF_IsExported = 0x800 – документ экспортирован

BIF_HasRuleErrors = 0x10000 – документ содержит ошибки правил

BIF_HasRuleWarnings = 0x20000 – документ содержит предупреждения правил

Замечание. Описаны только флаги, имеющие смысл при работе с документами методами Web Services API.

HasAssemblingErrors bool Наличие ошибок сборки документа:
  • True - документ содержит ошибки сборки;
  • False - в документе нет ошибок сборки.
HasErrors bool Наличие ошибок в документе:
  • True - документ содержит ошибки;
  • False - в документе нет ошибок.
HasWarnings bool Наличие предупреждений в документе:
  • True - документ содержит предупреждения;
  • False - в документе нет предупреждений.
Pages | TaskPage [] | Набор страниц документа
PagesCount | int | Количество страниц в документе
Priority | int | Приоритет документа. Допустимые значения: см. ProcessingPriority.
ProcessingStageType | int | Этап обработки, на котором находится документ. Допустимые значения: см. ProcessingStage.
TemplateName | int | Имя наложенного определения документа
TotalSymbols | int | Общее количество символов в документе
UncertainSymbols | int | Количество неуверенно распознанных символов в документе
VerificationSymbols | int | Количество символов для верификации в документе


TaskDocumentList

Назначение

Тип данных TaskDocumentList используется для хранения списка документов в задании.

Поля

Имя | Тип | Значение
Documents | TaskDocument[] | Набор записей о документах, входящих в задание
DocumentsCount | int | Количество документов в задании


TaskExt

What it does

Тип данных Task используется для хранения расширенной информации о заданиях.

Замечание. Кроме записей данного вида, информация о заданиях хранится в xml-файлах. Файл может описывать задание в целом или отдельные его файлы. Информация о структуре данных файлов и работе с ними приведена в разделе "Работа с файлами".

Поля

Имя | Тип | Значение
BatchId | int | Идентификатор пакета, в который входят документы задания
BatchName | string | Имя пакета, с которым связано задание
Id | int | Идентификатор задания
ProjectId | int | Идентификатор проекта, к которому относится задание
StageExternalId | int | Идентификатор этапа обработки, на котором создается задание с помощью метода CreateTask
Priority | int | Приоритет задания. Допустимые значения: см. ProcessingPriority.
StageType | int | Тип этапа обработки, на котором сформировано задание. Допустимые значения: см. ProcessingStage.
Status System.UInt32 Статус задания. Допустимые значения:
  • 0 - создается;
  • 1 - ожидает обработки;
  • 2 - обрабатывается;
  • 3 - обработка завершена;
  • 4 - отложена.
Flags int Набор флагов, описывающих состояние задания. Значение поля складывается из значений флагов, в числе которых:

TA_HasAttachedDataVerificationXml = 0x200 – для задания сформирован xml-файл с данными предобработки

TA_HasAttachedDocumentsXml = 0x1000 – для задания сформированы xml-файлы с данными

Замечание. Описаны только флаги, имеющие смысл при работе с заданиями методами Web Services API.

CreationTime long Время создания задания. Для конвертации используйте следующие методы (пример на языке C#):

DateTime dtTime;

long lTime;

...

// конвертация из DateTime в long

dTime = DateTime.FromFileTime(lTime);

...

// конвертация из long в DateTime

lTime = dTime.ToFileTime();

CreatorId | int | Идентификатор пользователя, создавшего задание
ModificationTime long Время последнего изменения задания. Для конвертации используйте следующие методы (пример на языке C#):

DateTime dtTime;

long lTime;

...

// конвертация из DateTime в long

dTime = DateTime.FromFileTime(lTime);

...

// конвертация из long в DateTime

lTime = dTime.ToFileTime();

UserId | int | Идентификатор пользователя или группы, которым назначено задание.
Comment | string | Комментарий к заданию


TaskList

Назначение

Тип данных TaskList используется для хранения списка заданий.

Поля

Имя | Тип | Значение
Tasks | Task[] | Набор записей о заданиях
TasksCount | int | Количество заданий в списке


TaskPage

Назначение

Тип данных TaskPage используется для хранения информации о странице в составе задания.

Поля

Имя | Тип | Значение
Comment | string | Комментарий к странице
Flags | int | Набор флагов, описывающих состояние задания. Флаги страницы, имеющие смысл в Web Services API: static const DWORD BIF_IsAnalyzed = 0x100; // страница проанализирована static const DWORD BIF_IsRecognized = 0x200; // страница распознана
ImageFileName | string | Имя файла с изображением страницы
ImageSourceDetails | string | Информация об источнике изображения
ImageSourcePageNumber | int | Номер страницы в файле с изображением
ImageSourceType | int | Тип источника изображения.
PageId | int | Идентификатор страницы
TotalSymbols | int | Общее количество символов на странице
UncertainSymbols | int | Количество неуверенно распознанных символов на странице
VerificationSymbols | int | Количество символов для верификации на странице
Version | int | Номер версии страницы


Template

Назначение

Тип данных Template используется для хранения информации об определении документа.

Поля

Имя | Тип | Значение
Id | int | Идентификатор определения документа.
Version | int | Версия определения документа
IsDisabled bool Признак состояния определения документа на станции настройки проекта. Допустимые значения:
  • True - определение документа отключено;
  • False - определение документа подключено.


TicketInfo

Назначение

Тип данных TicketInfo используется для хранения информации о мандате лицензирования.

Поля

Имя | Тип | Значение
TicketId | int | Идентификатор мандата
StationType | int | Тип станции. Возможные значения: см. WorkstationType. Замечание. Используйте значения WT_Verification и WT_Validation вместо WT_RemoteDataVerification и WT_RemoteVerification соответственно.
ExpirationDate | long | Дата и время окончания действия лицензии. Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
ExpirationPeriod | long | Период истечения лицензии (отсчитывается с момента активации). Для конвертации используйте следующие методы (пример на языке C#): DateTime dtTime; long lTime; ... // конвертация из DateTime в long dTime = DateTime.FromFileTime(lTime); ... // конвертация из long в DateTime lTime = dTime.ToFileTime();
AvailableModules | System.UInt32 | Доступные в лицензии модули
IssuedForSessionId | int | Идентификатор сессии, для которой был создан мандат
Signature | string | Сигнатура мандата


User

Назначение

Тип данных User используется для хранения информации о пользователе.

Поля

Имя | Тип | Значение
Id | int | Идентификатор пользователя
Name | string | Имя пользователя
FullName | string | Полное имя пользователя


UserList

Назначение

Тип данных UserList используется для хранения списка пользователей.

Поля

Имя | Тип | Значение
Users | User [] | Набор записей о пользователях
UsersCount | int | Количество записей о пользователях


UserStatistics

Назначение

Тип данных UserStatistics используется для хранения информации о числе обработаных пользователем пакетов, документов и страниц. Обработанными считаются те пакеты, которые пришли на этап обработки в состоянии "Обработанные".

Fields

Name | Type | Description
BatchesCount | int | Число обработанных пакетов
DocumentsCount | int | Число обработанных документов
PagesCount | int | Число обработанных страниц


Работа с файлами

Работа с файлами может осуществляться с помощью POST-запросов.

Типы действий

С помощью POST-запросов возможно выполнение следующих действий:

  • Загрузка файла с сервера (Action = Load)
  • Загрузка файла на сервер (Action = Save)
  • Запись в конец файла (Action = Append)
  • Получение от сервера контрольной суммы файла (вычисляется по методу CRC32) (Action = Checksum)

Возможное использование

  1. Импорт изображений. Загрузка файлов изображений, в том числе по частям, и получение контрольной суммы.
  2. Получение исходных изображений страниц в любой момент обработки.
  3. Работа с приложениями к пакетам, документам, страницам (загрузить / скачать).

Замечание: несмотря на существование данной возможности, для работы с приложениями рекомендуется использовать специально разработанные методы.

  4. Получение XML-описания задачи верификации, изменение данного документа и сохранение измененного на сервере.

Параметры запроса

Имя | Тип | Значение
Action string Тип действия. Возможные значения:
  • Load – загрузить файл с сервера;
  • Save – сохранить файл на сервере;
  • Append – дописать данные в уже существующий на сервере файл;
  • Checksum – запросить на сервере контрольную сумму файла, вычисленную по методу CRC32.
AppServerURL | string | Адрес (URL) сервера приложений.
sessionId | int | Идентификатор сессии
projectId | int | Идентификатор проекта
batchId | int | Идентификатор пакета
objectType int Тип объекта на сервере. Возможные значения:
  • 0 – документ;
  • 1 – страница;
  • 8 – описание задания (XML-документ);
  • 9 – приложение к документу;
  • 10 – приложение к странице;
  • 11 – приложение к пакету.

Замечание: несмотря на существование данной возможности, для работы с приложениями рекомендуется использовать специально разработанные методы.

objectId | int | Идентификатор объекта (документа, страницы или задания)
version | int | Версия файла
streamName string Имя бинарного потока, закодированное в Base64 при сохранении файла на сервер или в UrlEncode при загрузке файла с сервера. Возможные значения

для страниц:

  • BlackWhiteImage – черно-белое изображение страницы. Файл в формате PNG;
  • ColorImage – цветное изображение страницы. Файл в формате JPG;

для документов:

  • DocumentBody – XML-документ, описывающий поля документа. Создается на этапе предварительной обработки для верификации. На этапе обработки после верификации обрабатываются изменения в данном документе. Версионность не поддерживается, параметр version должен быть равен 0. В этот файл необходимо сохранить результаты обработки документа.
  • "Page pageID", где pageID – идентификатор страницы, который вернул метод AddNewPageEx. Данное имя потока используется для загрузки изображений страниц перед предварительной обработкой.
  • "FileName", где FileName - имя файла, указанное при создании документа методом AddNewDocumentEx. Данное имя потока используется для загрузки многостраничного файла с изображениями страниц документа.

для заданий:

  • Verification – XML-документ, описывающий задание верификации. Создается на этапе предварительной обработки для верификации данных. На этапе обработки после верификации данных обрабатываются изменения в данном документе. Версионность не поддерживается, параметр version должен быть равен 0. В этот файл необходимо сохранить результаты обработки задания;
  • verificationRequest – XML-документ с запросом на проверку правил на сервере.
requestId | int | Уникальный идентификатор запроса. Может быть получен с помощью Environment.TickCount (число миллисекунд, прошедших с момента запуска системы).
blob | Двоичные данные файла (если параметр Action имеет значение Save или Append)
offset | int | Смещение от начала файла, начиная с которого необходимо дописать данные (если параметр Action имеет значение Append)

Файловое хранилище содержит все файлы проекта. Имя файла содержит информацию о типе объекта, его идентификаторе, имени потока в формате: <тип объекта>-<id объекта>-<имя потока>версия.

Таким образом, файл с именем 1-4-BlackWhiteImage184201843 представляет собой файл страницы (objectType = 1) с идентификатором id=4, streamName=BlackWhiteImage и version=184201843.

Файлы страниц (objectType = 1) содержат копии изображений, а файлы документов (objectType = 0) – исходные изображения. Таким образом, попытка изменения изображений с помощью POST-запроса с параметром objectType = 1 ни к чему не приведет. Получить исходные изображения можно с помощью POST-запроса со следующими параметрами:

Action = Load
objectType = 0
objectId = documented
version = 0
streamName = "Page pageId", где  pageId – идентификатор страницы, возвращенный
методом
            AddNewPageEx .

См. примеры запросов.


Примеры

Для примеров выбран язык C#. В каждом примере кода для журналирования, обработки исключений и отображения запроса использовались следующие функции:

// требуется инициализировать из вызывающего кода для ведения лога

        static public Logging WriteLog = null;

        static private void Trace(string str)

        {

            string gap = "";

            for (int i = 0; i < deep; i++)

                gap = gap + "  ";

            if (WriteLog != null) WriteLog(gap + str);

        }

        static private int deep = 0;

private static void ExceptionHandler(WebException ex)

        {

            Trace("============ WebException ============");

            Trace(ex.Message);

        }

        private static void ExceptionHandler(SoapException ex)

        {

            Trace("============ SoapException ============");

            Trace(ex.Message);

            Trace("============ Details ============");

            Trace(ex.Detail.InnerText);

        }

        private static void ExceptionHandler(Exception ex)

        {

            Trace("============ Exception ============");

            Trace(ex.Message);

        }

private static void Show(HttpWebRequest request, string body)

        {

            Trace("HttpWebRequest:");

            deep++;

            Trace("Credentials = " + request.Credentials);

            Trace("Method = " + request.Method);

            Trace("ContentType = " + request.ContentType);

            Trace("ContentLength = " + request.ContentLength);

            deep--;

        }

Загрузка файла с сервера

Для загрузки файла необходимо сформировать запрос на сервер (AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService"). Метод запроса POST, тип содержимого - application/x-www-form-urlencoded. Тело запроса:

"Action=Load" +"&sessionId=" + session + "&objectType=" + objectType + "&projectId=" + projectId + "&batchId=" + batchId + "&objectId=" + objectId + "&version=" + version + "&streamName=" + streamName

Результат должен быть записан в новый файл.

static private CredentialCache basicAuthenticationCredentialCache = null;

public static List<byte> POSTLoadFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName)

        {

            List<byte> result = new List<byte>();

            HttpWebResponse response = null;

            Stream responseStream = null;

            BinaryReader reader = null;

            try

            {

                // формируем запрос

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService");

                request.Method = "POST";

                // работаем с аутентификацией, заданной при Подключении к web-сервису

                if (basicAuthenticationCredentialCache != null)

                {

                    request.Credentials = basicAuthenticationCredentialCache;

                }

                else

                {

                    request.UseDefaultCredentials = true;

                }

                request.ContentType = "application/x-www-form-urlencoded";

                string postData = "Action=Load" +

                    "&sessionId=" + session +

                    "&objectType=" + objectType +

                    "&projectId=" + projectId +

                    "&batchId=" + batchId +

                    "&objectId=" + objectId +

                    "&version=" + version +

                    "&streamName=" + streamName;

                StreamWriter writer = new StreamWriter(request.GetRequestStream());

                writer.Write(postData);

                writer.Close();

                // показали запрос

                Show(request, postData);

                // получаем и разбираем ответ

                response = (HttpWebResponse)request.GetResponse();

                responseStream = response.GetResponseStream();

                reader = new BinaryReader(responseStream);

                int responseStreamLength = 0;

                while (true)

                {

                    try

                    {

                        result.Add(reader.ReadByte());

                        responseStreamLength++;

                    }

                    catch (EndOfStreamException)

                    {

                        break;

                    }

                }

                reader.Close();

                responseStream.Close();

                response.Close();

                // показали ответ

                Trace("Out: HttpWebResponse.Stream.Length = " + responseStreamLength);

            }

            catch (WebException ex)

            {

                ExceptionHandler(ex);

            }

            catch (Exception ex)

            {

                ExceptionHandler(ex);

            }

            if (response != null) response.Close();

            if (responseStream != null) responseStream.Close();

            if (reader != null) reader.Close();

            return result;

}

Загрузка файла на сервер

Необходимо открыть существующий файл и прочитать данные из него (строка content должна быть получена из бинарного файла с помощью Encoding.Default).

Для загрузки файла необходимо сформировать запрос на сервер (AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService"). Метод запроса POST, тип содержимого - multipart/form-data. Тело запроса:

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nSave" +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +

"\r\n--" +
requestId + "\r\ncontent-disposition: form-data;
name=\"streamName\"\r\n\r\n" + streamNameInBase64 +
// имя
бинарного потока в Base64

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n"+ // параметр filename является формальным, его значение не влияет на выполнение запроса
content + //данные, которые загружаем на сервер

"\r\n--" + requestId + "--\r\n";

static private CredentialCache basicAuthenticationCredentialCache = null;

// строка content должна быть получена из бинарного файла с помощью Encoding.Default

        public static List<byte> POSTSaveFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName, string content)

        {

            List<byte> result = new List<byte>();

            HttpWebResponse response = null;

            Stream responseStream = null;

            StreamReader reader = null;

            int requestId = Environment.TickCount;

            try

            {

                // формируем запрос

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService");

                request.Method = "POST";

                // работаем с аутентификацией, заданной при Подключении к web-сервису

                if (basicAuthenticationCredentialCache != null)

                {

                    request.Credentials = basicAuthenticationCredentialCache;

                }

                else

                {

                    request.UseDefaultCredentials = true;

                }

                request.ContentType = "multipart/form-data, boundary=" + requestId;

                byte[] streamNameInBytes = Encoding.Unicode.GetBytes(streamName);

                UnicodeEncoding UTFencofing = new UnicodeEncoding();

                string postData = "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nSave" +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + Convert.ToBase64String(streamNameInBytes) +

"\r\n--" + requestId +
"\r\ncontent-disposition: form-data;
name=\"blob\";filename=\"filename.txt\"\r\nContent-Type:
application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n";

                postData += content;

                postData += "\r\n--" + requestId + "--\r\n";

                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.Default);

                writer.Write(postData);

                writer.Close();

                // показали запрос

                Show(request, postData);

                // получаем и разбираем ответ

                response = (HttpWebResponse)request.GetResponse();

                responseStream = response.GetResponseStream();

                // показали ответ

                Trace("Out: ");

                reader = new StreamReader(responseStream);

                Trace("HttpWebResponse.Stream: " + reader.ReadToEnd());

                reader.Close();

                responseStream.Close();

                response.Close();

            }

            catch (WebException ex)

            {

                ExceptionHandler(ex);

            }

            catch (Exception ex)

            {

                ExceptionHandler(ex);

            }

            if (response != null) response.Close();

            if (responseStream != null) responseStream.Close();

            if (reader != null) reader.Close();

            return result;

        }

Получение контрольной суммы

Для получения контрольной суммы формируем запрос на сервер AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService"). Метод запроса POST, тип содержимого - application/x-www-form-urlencoded. Тело запроса:

"Action=Checksum" + "&sessionId=" + session + "&objectType=" + objectType + "&projectId=" + projectId + "&batchId=" + batchId + "&objectId=" + objectId + "&version=" + version + "&streamName=" + streamName

static private CredentialCache basicAuthenticationCredentialCache = null;

public static List<byte> POSTGetChecksum(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName)

        {

            List<byte> result = new List<byte>();

            HttpWebResponse response = null;

            Stream responseStream = null;

            BinaryReader reader = null;

            try

            {

                // формируем запрос

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService");

                request.Method = "POST";

                // работаем с аутентификацией, заданной при Подключении к web-сервису

                if (basicAuthenticationCredentialCache != null)

                {

                    request.Credentials = basicAuthenticationCredentialCache;

                }

                else

                {

                    request.UseDefaultCredentials = true;

                }

                request.ContentType = "application/x-www-form-urlencoded";

                string postData = "Action=Checksum" +

                    "&sessionId=" + session +

                    "&objectType=" + objectType +

                    "&projectId=" + projectId +

                    "&batchId=" + batchId +

                    "&objectId=" + objectId +

                    "&version=" + version +

                    "&streamName=" + streamName;

                StreamWriter writer = new StreamWriter(request.GetRequestStream());

                writer.Write(postData);

                writer.Close();

                // показали запрос

                Show(request, postData);

                // получаем и разбираем ответ

                response = (HttpWebResponse)request.GetResponse();

                responseStream = response.GetResponseStream();

                reader = new BinaryReader(responseStream);

                int responseStreamLength = 0;

                while (true)

                {

                    try

                    {

                        result.Add(reader.ReadByte());

                        responseStreamLength++;

                    }

                    catch (EndOfStreamException)

                    {

                        break;

                    }

                }

                reader.Close();

                responseStream.Close();

                response.Close();

                // показали ответ

                Trace("Out: HttpWebResponse.Stream.Length = " + responseStreamLength);

            }

            catch (WebException ex)

            {

                ExceptionHandler(ex);

            }

            catch (Exception ex)

            {

                ExceptionHandler(ex);

            }

            if (response != null) response.Close();

            if (responseStream != null) responseStream.Close();

            if (reader != null) reader.Close();

            return result;

        }

Загрузка по частям (изменение существующего файла)

Добавлять что-либо можно только в уже существующий файл, поэтому сначала он должен быть создан на сервере.

Для изменения файла формируем запрос на сервер (AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService"). Метод запроса POST, тип содержимого - multipart/form-data. Тело запроса:

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nAppend" +

\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + streamNameInBase64 +

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"blob\";filename=\"filename.txt\"\r\nContent-Type: application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n" +

сontent + //строку получаем так же, как и в предыдущем пункте

"\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"offset\"\r\n\r\n" + offset + //сдвиг от начала файла, откуда начинаем писать

"\r\n--" + requestId + "--\r\n";

static private CredentialCache basicAuthenticationCredentialCache = null;

// строка content должна быть получена из бинарного файла с помощью Encoding.Default

        // важно: добавлять можно только в уже созданный файл, т.е. сначала нужно создать файл методом POSTSaveFile

        public static List<byte> POSTAppendFile(string AppServerURL, int session, int projectId, int batchId, int objectType, int objectId, int version, string streamName, string content, int offset)

        {

            List<byte> result = new List<byte>();

            HttpWebResponse response = null;

            Stream responseStream = null;

            StreamReader reader = null;

            int requestId = Environment.TickCount;

            try

            {

                // формируем запрос

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(AppServerURL + "/FlexiCapture10/Server/WebServices.dll?Handler=FileService");

                request.Method = "POST";

                // работаем с аутентификацией, заданной при Подключении к web-сервису

                if (basicAuthenticationCredentialCache != null)

                {

                    request.Credentials = basicAuthenticationCredentialCache;

                }

                else

                {

                    request.UseDefaultCredentials = true;

                }

                request.ContentType = "multipart/form-data, boundary=" + requestId;

                byte[] streamNameInBytes = Encoding.Unicode.GetBytes(streamName);

                UnicodeEncoding UTFencofing = new UnicodeEncoding();

                string postData = "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"Action\"\r\n\r\nAppend" +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectType\"\r\n\r\n" + objectType +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"sessionId\"\r\n\r\n" + session +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"projectId\"\r\n\r\n" + projectId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"batchId\"\r\n\r\n" + batchId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"objectId\"\r\n\r\n" + objectId +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"version\"\r\n\r\n" + version +

                    "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"streamName\"\r\n\r\n" + Convert.ToBase64String(streamNameInBytes) +

"\r\n--" + requestId +
"\r\ncontent-disposition: form-data;
name=\"blob\";filename=\"filename.txt\"\r\nContent-Type:
application/octet-stream\r\nContent-Transfer-Encoding: binary\r\n\r\n";

                postData += content;

                postData += "\r\n--" + requestId + "\r\ncontent-disposition: form-data; name=\"offset\"\r\n\r\n" + offset;

                postData += "\r\n--" + requestId + "--\r\n";

                StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.Default);

                writer.Write(postData);

                writer.Close();

                // показали запрос

                Show(request, postData);

                // получаем и разбираем ответ

                response = (HttpWebResponse)request.GetResponse();

                responseStream = response.GetResponseStream();

                // показали ответ

                Trace("Out: ");

                reader = new StreamReader(responseStream);

                Trace("HttpWebResponse.Stream: " + reader.ReadToEnd());

                reader.Close();

                responseStream.Close();

                response.Close();

            }

            catch (WebException ex)

            {

                ExceptionHandler(ex);

            }

            catch (Exception ex)

            {

                ExceptionHandler(ex);

            }

            if (response != null) response.Close();

            if (responseStream != null) responseStream.Close();

            if (reader != null) reader.Close();

            return result;

        }


Примеры использования программного интерфейса сервера приложений

Данный раздел содержит демонстрационные примеры, позволяющие лучше понять способы использования программного интерфейса.

  • Обработка документов одним пакетом


Обработка документов одним пакетом

Пример создан с помощью Microsoft VisualStudio. Приведённый код предполагает, что в проект добавлена ссылка (WebReference) на web-сервис и для ссылки выбрано имя FlexiCapture (имени соответствует сгенерированное пространство имён). Также предполагается, что определена (например, через Debug.Print) функция Trace, предназначенная для вывода данных в журнальный файл.

Данный пример является только демонстрацией работы с сервисом. В реальном проекте следует написать надёжные классы-обёртки вокруг открываемых объектов и использовать механизмы, аналогичные using в C#. Желательно иметь механизм очистки незавершённых (abandoned) сессий и пакетов, устойчивый к сбоям питания клиента и к сбоям на линии связи (сохранять идентификатор и закрывать сессию как часть процедуры восстановления от сбоя). Незакрытые сессии сами по себе к отрицательным последствиям не приводят, но при длительной работе могут накапливаться и вызывать неудобства в администрировании системы. Неудалённые пакеты, кроме этого, могут потреблять значительные ресурсы сервера – главным образом место в хранилище, занимаемое изображениями и документами.

Для работы примера достаточно загрузить на вновь установленный сервер проект и включить автоматический режим обработки на закладке Процесс обработки свойств проекта. Для загрузки файла нужно использовать пространство имен System.IO.

public void RunSample(string serverUrl)

{

       try

       {

             // Инициализация службы

             FlexiCapture.FlexiCaptureWebService service = new FlexiCaptureWebService();

// FlexiCaptureWebService - имя интерфейса, реализованного web-сервисом
// FlexiCapture.
 // Создание URL для ссылки на вторую версию службы
 service.Url = serverUrl + "/FlexiCapture10/Server/WebServices.dll?Handler=Version2";

// Подключаемся к службе с правами учетной записи текущего потока

service.Credentials = System.Net.CredentialCache.DefaultCredentials;

             // Открытие сессии

             int sessionId = service.OpenSession();

             try

             {

// Получение списка проектов (необязательно при работе с
// одним проектом, в этом случае удобнее открывать
// открывать проект с использованием GUID)

                    FlexiCapture.Project[] projects = service.GetProjects();

                    if( projects != null )

                    {

                          foreach( FlexiCapture.Project project in projects )

                          {

                                 Trace( project.Name + " : " + project.Guid );

                          } }

                    }

                    // Открытие первого проекта в списке

                    int projectId = service.OpenProject( sessionId, projects[0].Guid );

                    // Получение списка типов пакетов проекта

                    FlexiCapture.BatchType[] batchTypes = service.GetBatchTypes( projectId );

                    if( batchTypes != null )

                    {

                          foreach( FlexiCapture.BatchType batchType in batchTypes )

                          {

                                 Trace( batchType.Name + " : " + batchType.Description );

                          } }

                    }

                    // Создание нового пакета

                    FlexiCapture.Batch batch = new FlexiCapture.Batch();

                    batch.Name = "Sample API Batch";

                    int batchId = service.AddNewBatch( sessionId, projectId, batch );

                    // Загрузка образцов изображений (см. ниже определение LoadFile)

                    FlexiCapture.File file1 = LoadFile( "Banking 1.png" );

                    FlexiCapture.File file2 = LoadFile( "Banking 2.png" );

                    FlexiCapture.File file3 = LoadFile( "Banking 3.png" );

                    // Добавление изображений

                    for(
int i = 0; i <
3;
i++ )

                    {

                          service.AddNewImage( sessionId, batchId, file1 );

                          service.AddNewImage ( sessionId, batchId, file2 );

                          service.AddNewImage ( sessionId, batchId, file3 );

                    } }

                    // Запуск обработки пакета

                    service.ProcessBatch( sessionId, batchId );

                    // Ожидание завершения обработки

                    int percentCompleted = 0;

                    while( percentCompleted < 100 )

                    {

                          percentCompleted = service.GetBatchPercentCompleted( batchId );

                          System.Threading.Thread.Sleep( 500 );

                    }

                    // Анализ результатов

                    FlexiCapture.Document[] documents = service.GetDocuments( batchId );

                    if( documents != null )

                    {

                          foreach( FlexiCapture.Document document in documents )

                          {

                                 FlexiCapture.File attachedFile =

service.LoadDocumentResult( document.Id, "MyResult.xml" );

                          }

                    }

                    // Очистка

                    service.DeleteBatch( sessionId, batchId );

                    service.CloseProject( sessionId, projectId );

             } }

             finally

             {

                    service.CloseSession( sessionId );

             } }

       }

       catch ( Exception ex )

       // Используйте catch ( SoapException ex ) для обработки исключений только
       // сервера приложений

       {

             Trace( ex.Message );

       }

}

public FlexiCapture.File LoadFile( string fileName )

{

       FlexiCapture.File file = new FlexiCapture.File();

       using( FileStream stream = File.Open( fileName, FileMode.Open ) )

       {

             file.Name = fileName;

             file.Bytes = new byte[stream.Length];

             stream.Read( file.Bytes, 0, file.Bytes.Length );

       }

       return file;

}