Тесса программа документооборота инструкция по применению

В данном разделе собрана документация по системе электронного документооборота TESSA.

Версия платформы 3.6.0

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

Также доступны История изменений и Документация по API.

Версия платформы 3.5.0

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

Также доступны История изменений и Документация по API.

Обучающий видеокурс для администраторов по работе с СЭД TESSA — YouTube

Возможности по настройке ЭДО СЭД Тесса

СЭД TESSA обладает гибкой системой настроек системы документооборота, что включает в себя как интерфейс, так и рабочий процесс. В ТЕССА пользователь, администратор и разработчик, могут настраивать пути, шаблоны, карточки и связи.

Настройке типового решения

  • Настраиваемая нумерация с проектным и постоянным номером.
  • Регистрация документов с выделением постоянного номера.
  • Гибкая система прав доступа.
  • Возможность добавлять новые типы документов.
  • Возможность настройки замещений.
  • Настройка производственного календаря.
  • Настраиваемое дерево представлений, с возможностью пользователю добавлять свои папки и поиски/отчеты.

Сателлит с настройками сотрудника

  • GetPersonalRoleSatelliteID — определяет идентификатор карточки-сателлита по идентификатору сотрудника, выполняя запрос в базе.
  • SetPersonalRoleSatellite — “зашивает” пакет карточки-сателлита satellite в Info карточки сотрудника personalRole. Метод нужен для того, чтобы сериализовать сателлит вместе с данными основной карточки. Таким образом, сателлит можно будет восстановить вместе с карточкой сотрудника из сериализованного состояния, в котором они пребывают в корзине. Сателлит доступен как хеш-таблица (метод GetStorage()) по строковому ключу PersonalRoleSatelliteKey, префикс которого SystemKeyPrefix устанавливается только для системных карточек. Для любых других карточек ключ следует задавать без префикса как “MySatellite”.
  • SatelliteWasNotFound — возвращает признак того, что в Info карточки сотрудника personalRole методом SetPersonalRoleSatellite сателлит был явно установлен как null. Таким образом, можно будет отличить состояния “поиск сателлита был выполнен, и сателлит не найден” (установлен в null) от “поиск сателлита ещё не был выполнен” (ключ отсутствует в хеш-таблице).
  • TryGetPersonalRoleSatellite — возвращает карточку сателлита, ранее установленную методом SetPersonalRoleSatellite в Info заданной карточки сотрудника personalRole. Метод возвращает null, если сателлит не был установлен или же был установлен как null (см. метод SatelliteWasNotFound). Отметим, что возвращается объект Card, а в Info задана хеш-таблица Dictionary. Чтобы объект Card по возможности создавался один раз для хеш-таблицы, используется ThreadCache, которому передаётся фабрика, создающая объект Card по хеш-таблице, причём фабрика будет вызвана только в том случае, если этот метод ещё не вызывается для объекта personalRole, или же он был вызван для карточки, отличной от personalRole.
  • Вспомогательные методы можно упростить, если использовать API из Tessa.Cards.Extensions.Templates:

Настройка шаблона бизнес-процесса

В данные настройки электронного документооборота входит раздел о настройках карточки шаблона бизнес-процесса.

  • У данного типа карточек следующий набор полей:
  • Название — определяет название бизнес-процесса.
  • Группа — определяет группу, к которой относится бизнес-процесс.
  • Запуск из карточки — определяет, запускается ли данный процесс из карточки.
  • Типы карточек — определяет список типов карточек, к которым относится данный шаблон бизнес-процесса. Актуально, если установлен флаг Запуск из карточки.
  • Расширения проверки доступа для тайлов — список расширений на проверку доступа для тайлов, подключенных для данного шаблона бизнес-процесса. Более подробно про расширения можно посмотреть в разделе Расширения проверки доступа для тайлов.
  • Сообщение при блокировке — сообщение, которое увидит пользователь при нажатии на кнопку процесса или завершении задания процесса, если версия этого процесса заблокирована на редактирование.
  • Сообщение об ошибке — сообщение, которое увидит пользователь в случае возникновения непредвиденной ошибки процесса. Действительную ошибку можно посмотреть в карточке ошибки или списке ошибок экземпляра процесса.
  • Доступ на редактирование — определяет список ролей, которые имеют доступ на редактирование шаблона процесса, редактирование и отладку экземпляра процесса. Допускается использование любых ролей, кроме контекстных.
  • Доступ на чтение экземпляров — определяет список ролей, которые имеют доступ на чтение экземпляров бизнес-процесса. Допускается использование любых ролей, включая контекстные роли.
  • Версии бизнес-процесса — таблица со всеми версиями данного шаблона бизнес-процесса. Более подробное описание данной таблицы расположено в подразделе данной главы.
  • Кнопки бизнес-процесса — таблица со всеми кнопками данного шаблона бизнес-процесса. Более подробное описание данной таблицы расположено в подразделе данной главы.

Настройка Unix-сокетов и нескольких рабочих процессов

  • Выполненные ранее настройки системы документации и архитектуры СЭД показывают, как запустить веб-сервис tessa с привязкой к порту localhost:5000, после чего веб-серверы Nginx или Apache работают как reverse proxy на этот порт. Работу веб-сервиса можно ускорить при высокой нагрузке, если настроить использование unix-сокетов. Также это позволяет упростить настройку нескольких рабочих процессов.
  • При настройке документооборота tessa необходимо указать имя сокета tessa.sock в настройке ExecStart. При условии, что настройки по ссылке уже выполнены, откройте для редактирования конфигурационный файл сервиса

Настройка и установка Р7-Офис / OnlyOffice

  • Для просмотра, предпросмотра и редактирования документов может использоваться Р7-Офис / OnlyOffice.
  • Он устанавливается на сервер приложений, либо на отдельный сервер.
  • Для установки нужно воспользоваться Инструкцией по установке. Затем в карточке настроек Р7-Офис / OnlyOffice указать адрес подключения к api сервера документов.

Настройка ТЕССА

Отправьте заявку и специалист компании свяжется с Вами в ближайшее время.

СЭД Tessa

Ниже происходит препарирование системы TESSA 3.4, основанное на личном опыте внедрения.

  1. Общее описание системы
    • Карточка
    • Представление
    • Схема данных
    • Дерево объектов
    • Работа с БД
    • Отчеты
    • Создание карточки
    • Публикация
  2. Критика
    • TypeSafety
  3. Вместо резюме

Общее описание системы

TESSA — система электронного документооборота (СЭД) с возможностью автоматизации бизнес процессов (BPM). Построена на .NET.
Программирование расширений осуществляется в VisualStudio 2017
Разработка GUI может осуществляться как на основе WPF, так и React.js

У страницы системы есть два состояния: Карточка и Представление. Представление — настраиваемый список, например, список карточек.
Настройка списков (Представлений) гибко настраивается так называемыми метаданными — текстовое описание, а также шаблонизируемым SQL запросом.

Карточка:

Image of Yaktocat

Представление:

Представление (view) имеет похожий смысл, который имеет вьюшка в мире SQL. Грубо говоря, это просто табличка.

Image of Yaktocat

В конструкторе карточек можно мышкой добавить контролы:

Image of Yaktocat

Схема данных:

В системе есть wrapper для СУБД, через который можно создавать свои объекты БД:

Image of Yaktocat

Дерево объектов:

Дерево объектов может состоять из трех элементов: Папка, Представление и так называемый Сабсет — подмножество (выборка) из родительского Представления.
Папка служит для группировки элементов, при выборе Папки в области справа от дерева ничего не отображается. То есть нельзя, например, отобразить карточку при выборе Папки.
При выборе Представления в Дереве объектов в правой области отображается таблица, сформированная либо SQL реквестом, либо же эта табличка может быть сформирована из C# кода. Кроме этого, дефолтное поведение правой области при выборе Представления, может быть переопределено Расширениями. Например, можно при выборе Представления в дереве нарисовать в WPF (в случае десктоп клиента) произвольные контролы.
Сабсеты представляют из себя подмножества Представления. Сабсеты ограничены в смысле отображения произвольного содержимого при выборе в Дереве.

Object tree

Работа с бд:

Что касается ORM, то его тут нет). Разработчики вместо ORM используют вот это:

bltoolkit
ProgrammersGuide

О высокой скорости разработки в такой конфигурации говорить не приходится. Запрос к БД выглядит вот так:

db
        .SetCommand(
            "insert into Table (Column1, Column2) values (@Column1, @Column2)",
            db.Parameter("@Column1", value1),
            db.Parameter("@Column2", value2))
        .LogCommand()
        .ExecuteNonQuery();

Если представить ситуацию, когда нужно рефакторить базу данных (нормализация или ренейминг), то, уверен, программисту прощу уволиться, чем рефакторить вот такие стринговые запросы. Обращаю внимание: bltoolkit находится в состоянии suspended.

Остановлюсь на этом ужасе немного подробнее.

Вот пример запроса на получение данных, способом, который предлагается разработчиками TESSA:

await using (this.dbScope.Create())
            {
                var db = dbScope.Db;

                var comand =
                     db.SetCommand(dbScope.BuilderFactory
                        .Select().C(null, "UserID", "UserName")
                        .From("RoleUsers")
                        .InnerJoin("Roles").On().C("RoleUsers", "ID").Equals().C("Roles", "ID")
                        .Where().C("RoleUsers", "TypeID").Equals().P("TypeID")
                        .And().C("Roles", "Name").Equals().P("RoleName")
                        .Build(),
                        db.Parameter("TypeID", 0, LinqToDB.DataType.Int32), db.Parameter("RoleName", "Мастера"))
                    .LogCommand();

                using var reader = await comand.ExecuteReaderAsync(cancellationToken);

                if (reader.HasRows)
                {
                    while (await reader.ReadAsync(cancellationToken))
                    {
                        string masterName = reader.GetValue<string>(1);
                        Guid masterId = reader.GetValue<Guid>(0);

                        result.Add(new DmMaster(masterId, masterName));
                    }
                }
            }

А вот запрос на получение точно таких же данных, но уже с ORM:

var dmMasters = db.RoleUsers.Where(x => x.TypeId == DmConstants.StaticRoleTypeId && x.Id == DmConstants.TessaDmMastersRoleId)
                .Select(x => new DmMaster()
            { 
                Id = x.UserId, 
                Name = x.UserName 
            }).ToList();

Тут мне могут возразить, что первый запрос будет работать быстрее. Возможно, но это не значит, что нужно писать на raw SQL.
Эти времена давно прошли. Где-то это может быть уместно, но не во всем же проекте. Разница колоссальная! Не думал, что увижу такое в 2020) Сейчас время программиста стоит намного дороже, чем процессорное время, это нужно учитывать.
Скорость (соответственно, стоимость) внедрения системы TESSA будет страдать от без-ORM-ного подхода.
Справедливости ради нужно заметить, что в коде замечен нэймспейс LinqToDB.

Мы же пойдем своим, гуманным и типобезопасным путем: подключим живую ORM, например EntityFramework или Fluent NHibernate.
На мой взгляд предпочтительнее EntityFramework так как не нужно руками писать маппинги, создание всех POCO классов на основе схемы БД в EF занимает ровно одну строку (Scaffold-DbContext). А для того, чтобы избежать проблем с зависимостями (разные версии одной и той же библиотеки), как с текущей версией TESSA, так и с будущими, можно развернуть netcore webapi. Получаем микросервисную архитектуру, data access layer будет микросервисом, можно еще выделить DTO в отдельный проект. Абстрагируемся не только от базы данных, но и от ORM) Наивысшая степень абстракции).

необходимые пакеты:

Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools

Далее In Visual Studio, select menu Tools -> NuGet Package Manger -> Package Manger Console and run the following command:

PM> Scaffold-DbContext "Server=(local);Database=tessa;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
  • и webapi готов!

Отчеты:

Тулинг для работы с отчетами типа СКД или FastReport здесь отсутствует! Это вам не low-code system.
Тут также два варианта: делать отчеты на голом WPF или React.js либо интегрировать что-то внешнее. Или можно например смиксовать: рядом подсадить еще один веб-сервис, который будет хостить тот же FastReport, и его страницы отображать прямо в расширениях WPF через WebBrowser. Снова имеем слабосвязанные и легко заменяемые элементы системы:

webBrowser.Navigate("http://local-report-tooling");

Создание карточки:

Новую карточку можно создать достаточо просто:

В модальном окне:

var createCardContext = await advancedCardDialogManager.CreateCardAsync(cardTypeID: cardTypeId);

или на вкладке:

var createCardContext = await uiHost.CreateCardAsync(cardTypeID: cardTypeId);

Подписаться на события карточки, например, в файловый контрол загрузили новый файл, можно реализовав интерфейс ICardUIExtension.
Делается примерно так: в методе инициализации ICardUIExtension.Initialized() получаем модель карточки ICardModel, из нее достаем модель контрола IControlViewModel по его системному имени (алиасу), который задан во время проектирования:

cardModel.Controls.TryGet(Helpers.ControlAlias, out fileControlViewModel)

Далее, делаем кастинг:

var fileControl =  ((FileListViewModel)fileControlViewModel).FileControl;

Теперь можно подписываться на события:

fileControl.ContainerFileAdding += FileControl_ContainerFileAdding;

Здесь нужно заметить, что простого и интуитивно понятного способа передать что-то в методы ICardUIExtension нет. Например, если мы захотим передать caption текущего узла дерева (ITreeItem, или более частный случай IViewTreeItem — представление) в рабочем месте, то придется вместо простого создания карточки:

var createCardContext = await advancedCardDialogManager.CreateCardAsync(cardTypeID: cardTypeId);

сначала создать карточку вручную:

CardNewRequest cardNewRequest = new CardNewRequest() { CardTypeID = cardTypeId };
CardNewResponse cardNewResponse = cardRepository?.NewAsync(cardNewRequest).Result;

заполнить поля карточки:

cardNewResponse.Card.ID = Guid.NewGuid();
cardNewResponse.Card.Sections[DmDynamicNames.SectionDmProjects].Fields[DmDynamicNames.ViewCompositionId] = viewCompositionId;

сохранить карточку:

CardStoreRequest cardStoreRequest = new CardStoreRequest() { Card = cardNewResponse.Card };
CardStoreResponse cardStoreResponse = cardRepository?.StoreAsync(cardStoreRequest).Result;

и открыть ее:

var context = await this.uiHost.OpenCardAsync(cardID: cardNewResponse.Card.ID);

и теперь мы имеем возможность работать с данными внутри обработчиков:

string name = card.Sections[DmDynamicNames.SectionDmProjects].Fields.Get<string>(DmDynamicNames.Name);

Публикация:

Доставка клиентсого приложения осуествляется на удивление легко. Пользователю не придется думать об обновлении приложения, для пользователя все происходит бесшовно. Это плюс!
AdministratorGuide.html#apps-publish

Что же касается deploy-я на development сервер, то программисту предется думать об этом самостоятельно. Если мы разрабатываем клиент-серверные расширения, то все файлики копировать нужно вручную: остановить IIS (если Windows), скопировать новые extensions и снова запустить IIS. С клиентскими расширениями примерно тоже самое: закрыть клиента, скопировать, снова открыть. В зрелых продуктах данного класса (ECM-BPM) вопрос деплоинга решен, взять тот же DirectumRX. Я для этой задачи написал небольшой хелпер:
ProjectPublicationHelpers.

Критика

Неудобное создание карточки

Из коробки процесс создания карточки на текущий момент (02 мая 2020) выглядит так:

Image of Yaktocat

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

Неудобное удаление карточки

Из коробки процесс удаления карточки на текущий момент (02 мая 2020) выглядит так:

Image of Yaktocat

То есть пользователю предлагается выполнить избыточное кол-во операций, чтобы удалить карточку. Нужно учитывать, что при интенсивной работе с карточками, процесс удаления потребует доработки. На мой взгляд, тут нехватает панели стандартных операций, которые доступны непосредственно на экране карточки. Казалось бы, это не смертельно. Соглашусь, но ведь система призвана ускорять процессы в компании, и тут удобный GUI очень важен.

TypeSafety

В мануалах присутствует (тут) демонстрация не самых лучших практик программирования, а именно, проблема с типобезопасностью

Проблема тут в том, что в примерах кода используются имена контролов, то есть обычные string. Что будет с этим кодом, когда через N месяцев кто-то совершенно справедливо решит, что такой нэйминг, как Control1 — это вообще говоря, не самая лучшая идея? Программист переименует Control1 в что-нибудь более описательное, например txtProjectName. Решение (Solution) вполне себе прекрасно сбилдится, и эта проблема дойдет до пользователя! А если таких участков будет очень много?
Захардкоженных строк в коде быть не должно! Это ликбез. Все строковые литералы необходимо выносить в отдельный класс с константами. Или можно хранить константы в БД, и вытаскивать их в compile time в код автоматически (кодогенератор T4 и DAPPER).
Строковые литералы в коде — это глюкогенератор.

TypeSafety issue

Резюме

Сравнительно невысокая цена системы на первоначальном этапе внедрения скомпенсируется на длинном временном интервале комплексностью разработки и поддержания.
То есть дешевле в итоге не получится вот почему:

  1. На текущий момент система представляет из себя почти пустой каркас: все придется делать самостоятельно.
  2. Высокий порог входа в разработку: сложная программная архитектура (слишком много WTF per Hour) влечет за собой необходимость в наличии высококвалифицированных специалистов. Людей, знакомых с TESSA на хорошем уровне программиста (со всем стеком: SQL, .NET, WFP, React.js) на рынке сейчас ноль целых, ноль десятых. Вывод логически вытекает из одного факта возраста системы, хотя это не единственный критерий.

Универсальная и гибкая платформа с современным интерфейсом для создания высокопроизводительных решений автоматизации документооборота и бизнес-процессов компаний в различных сферах бизнеса

Система включена в Реестре Российского ПО (Приказ Минкомсвязи России от 08.11.2016 №538)

Решение на базе TESSA — красивое, быстрое, современное и интерактивное. Безупречная внутренняя архитектура, гибкие возможности настройки и современные технологии WPF обеспечивают плавную и безупречную работу рабочего места пользователя и минимальное время отклика приложения даже в условиях ограничений каналов передачи данных.

Функциональные блоки документооборота СЭД TESSA

Автоматизация документационного обеспечения управления:

  • регистрация входящей и исходящей корреспонденции;
  • сканирование документов и доведение до исполнителей в электронном виде;
  • согласование договоров;
  • согласование платежей;
  • согласование и контроль исполнения организационно-распорядительных документов;
  • обработка заявок/служебных записок;
  • обработка жалоб и претензий;
  • работа с протоколами совещаний/коллегиальных органов;
  • кадрово-хозяйственные процессы (прием на работу, увольнение, командировки и пр);

Электронный архив:

  • обработка и хранение первичной бухгалтерской документации;
  • архив документов;

Автоматизация специализированных процессов:

  • автоматизация работы сервис-деска;
  • автоматизация закупочной деятельности;
  • автоматизация урегулирования убытков страхования (страховая компания);
  • рассмотрение на выдачу кредитов (банк);
  • процедура открытия нового магазина (ритейл);
  • вывод на рынок новой единицы продукции (производство);
  • и др.

Основные преимущества TESSA:

  • высокая скорость работы — меньше секунды на все основные операции: система оптимизирована для работы в современных условиях распределенных сетей, в том числе на слабых каналах передачи данных;
  • современный интерактивный пользовательский интерфейс, разработанный с применением самых современных технологий;
  • полнофункциональный мультиплатформенный веб-клиент;
  • широкие возможности настройки и разработки расширений для системы на всех уровнях платформы, в том числе на уровне полей системных таблиц, гармоничное сочетание визуальных настроек и программирования;
  • мощная подсистема ролевого доступа к объектам и функциям: иерархия простых ролей, динамические вычисляемые и контекстные роли;
  • большие возможности в части представления данных: обычные представления, зависимые представления, подмножества, программные представления;
  • возможность организации сложных бизнес-процессов с наглядной визуализацией хода выполнения процесса;
  • широкие возможности по интеграции с другими информационными системами;
  • наличие типовых решений;
  • невысокая стоимость владения системой, быстрая окупаемость проекта внедрения

p

Подробнее о возможностях СЭД TESSA можно узнать на сайте разработчика mytessa.ru

Опыт компании Офис-Док

Компания имеет обширный опыт внедрения СЭД в организациях из различных секторов экономики. Мы дорожим отношениями и нацелены на долгосрочное сотрудничество.

Газпром диагностика

Сотрудничаем с 2020 г.

Газпром ГНП-Продажи

Сотрудничаем с 2021 г.

Газпром ЦПС

Сотрудничаем с 2020 г.

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

Реализуем проекты различных масштабов

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

В рамках реализации наиболее масштабного проекта автоматизированы задачи более 4 000 пользователей, объем базы данных сейчас составляет – более 5 Тб.

Наши заказчики расположены по всей территории РФ и в СНГ в разных часовых поясах. Для всех мы обеспечиваем должный уровень технической поддержки и развития системы.

Запишитесь на онлайн презентацию

Запишитесь на онлайн презентацию. Вы увидите системы в работе, узнаете об их особенностях. Мы поделимся опытом внедрения в организациях и компаниях вашего профиля (у нас есть более 400 примеров)

Понравилась статья? Поделить с друзьями:
  • Теслер приставка к телевизору инструкция
  • Тесоро тежон инструкция по эксплуатации
  • Тесламед аппарат магнитотерапии инструкция по применению
  • Тесла профи 2 инструкция по применению
  • Тесла оптима инструкция по применению