Диплом: Автоматизация документооборота ООО "КОМПАНИЯ ТЕНЗОР"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
86
# Идентификатор редакции
redaction_id: optional<string>;
# Имя файла
file_name: string;
# Размер файла
size: i64;
# Путь до файла
local_url: optional<string>;
# Данные
data: binary;
}
# Интерфейс для получения файлов
# @author Столбов М.О.
# @version 1.0
doc_view = interface +c {
# Получение экземпляра класса doc_view
# @author Столбов М.О.
# @version 1.0
# @return вернет экземпляр класса
static instance(): doc_view;
# Получение файла вложения
# @author Столбов М.О.
# @version 1.0
87
# @param id uuid идентификатор вложения
# @param redaction_id optional<string> идентификатор редакции
# @return вернет модель данных file_data
read_attachment(id: uuid, redaction_id: optional<string>): optional<file_data>;
# Получение preview вложения
# @author Столбов М.О.
# @version 1.0
# @param id uuid идентификатор вложения
# @param redaction_id optional<string> идентификатор редакции
# @param width i32 ширина создаваемой preview
# @param height i32 высота создаваемой preview
# @return вернет модель данных file_data
read_attachment_as_preview(id: uuid, redaction_id: optional<string>, width: i32,
height: i32): optional<file_data>;
# Получение PDF вложения
# @author Столбов М.О.
# @version 1.0
# @param id uuid идентификатор вложения
# @param redaction_id optional<string> идентификатор редакции
# @return вернет модель данных file_data
read_attachment_as_pdf(id: uuid, redaction_id: optional<string>):
optional<file_data>;
}
Основным API по работе с метаданными подписей является «sign_info» с
моделью данных «sign_data». Список методов интерфейса и модель данных
представлены ниже.
# Данные подписи
88
# @author Столбов М.О.
# @version 1.0
sign_data = record {
# Целочисленный идентификатор подписи
sign_id: i32;
# Идентификатор подписи
uuid: optional<uuid>;
# Идентификатор вложения
attach_id: optional<uuid>;
# Идентификатор редакции
redaction_id: optional<string>;
# ФИО подписанта
fio: string;
# Идентификатор профиля
profile_id: string;
# Дата – время подписания
date: optional<date>;
# Локальный путь до файла
local_url: optional<string>;
# Статус синхронизации
sync_state: i16;
89
}
# Фильтр для работы с подписями
# @author Столбов М.О.
# @version 1.0
sign_filter = record {
# Фильтр по первичным ключам ЭЦП
ids: list<i32>;
# Фильтр по идентификаторам ЭЦП
uuids: list<uuid>;
# Фильтр по идентификаторам редакций
ext_ids: list<string>;
# Навигация
nav: navigation;
}
# Методы для получения данных о подписях
# @author Столбов М.О.
# @version 1.0
sign_info = interface +c : crud.crud<sign_data, sign_filter> {
# Получение экземпляра класса sign_info
# @author Столбов М.О.
# @version 1.0
# @return вернет экземпляр класса
static instance(): sign_info;
# Добавление записей в таблицу Sign из sign_data
# @author Столбов М.О.
90
# @version 1.0
# @param signs: sign_data вектор добавляемых подписей
# @return вновь созданная запись подписи
create(sign: sign_data): sign_data;
# Массовое добавление записей в таблицу Sign из sign_data
# @author Столбов М.О.
# @version 1.0
# @param signs: list<sign_data> вектор добавляемых подписей
# @return результат успешности добавления
create(signs: list<sign_data>): bool;
2.3.4 Описание программных модулей
1. DocViewer
Компонент для работы с вложениями. Для работы компонента предлагается
реализовать следующие микросервисы:
1. Микросервис загрузки/скачивания файлов. Сейчас уже существует его
реализация, покрывающая весь спектр задач. Необходимо его выделить в
отдельный микросервис с собственным API.
2. Микросервис сбис диска. Данный микросервис нужен для чтения и
изменения тела файлов.
3. Микросервис буфера. Нужен для чтения файлов из буфера обмена.
4. Микросервис вложений «Attachments». Хранит все метаданные файлов
для отображения вьювера, а также предоставляет djinni модель с телом
файла для его отображения. Также он необходим для сохранения файлов
и их данных, пришедших из облака.
5. Микросервис подписания. Необходим для подписания файлов. Хранит
внутри себя ссылки на сбис диск тел подписей.
2. Микросервис вложений «Attachments»
91
Микросервис используется для работы с вложениями по документу.
Основными интерфейсами микросервиса являются CRUD фасады «attachment»
и «file» с моделями данных «file_info» и «file_data» соответственно. Первый
используется для работы с телом вложения, а второй для получения
информации по вложениям сторонними сервисами.
# Формат информации о файле
file_info = record {
# Идентификатор вложения
attach_id: string;
# Идентификатор редакции
redaction_id: optional<string>;
# Идентификатор документа
doc_uuid: optional<string>;
# Имя файла
file_name: string;
# Версия
hash: string;
# Размер файла
size: i64;
# Является ли папкой
folder_at: bool;
# Идентификатор корня
folder: optional<string>;
# Есть ли потомки
folder_child: optional<bool>;
# Дата создания
create_date: date;
# Дата последнего изменения
last_change: date;
92
# разрешено редактировать
can_edit: bool;
# Тип документа
type_doc: optional<string>;
# Под тип документа
sub_type_doc: optional<string>;
# Версия формата
version_form: optional<string>;
# Подверсия формата
sub_version_form: optional<string>;
# Тип. Актуально для ФЭД, если дорого ходить за версией формата.
type: optional<i32>;
# Количество редакций
count_redactions: optional<i32>;
# Тип шифрования
# 0 - не зашифрован, зашифровать нельзя
# 1 - резерв (не зашифрован, зашифровать можно, я владелец)
# 2 - резерв (зашифрован, расшифровать можно, я владелец)
# 3 - зашифрован, расшифровать нельзя
# 4 - зашифрован гос органом
encrypted: optional<i32>;
# Необходимо открывать на редактирование
editable: optional<bool>;
# Текст рядом со значком подписи
sign_title: optional<string>;
# Количество ошибок ФЛК
count_error: optional<i32>;
# Имя объекта для вызова методов API
93
object_name: optional<string>;
# Адрес сервиса для вызова методов API
service_url: optional<string>;
# Настоящая ширина, нужна если у Вас плитка как у Яндекса
natural_width: optional<i32>;
# Настоящая высота, нужна если у Вас плитка как у Яндекса
natural_height: optional<i32>;
# Подписана ли одна из предыдущих редакций
has_previous_redaction_sign: optional<bool>;
# Вложение удалено
deleted: optional<bool>;
# Служебное поле для синхронизации
sync_state: i16;
}
# Фильтр для списочного метода получения метаданных о файлах
file_info_filter = record {
# Фильтр по идентификаторам вложений
attach_ids: list<string>;
# Фильтр по идентификаторам редакций
redaction_ids: list<string>;
# Фильтр по идентификаторам документов
doc_uuids: list<string>;
# Навигация
nav: navigation
}
# Фильтр для создания записи с метаданными вложения
file_info_create_filter = record {
# Структура file_info
[req] file_info: file_info;
94
}
CRUD фасад для получения метаданных о вложениях:
attachment = interface +c : crud.crud<file_info, file_info_filter> {
# Получение экземпляра класса attachment
static instance(): attachment;
# Создание записи с метаданными вложения
create(filter: file_info_create_filter): file_info;
# Чтение записи с метаданными вложения по redaction_id
read_file_info(redaction_id: string): optional<file_info>;
# Чтение записи с метаданными вложения по attach_id
read_attachment_info(attach_id: string): optional<file_info>;
# Обновление записи с метаданными вложения
update(model: file_info): file_info;
# Массовое обновление записей с метаданными вложений
update(models: list<file_info>): list<file_info>;
# Удаление метаданных по идентификатору редакции redaction_id
delete(redaction_id: string): bool;
# Массовое удаление
delete(redaction_ids: list<string>): list<string>;
# Получение списка метаданных вложений. Аналог AttachList и
AttachListMass
list(filter: file_info_filter): crud.list_result<file_info>;
}
# Формат данных файла
file_data = record {
# Идентификатор вложения
attach_id: string;
# Идентификатор файла
redaction_id: optional<string>;
95
# Имя файла
file_name: optional<string>;
# Размер файла
size: i64;
# Ссылка
link: optional<string>;
# Тело файла
data: list<i8>;
# Служебное поле для синхронизации
sync_state: i16;
}
# Формат для массового получения тел вложений
file_data_filter = record {
# Фильтр по идентификаторам вложений
attach_ids: list<string>;
# Фильтр по массиву идентификаторов редакций
redaction_ids: list<string>;
}
CRUD фасад для получения структуры с телом вложения:
file = interface +c : crud.crud<file_data, file_data_filter> {
# Получение экземпляра класса file
static instance(): file_data;
# Создание записи
create(filter: file_data): file_data;
# Чтение записи с телом вложения по redaction_id
read_file(redaction_id: string): optional<file_data>;
# Чтение записи с телом вложения по attach_id
read_attachment(attach_id: string): optional<file_data>;
# Обновление тела файла. Аналог метода WriteFile

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)