Программирование в FossLook


Допустим, вы создали свою библиотеку документов и новый тип документа в ней, все работает и тут у вас возникает вопрос: «А можно ли добавить какую-либо логику?». И в этом вопросе нам поможет программирование. Ниже мы рассмотрим типовые примеры, которые помогут вам получить представление о возможностях платформы FossLook и разработки для автоматизации собственных бизнес-процессов на предприятии.

Для того чтобы понять материал, изложенный в этой статье, скачайте два файла:

Файл «Моя библиотека.zip» не нужно распаковывать, просто выберите пункт "Импорт" в разделе "Библиотеки документов" программы администрирования

Импорт библиотеки документов в базу данных платформы автоматизации предприятия FossLook

и укажите к нему путь

Мастер импорта библиотек документов СЭД платформы FossLook

После выполнения процесса импорта вы должны перезапустить администрирование. Появится новая библиотека. В ветке «Папки» создайте папку с любым именем, в ней мы будем создавать наши документы для отладки. Результат, который должен у вас получиться, на рисунке ниже

Набор библиотек документов в администрировании системы коллективной работы FossLook

Для того чтобы убедиться что все работает, создайте тестовый документ в ней.

Карточка электронного документа на платформе FossLook

Анатомия документов (структура данных)

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

Как узнать, какие свойства хранит в себе данный объект?

Допустим, у нас есть созданный документ, откроем его из-под администрирования, и посмотрим на вкладку «Объект» (она недоступна обычным пользователям, но полезна для администрирования и разработки)

Свойства электронного документа платформы автоматизации бизнес-процессов FossLook

Как мы видим, здесь видны наши свойства. Обратите внимание на опцию «Show tags» - с ее помощью можно включать отображение тегов полей, которые нам потребуются позже.

Типизация объектов

Все объекты имеют свою типизацию, и определяются они свойством «Категория». В частном случае это может быть «Тип документа».

Где увидеть: на вкладке объект вы можете увидеть свойство «Категория», где находится ссылка на категорию, описывающую объект. Вы всегда можете найти категорию своих документов в той библиотеке, где они были созданы – в ветке «Типы документов»

Тип документа FossLook и его поля

Как видим, в категории находятся поля, которые описывают данные для нашего документа. Одна категория может наследоваться от другой (через «Родительские категории»).

Структура категории

Категория имеет отображаемое имя и уникальное имя.

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

Уникальное имя – для технических целей, оно может быть как на русском так и на англ.языке, например «Моя библиотека.Документ.x56757654». Именно уникальное имя мы и видели в ветке «Типы документов» и на вкладке «Объект» нашего документа.

Категория включает в себя:

  • поля (атрибуты) – описывают отдельные поля, которые могут быть в объекте;
  • родительские категории – описывают «наследование» данной категории от других, аналогично как выполнено наследование в программировании – объект получает поля от базовых категорий;
  • скрипты – для расширения функциональности, фактически это классы на C#;
  • шаблоны – применительно к типу документа это печатные формы, которые может использовать пользователь

Поля в категории

Поле (или атрибут) в категории описывает свойство, которое может хранить в себе объект данной категории. Если мы посмотрим на вкладку «Объект» поля «Содержание» в нашем документе, то увидим

Свойства поля в типе документа платформы FossLook

Как видим, поле само по себе также состоит из множества настроек, но с точки зрения программного доступа нам интересны два свойства: «Идентификатор свойства» и «Тип свойства». Вместе они формируют так называемый «тег поля» - старшая часть это идентификатор, а младшая описывает тип поля. В нашем случае тег 0x8074001E.

Класс C# для программирования карточки

Если вы посмотрите в ветку «Скрипты» нашего типа документа, то увидите объект «Default form script» и два файла исходных кодов в нем.

Исходные коды классов на C# для программирования карточки СЭД платформы FossLook

Исходные файлы – на языке C#, и в них находится реализация по умолчанию. Если мы хотим добавить функционал на карточку документа, то нам нужно будет расширить и доработать файл Form.cs – именно в нем основной исходный код. Файл FormInfo.cs является фабрикой класса и содержит в себе «связь» с тем типом документа (категорией) для которой он должен быть использован.

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

Проект Visual Studio 2010 для разработки

Вы можете использовать тестовый проект для собственных разработок. Предполагается что на машине, где вы будете его использовать, установлен клиент FossLook (сборки подключены напрямую на него). Вы также можете использовать клиент FossDoc (из состава «Документооборот», просто скорректируйте пути к сборкам).

Тестовый солюшен FossDocTest.sln содержит один проект-сборку, в которую включены два файла - Form.cs и FormInfo.cs. Сама сборка нам нужна для удобства разработки, но результат компиляции (как dll) нам не нужен – вместо этого вы должны использовать два файла-исходника Form.cs и FormInfo.cs, которые мы будем помещать на сервер в объект DefaultFormScript.

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

Работать с объектом удобнее через вкладку «Вложенные файлы», как показано на рисунке ниже

Вкладка вложенные файлы и файлы исходного кода C# для карточки FossLook

Отладка

Для отладки вам потребуется включить свойство «Отладочный режим» (на вкладке Объект у DefaultFormScript), и вы сможете выполнить «Attach» отладчиком студии прямо к клиенту

Настройка отладочного режима для карточки FossLook

Программируем автоматическое заполнение полей

Типовой задачей является проблема автоматического заполнения полей. Например, часто бывает нужно сразу установить поле «Срок исполнения» в заданную дату, или задать поле «Кто готовил» в текущего пользователя, который создает данный документ. В исходном коде проекта уже находится файл Form.cs, который автоматически заполняет поля и добавляет кнопку на панель инструментов. Код снабжен комментариями, и будет полезен для изучения, чтобы вы смогли по аналогии решать подобные задачи. Через пункт меню «View Code» вы можете просмотреть исходный код класса карточки, и подправить его под свои задачи.

Visual Studio и исходные коды классов карточки СЭД платформы FossLook

Как вы увидите, все действия при работе с полями сводятся к вызовам свойства Fields, обращаясь по тегу

C# программа для работы с карточкой документа FossLook Фрагмент исходного кода C# для работы с полями карточки документа FossLook

Переменная _TagText в примере несет тег поля, и вы должны всегда указывать правильно теги своих полей, так как при создании новых полей теги у них будут другие. Увидеть тег можно на вкладке «Объект» у поля.

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

Результат работы

В итоге вам нужно заменить в объекте «Default form script» файл Form.cs на новый файл из проекта-примера, чтобы ваши изменения вступили в силу.

Замена файлов Form.cs связанных с типом документа FossLook

Перезапустив клиент (или администрирование), увидите новую кнопку «Моя тест кнопка» на панели инструментов:

Результат программирования карточки FossLook на C#

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

© 2001-2017 ФОСС-Он-Лайн. Все права защищены.