Описание разработки
Что такое «Схемопоинт»
«Схемопоинт» — расширение для создания, импорта и хранения схем в нотации Business Process Model and Notation (BPMN) внутри информационной базы.
Разработка предназначена в первую очередь для аналитиков, которым нужно описывать процессы и сопоставлять их шаги с объектами конфигурации.
«Схемопоинт» не является средой исполнения бизнес-процессов и не заменяет механизмы задачи и процессов конфигураций 1С. Его задача — хранить визуальное описание процесса рядом с системой, в которой этот процесс реализован.
Разработка бесплатная, имеет открытый исходный код и развивается в том числе на GitHub. Проект планируется к расширению и все будут размещаться в текущей публикации.

Для чего это нужно
Во многих проектах BPMN-схемы находятся во внешних редакторах, а документы, справочники, статусы и алгоритмы — в информационной базе. Перед следующей доработкой аналитику приходится искать актуальный файл и заново определять, какие объекты системы относятся к конкретным шагам процесса.
«Схемопоинт» позволяет создать или загрузить схему в информационную базу и дополнить её связями с метаданными.
Для аналитика это даёт возможность:
- хранить BPMN-схемы непосредственно в информационной базе;
- не начинать работу в новом редакторе с пустого холста;
- связывать шаги процесса с объектами конфигурации;
- открывать схему перед подготовкой новой доработки;
- предварительно определять затрагиваемые объекты.
Для ИТ-руководителя схема перестаёт быть отдельным файлом конкретного сотрудника. Она хранится в общей информационной базе и может использоваться как точка обсуждения изменений процесса.
Основные возможности
Создание и редактирование схем
Редактор позволяет создавать BPMN-схемы непосредственно в тонком клиенте. Пользователю доступны стандартные инструменты моделирования, предоставляемые библиотекой bpmn-js.
Импорт готового *.BPMN
Если схема уже подготовлена во внешнем редакторе, её можно сохранить в формате BPMN XML и загрузить в Редактор BPMN.

Файл должен иметь расширение .bpmn и кодировку UTF-8. Импорт выполняется только в новый, ещё не сохранённый процесс. Он не изменяет ранее созданные процессы и не объединяет схемы.

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

Связи с объектами конфигурации
Поддерживаемые элементы BPMN можно связать с объектами метаданных:
- документами;
- справочниками;
- отчётами;
- обработками.
Связи доступны для задач, событий, объектов данных, подпроцессов и вызываемых действий. Для одного элемента задаётся одна основная связь.
Например, задачу «Создать заказ поставщику» можно связать с соответствующим документом конфигурации. В дальнейшем аналитик сможет открыть процесс и увидеть, какой объект реализует этот шаг.
В форме выбора объекты сгруппированы по видам. Пользователь видит их синонимы, но в информационной базе сохраняется полное техническое имя объекта метаданных. Повторный выбор того же объекта не создаёт дублирующую запись.
Шлюзы, линии, хранилища данных, дорожки и пулы с объектами метаданных пока не связываются.

Базовые отчёты
В состав расширения входят два отчёта:
- «Статистика элементов BPMN» показывает состав элементов выбранного процесса и количество элементов, имеющих связи;
- «Количество объектов 1С в процессе» позволяет оценить количество объектов конфигурации, задействованных в процессе.
Как устроен редактор
Инженерной основой разработки является открытая JavaScript-библиотека bpmn-js. Редактор разделён на четыре части:
- Управляемая форма отвечает за команды пользователя и взаимодействие с информационной базой.
- Встроенный HTML-документ содержит рабочую область редактора и служебные элементы обмена.
- JavaScript-приложение на основе
bpmn-jsотображает и изменяет BPMN-модель. - Справочники и регистр сведений хранят процессы, элементы схем и связи с метаданными.

"Техрежим" разработчика.
Обмен между формой и JavaScript
Управляемая форма открывает макет BPMNHTML в поле HTML-документа. После создания структуры документа внутри него запускается локально собранное JavaScript-приложение.
Для обмена используются элементы объектной модели документа — Document Object Model (DOM). В HTML находятся скрытые поля, кнопки и признаки состояния, через которые форма и JavaScript передают друг другу данные.
При открытии сохранённого процесса выполняется следующая последовательность:
- Форма получает BPMN XML из справочника процессов.
- XML помещается в служебное поле HTML-документа.
- Форма программно вызывает команду импорта.
- JavaScript передаёт XML в метод
modeler.importXML(). - После завершения загрузки устанавливается состояние
readyлибоerror. - Только после состояния
readyформа считает процесс успешно открытым.
Такая проверка нужна, чтобы при ошибке импорта пустая или некорректная схема не была связана с ранее сохранённым процессом.
При сохранении обмен выполняется в обратную сторону:
- JavaScript вызывает
modeler.saveXML()с форматированием результата. - Полученный BPMN XML записывается в служебное поле HTML-документа.
- Отдельно формируется описание элементов в формате JavaScript Object Notation (JSON).
- Форма считывает XML и JSON.
- Серверная часть сохраняет процесс и синхронизирует элементы схемы.
Формирование XML происходит асинхронно. Перед началом экспорта JavaScript устанавливает состояние forming, после завершения — ready или error. Форма проверяет состояние с интервалом в одну секунду и прекращает ожидание после пяти попыток. Пустой результат или ошибка экспорта не передаются на сервер для сохранения.

Как хранятся процессы и элементы
Графическая модель сохраняется в справочнике BPMNПроцессы в стандартном формате BPMN XML. Элементы схемы сохраняются отдельно в подчинённом справочнике BPMNЭлементы.
Устойчивым ключом элемента является сочетание процесса-владельца и идентификатора BPMN. Благодаря этому после повторного сохранения существующие элементы обновляются, новые добавляются, а удалённые со схемы элементы удаляются из справочника вместе с относящимися к ним связями.
XML, номер версии процесса и состав элементов записываются в одной транзакции. Если при сохранении возникает ошибка, изменения отменяются целиком.
Как хранятся связи с метаданными
Связи не записываются внутрь BPMN XML. Они хранятся отдельно в независимом регистре сведений BPMNСвязиСМетаданными.
Такое разделение было выбрано намеренно. BPMN XML остаётся стандартным и не содержит сведений, относящихся только к конкретной информационной базе. Его можно загрузить из другого редактора без предварительного изменения структуры файла.
Установка, замена или удаление основной связи выполняется сразу в отдельной транзакции. Такое изменение не увеличивает номер версии BPMN-процесса, поскольку сама графическая модель при этом не изменяется.
Сборка HTML-редактора
Скрипты bpmn-js, стили diagram-js и bpmn-js, а также шрифт BPMN объединяются в автономный HTML-документ. Шрифт встраивается в виде Base64, поэтому при открытии редактора не требуется загружать ресурсы с внешнего сервера. Результатом сборки является макетBPMNHTML. Все работает только локально, без выхода в интернет.

Технические характеристики
- Статус: пилотная версия.
- Текущий релиз: 0.0.5.
- Тип поставки: расширение конфигурации.
- Интерфейс: управляемое приложение.
- Клиент: тонкий клиент.
- Заявленная поддержка платформы: 8.3.14–8.3.27.
- Платформа разработки: 8.3.27.
- Проверенные конфигурации: «Управление торговлей» и «Бухгалтерия предприятия».
- Зависимость от Библиотеки стандартных подсистем: отсутствует.
- Изменение основной конфигурации: не требуется.
- Интернет для работы редактора: не требуется.
- Исходный код: открыт.
- Использование, изменение и распространение: допускаются с указанием автора.
Текущие ограничения
Пилотная версия имеет следующие ограничения:
- импорт всегда происходит через новый процесс с проверкой валидности XML самим BPMN-js;
- обновление или объединение существующих схем не реализовано;
- отдельный экспорт процесса в файл
.bpmnпока не реализован; - роли пользователя и администратора отсутствуют;
- совместное редактирование и обработка конфликтов не реализованы;
- дорожки и пулы отображаются визуально, но не связываются с ролями или объектами конфигурации.
Установка и базовая проверка
Файл расширения .cfe версии 0.0.5 размещён в разделе «Файлы» публикации и доступен бесплатно. Исходный код разработки открыт. Развитие разработки осуществляется на ГитХабе.
Импорт поддерживается при снятом признаке "безопасный режим" у расширения.
Ожидаемый результат проверки: процесс повторно открывается в редакторе, элементы схемы сохраняют наименования и типы, а выбранные связи отображаются в правой панели и учитываются в отчётах.
Если при установке или проверке возникнет ошибка пишите, буду оперативно править.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.7.308
Вступайте в нашу телеграмм-группу Инфостарт