Введение
Представление моделей бизнес-процессов на основе онтологий (онтологическое моделирование) эквивалентно Semantic BPM. Введение в семантический BPM (Business Process Management) см. «Semantic BPM. Семантика и синтаксис бизнес‑процессов» [semBPM24]. Если кратко, то можно провести аналогию: если классическая BPM система (BPMS: ARIS, бизнес‑студия, fox‑manager и т. п.) — это технологический аналог mediawiki (wikipedia), то Semantic BPM — это технологический аналог semantic mediaWiki (Wikidata), т.е.
IF MediaWiki → Semantic MediaWiki then BPM (ARIS, BPMS, EA) → Semantic BPM
Основной замысел (цель) семантического представления процессов (BPM, EA) не классическими BPM-системами, а семантическими (Linked Data) - такой же, как и у семантических wiki
Одно из ключевых дополнений к wiki-гиперссылки (html) это указание не просто что «ОбъектА связан с ОбъектомБ» (т.е. просто «связано») и соответствующий кликабельный переход (wiki-ссылки, markdown syntax), а указание, что «ОбъектА связан с ОбъектомБ» такими-то типом отношения (впрочем, как и задание других свойств объекта через отношения).
Изначально все BPMS (изначально называемые CASE‑средствами) — семантические, т.к. их суть — это отношения между объектами, только в них семантика глубоко спрятана «под капотом» BPMS и нестандартная (собственная, проприетарная). Semantic BPM «поднимает» семантическую составляющую на поверхность (возможность работы с семантическим слоем) и использует стандартные сематические технологии Linked Data.
В основе RDF (Resource Description Framework) — триплеты «субъект — отношение — объект» лежит ERD: Entity Relationship (ER) diagram. RDF \ ERD — это способ формализации знаний на основе атома знания — триплета. Вообще ER, subject, predicate, типы рассуждений и другие базовые элементы для работы со знаниями в СССР содержались в школьных учебниках [Логика54].
Ставится задача: получить RDF‑представление (набор триплетов) — как однозначную интерпретацию графического представления (модели) процесса в нотации VAD. Это задача типа «diagram to script / triple»: на входе схема + онтология, на выходе обычный rdf и его «обычный» граф.
Обратная задача «script to diagram» показана в [SmartDesign24] (генерация схемы процесса по скрипту dot). Применительно к Semantic BPM нужно из таблицы сделать не сразу dot, а вначале rdf, а из него уже dot (graphviz) через таблицу соответствия объектов схемы процесса примитивам dot.
Рассмотрим технологию формализации верхнеуровневых процессов компании посредством нотации VAD: Value Added Chain (diagram) — цепочка добавленной ценности, точнее упрощенный вариант — без указания систем (инструментов) и исполнителей процесса, входов и выходов (документальных), но с различными типами процессов (подпроцессов, function): внешний (заимствованный), предваряющий \ последующий.
Задача: По имеющейся схеме процесса в нотации VAD построить набор троек (триплетов — атомарной единицы «знания») по спецификации RDF (turtle). Схема процесса строится из шаблона (путем перетаскивания эталонных объектов — Master), сам шаблон (набор графических примитивов, трафарет) обычно описывается в Соглашении о моделировании процессов и публикуется как «корпоративный трафарет» на корпоративном портале компании, например, в случае с visio — виде vss \ vssx файла.
1. Базовые элементы используемой онтологии и легенды (нотации) VAD
Полное описание онтологии процессов — как элемента архитектуры предприятия, ЕА — требует отдельного повествования. Тут будут показаны только объекты типа «Процесс», но в связке с «VAD — оберткой» (графический синтаксис, нотация BPM), визуализирующей в графическом виде семантические концепты. На рис. 1 показаны базовые элементы VAD‑легенды и визуализируемые ими семантические конструкции.
В состав рассматриваемого процесса, название которого задается перемой MainProcess, входят объекты (подпроцессы) со связями (предикатом) hasParent и isExt. Такие связи задают границы процесса.
Принцип схож с ГОСТ 2.711–82 ЕСКД Схема деления изделия на составные части (схема деления изделия \ процесса), где hasParent — это собственные процессы (изделия в 2.711), а isExt (Ext = external) — внешние (заимствованные) процессы (изделия). Это позволяет выстроить стройную иерархию идентификаторов процессов и построить единое дерево процессов на основе их идентификаторов. Обратные отношения показаны в скобках, т. е. это hasChild (имеет потомка) и hasEx (содержит внешний процесс).
Объекты «.Master» = Процесс и «.Master» = Процесс_Внешний (заимствованный) — это составные элементы MainProcess, в отличие от Предваряющего и Последующего процессов. В состав объекта ProcessDia (схема процесса, т. е. один процесс может быть описан разными схемами) включаются кроме объектов в составе MainProcess (его составные элементы): Предваряющие, Последующие процессы, Заголовок_процесса и другие объекты, отраженные на схеме но не входящие в границы (в состав) процесса MainProcess.
Заголовок_процесса — заголовок с названием детализируемого процесса — технически может быть представлен по разному, например, как штатный заголовок листа (схемы), т. е. специальный объект (title и т. п.) в спецификациях dot, drawio, visio и др. Тут мы используем универсальный вариант: Заголовок процесса — это обычный объект из шаблона (трафарета VAD).
Онтологическая модель (включая таксономию) хранится в редакторе онтологий, например, Protege, и позволяет глубокий анализ взаимоотношений объектов модели. Тут показано только линейное преобразование (трансляцию) схемы процесса в нотации VAD в формат RDF.
Введение в Resource Description Framework (RDF) см.
RDF — это синтаксис описания ресурсов, который использует элементарные конструкции «триплет» Субъект — Предикат — Объект, отношений между Субъект — Объект и оперирует URI‑ссылками вместо слов для обозначения сущностей.
Онтологическое моделировании возможно и на более высоком уровне, например, Глобальная онтология Индустрии 4.0, где также используются абстракции #Process и т. п. [i4go].
2. Получение RDF — модели процесса из схемы Visio
Обработка выполнена в VBA Visio. Шаблоны из рис. 1 хранятся в составе трафарета (левое окно), схемы процессов и обработчик (макрос), окно результата (Immediate) — все это в одном файле visio (visioOntoVAD.vsdm).
Visio – файл visioOntoVAD.vsdm выложен на github.com/bpmbpm/vadtordf
pdf файл показывает листы и результат в окне Immediate (у кого нет visio).
В приложении 1 показан краткий алгоритм обработки листа visio (алгоритм макроса), а в приложении 2 — результат выгрузки в RDF (упрощено для понимания, в т.ч. не использовано qname «a»).
Действия для получения модели процесса в формате RDF (turtle):
в visio открыть файл visioOntoVAD.vsdm,
открыть лист «vad» или «vadE» (English) со схемой процесса в нотации VAD (построенной по шаблонам из трафарета),
запустить макрос — и в окне Immediate (VBA Immediate Window) будет выведено RDF — представление процесса VAD.
На схеме процесса (листы «vad» и «vadE» или вновь созданные) вызывается макрос Main (Alt F8), который в окне MsgBox выдаст часть RDF (в Visio 2016 и ранних отрезается 255 символов), а полный в окно отладчика.
Далее открываем Visual Basic Editor (Alt F11, Ctrl G) и окно Immediate (Debug.Print). При копировании русскоязычного текста из окна Immediate нужно включать русскую раскладку клавиатуры.
Для визуализации в виде графа из окна Immediate копируем RDF триплеты (Ctrl A, Ctrl C) и вставляем их, например, в RDF online редактор, например, RDF grapher и получаем граф.
Полученное представление более сложно для восприятия, но отражает «анатомические» (через онтологию) свойства формализуемого (моделируемого) процесса.
Microsoft десятилетиями ленится сделать нормальную поддержку в MS Office русского языка (особенно редактора Visio VBA), поэтому при копировании текста из триплетами RDF на русском из окна Immediate — нужно включать русскую раскладку клавиатуры. Поэтому и приведен «безотказный» англоязычный пример (лист vadE). Если нужно выгрузку RDF сохранять в файл, то можно заимствовать код из exDOT SmartDesign см. [SmartDesign24], в нем же для поддержки русского сделана перекодировка.
В приложении 2 — показан результат выгрузки в RDF (копия окна Immediate VBA‑редактора) «смысла» процесса, «обернутого» в синтаксис VAD. Полученное семантическое представление процесса в RDF (turtle) обеспечивает однозначное (в рамках используемой онтологии) понимание процесса и может служить универсальным форматом представления знаний о процессах.
Файл visioOntoVAD2.vsdm
В visioOntoVAD2.vsdm для визуализации графа без ручного переноса триплетов добавлен вызов https://www.ldf.fi/service/rdf-grapher?rdf=
Могут быть сложности: изменить путь к браузеру "C:\Program Files\Google\Chrome\Application\chrome.exe" или добавить замены, дополнительно к
ss = Replace(ss, " ", "+") ' Замена пробелов на +
ss = Replace(ss, "#", "%23") ' Замена # на %23
ss = Replace(ss, """", "%22") ' Замена " %22
3. Процессная ARIS-онтология
Как было уже сказано: ведущие BPMS — системы, например, ARIS, основаны на семантике, но нестандартной. Процессная ARIS‑онтология изложена на 5000 страницах [ARISMR17].
Покажем это на пример ARIS Method Reference Version 10.0 — Service Release 3. December 2017 [ARISMR17]:
П.3.2.128 Value-added chain diagram (стр. 2091) вводит триплет:
Source object type = Function
Relationship type (active) = is predecessor of (является предшественником)
Relationship type (passive) = follows (следует, т.е. обратная связь)
Target object type = Function
Таким образом, арисовкий триплет:
Function1 «является предшественником» (is predecessor of) Function2
эквивалентен показанному ранее:
Function1 «имеет следующий за ним элемент» Function2
или в формате RDF
:Function1 :hasNext :Function2 .
Аналогично можно построить триплет (атом знания) через обратные (в ARIS это «passive») предикаты: follows (ARIS) и hasPrev (previous — предшествующий).
Выше было упомянуто про добавление на схему VAD дополнительных элементов, включая входы и выходы в процесс (элемент Function). Для этого в п.3.2.128 [ARISMR17] указаны отношения is input for \ has as output. Пять тысяч страниц [ARISMR17] – это описание «скрытой» семантической части ARIS.
4. VAD — элемент и его представление в Visio
Для RDF — описания процесса был приведен упрощенный подход к VAD — элементу. Более полный включает указание исполнителей процесса (роли в процессе или подразделения \ должности). В ARIS объекты Organizational unit связаны с Function разнообразными типами связи [ARISMR17]: carries out (is carried out by), accepts (is accepted by), contributes to (is worked on by collaboration of), что, видимо, является перебором применительно к VAD.
На рис. 3 показана техническая реализация добавления (привязки) исполнителя (роли) и комментария через «Данные фигуры»: поле org (Organizational unit) и com (Comment), см. вкладку visio Данные и Расширенные рисунки, связанные с данными.
Через штатную связку visio с excel можно вести репозитарий объектов процесса в excel: excel — repo, визуализируемое через visio. Пример использования штатной связки в BPM‑проекте показано на Рис. Инструмент связывания данных visio + excel [easyEA23].
На VAD — схему добавляются и иные элементы, например, входы и выходы (материалы, документы), как показано на рис. 1.1в «Схема VAD» [SmartDesign24].
Заключение
Рассмотрено «прямое» преобразование: «схема → RDF», обратное преобразование «RDF → схема» может быть построена по технологии SmartDesign BPM, рассмотренной в [SmartDesign24] на примерах excel + dot (exDOT SmartDesign) и js + dot (jsDOT SmartDesign).
Semantic + Repository = Semantic Repository
Однако в случае с классическим BPMS остается вопрос, как и в каком формате хранить данные (логику) моделей? Данные о всех моделях компании и связях между моделями, атрибуты самих моделей и атрибуты объектов моделей. Модели процессов, структуры и иерархии процессов, организационных единиц, данных, документов и т. п. Да еще так, чтобы эти форматы были открытыми и «прозрачными».
Понятно, что речь не про формат Graphviz DOT (Mermaid, PlantUML и т.п.), т.к. это лишь промежуточное представление: синтаксические инструменты «обертывания смысла» через нотации в «цветные картинки» (графическая визуализация сущностей, их свойств, их связей, смыслов). Использовать реляционное (связанные таблички) представление данных модели, как это сделано во всех CASE\ BPMS системах, — это вариант постоянных экспортов \ импортов (ARIS XML) в закрытые проприетарные форматы каждой системы (ARIS Document format, ADF).
Логичным решением становится формат RDF. При этом реализация подхода «Semantic SmartDesign» (совмещение идей [semBPM24] и [SmartDesign24]) предполагает формирование из таблички кроме текстового DOT еще и семантическое описание в RDF \ OWL.
Похожий промер семантической формализации процесса, но в нотации ЕРС, см. https://habr.com/ru/articles/708026/comments/#comment_25053928
Алогичный пример планируется повторить на drawio, кому интересно — присоединяйтесь. Вообще, через выгрузку в RDF можно собирать единый Semantic Repository процессов из схем, сделанных в любых редакторах (visio, drawio) и в разных нотациях (VAD, EPC).
Вопрос: Путь от BPM к Semantic BPM — это встраивание технологий Linked Data в классический BPM (BPMS, т.е. ARIS и т. п.). Однако возможен путь от Semantic к Semantic BPM: для этого нужно найти инструменты Linked Data, которые помимо классического «графа знаний» смогли бы задавать нужные BPM — нотации (VAD, EPC и т. п.) для визуализации через них знаний.
Есть ли такие инструменты Linked Data? Есть попытки типа data explorer for neo4j (yworks), но построить на нем VAD диаграмму (другую BPM нотацию) проблематично (только прямоугольник, эллипс, картинка, нет задания направления и т. п.), кроме того привязка к neo4j и отсутствие загрузки файлов rdf.
Приложение 1. Анализ объектов схемы процесса в нотации VAD. Алгоритм обработки листа схемы visio
Запись @prefix
Первый проход: все объекты схемы. Все проходы (перебор объектов схемы) осуществляется через For Each DC In ActivePage.Shapes
Поиск ключевых элементов, которые потом будут использоваться для присвоения значений. В данном случае - это корневой элемент – родительский процесс (Parent для остальных) .Master = Заголовок_процесса. Находим и присваиваем значение переменной: MainProcess = .Text объекта «заголовок в схеме типа VAD». Если такого не находим, то:
MsgBox "На схеме не указан Заголовок_процесса (MainProcess). Перенесите из трафарета шаблон (Master) Заголовок_процесса"
Запись триплетов к MainProcess.
Второй проход: все объекты схемы.
Если это конектор (1D) и его тип Динамический_соединитель_VAD (ShpHasNext), то через функции Function Connect_in и Function Connect_out находим начало и конец.
Для получения идентификатора из имени объекта используем замену пробела на подчеркивание.
:Subject .Text = Название процесса, но пробелы в названии процесса преобразуем в “_”.
Далее вставляем предикат :hasNext (следующий элемент)
:Object .Text – end преобразуем в “_”
Формируем строку триплета:
Ss = ss & Chr(13) :Subject :hasNext :Object “_.”
Третий проход: все объекты схемы.
Поиск VAD – объектов. В зависимости от типа VAD - объекта формируем строку составного триплета, например:
:Нарезка_проволки
rdfs:label "Нарезка проволки" ;
rdf:type :Process ;
:hasParent :Изготовление_скрепки .
rdfs:label оправляет название процесса (подпроцесса), rdf:type – тип объекта (все VAD-кораблики это процессы, Function), предикат :hasParent определяет родительский элемент.
Приложение 2. RDF (turtle) процесса «Изготовление скрепки», построенный по схеме VAD
@prefix : <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
:Изготовление_скрепки
rdf:type :Process ;
rdfs:label "Изготовление скрепки" ;
:hasDia :VADscheme_Изготовление_скрепки .
:VADscheme_Изготовление_скрепки rdf:type :Diagram .
:Закупка_материалов :hasNext :Нарезка_проволки .
:Нарезка_проволки :hasNext :Сгибание_проволки .
:Сгибание_проволки :hasNext :Фасовка_изделий .
:Фасовка_изделий :hasNext :Складское_хранение .
:Закупка_материалов
rdfs:label "Закупка материалов" ;
rdf:type :Process ;
:isBegin :VADscheme_Изготовление_скрепки .
:Нарезка_проволки
rdfs:label "Нарезка проволки" ;
rdf:type :Process ;
:hasParent :Изготовление_скрепки .
:Фасовка_изделий
rdfs:label "Фасовка изделий" ;
rdf:type :Process ;
:hasParent :Изготовление_скрепки .
:Сгибание_проволки
rdfs:label " Сгибание проволки" ;
rdf:type :Process ;
:isExt :Изготовление_скрепки .
Некоторые ссылки:
[semBPM24] Semantic BPM. Семантика и синтаксис бизнес-процессов
[SmartDesign24] ВРМ. Смарт-инструменты «Таблица -> Схема» для формализации бизнес-процессов. Рестайлинг ARIS SmartDesign
[ARISMR17] ARIS Method Reference Version 10.0 - Service Release 3 December 2017
[easyEA23] Простая Enterprise Architecture. Архитектура компании садоводов
[i4go] I40GO: Industry 4.0 Global Ontology. File: variant-domain/manufacturingprocess/1.0/manufacture.owl
https://innoweb.mondragon.edu/ontologies/i4go
Среда Описания Ресурса (RDF): Понятия и Абстрактный Синтаксис
Как представлять библиографические данные в RDF
[Логика54] С.Н. Виноградов А.Ф. Кузьмин 1954 год Логика Аудиокнига.
visioOntoVAD.vsdm visioOntoVAD2.vsdm (vad diargam to rdf)
Комментарии (7)
Surrogate
11.07.2024 15:11Tumanov очень давно на тему "кавычек" и других спец-символов писал:
Но сейчас мы живем не с типографиями, а с интернетом и связанными с ним технологиями. А там любое извращение обязательно когда-нибудь выходит боком.Когда-нибудь вы подсунете пользователю текст, в котором "русские" кавычки превратятся в нечитаемый символ. Или в базе не сравнятся две строки, которые вроде бы обязательно должны были сравниться.
Это раньше пользователь смотрел глазами на напечатанную страницу.Сейчас он видит текст, которые по пути до него прошел огромную кучу программного обеспечения. Что до вас дойдет в итоге - неизвестно.
При копировании пути из визуализатора графа с последующей вставкой в разные приложения были нюансы. Без искажений текст ссылки вставлялся только в Notepad.exe
itGuevara Автор
11.07.2024 15:11+1Кавычки тоже через автозамену сработали. Вызов из visio визуализации графа см. Файл visioOntoVAD2.vsdm
Surrogate
ты задавал на форуме вопрос, как обойтись без копипасты и переключения раскладок!
------
На сайте RDF Grapher есть описание
где DATA_OR_URI - это твой триплет;
from=FORMAT- данные на основе которых строится граф, а данном случае from=ttl;
to=FORMAT - формат в который экспортируется граф.
При всавке триплета строится граф, у которого
ссылка выглядит следующим образом
https://www.ldf.fi/service/rdf-grapher?rdf=%40prefix+%3A+%3Chttps%3A%2F%2Fbpm%2Fprocess%2Fvad.ttl%23%3E+.%0D%0A%40prefix+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E+.%0D%0A%40prefix+rdf%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23%3E+.%0D%0A%3AMaking_a_paper_clip%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++rdfs%3Alabel+%22Making+a+paper+clip%22+%3B%0D%0A++++%3AhasDia+%3AVADscheme_Making_a_paper_clip+.%0D%0A%3AVADscheme_Making_a_paper_clip+rdf%3Atype+%3ADiagram+.%0D%0A%0D%0A%3ABuy_wire+%3AhasNext+%3ACut_the_wire+.%0D%0A%3ACut_the_wire+%3AhasNext+%3ABend_the_wire+.%0D%0A%3ABend_the_wire+%3AhasNext+%3APack_paper_clips+.%0D%0A%3APack_paper_clips+%3AhasNext+%3AProduct_storage+.%0D%0A%0D%0A%3ABuy_wire%0D%0A++++rdfs%3Alabel+%22Buy+wire%22+%3B%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++%3AisBegin+%3AVADscheme_Making_a_paper_clip+.%0D%0A%0D%0A%3ACut_the_wire%0D%0A++++rdfs%3Alabel+%22Cut+the+wire%22+%3B%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++%3AhasParent+%3AMaking_a_paper_clip+.%0D%0A%0D%0A%3APack_paper_clips%0D%0A++++rdfs%3Alabel+%22Pack+paper+clips%22+%3B%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++%3AhasParent+%3AMaking_a_paper_clip+.%0D%0A%0D%0A%3ABend_the_wire%0D%0A++++rdfs%3Alabel+%22Bend+the+wire%22+%3B%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++%3AisExt+%3AMaking_a_paper_clip+.%0D%0A%0D%0A%3AProduct_storage%0D%0A++++rdfs%3Alabel+%22Product+storage%22+%3B%0D%0A++++rdf%3Atype+%3AProcess+%3B%0D%0A++++%3AisEnd+%3AVADscheme_Making_a_paper_clip+.%0D%0A&from=ttl&to=svg
Можно заметить, что твои триплет записан в одну строку. И ряд символов заменен
При попытке программно сгенерировать граф вылезает ошибка
Проблема с символами < и >…
itGuevara Автор
from и to можно не использовать - по умолчанию подходят. А скобки наверное экранировать нужно, хотя вроде и не ругается:
https://www.ldf.fi/service/rdf-grapher?rdf=@prefix+ex:+<http://example.com/>+. @prefix+ex1:+<http://example11.com/>+.
Для демонстрации идеи это не принципиально, но из visio (drawio) вызывать визуализацию графа - было бы неплохо.
Surrogate
из Visio можно программно запустить браузер и открыть на странице визуализации графа
Surrogate
так ты все таки уже переходишь на draw.io? насколько удобно сидеть на двух
стульяхинструментах :)itGuevara Автор
Visio - намного мощнее штука, там почти все есть и на ней делают мощные BPMS системы, например, BPM-X и бизнес-студия. Плюс - можно скачать официальный дистрибутив (visio 2010, 2016 другие не пробовал) и он будет работать, лишь при первом старте выдавая предупреждение о необходимости лицензии. Основная проблема - это web (SharePoint не рассматриваю).
draw.io - тоже имеет много плюсов (но до visio еще далеко, да и BPMS на базе drawio не встречал), например, кроме Open source, в отличие от visio понятный файл XML, который прямо в VSCode (через плагин) показывает двухстороннюю связку в реальном времени.
Хотелось бы на обоих платформах сделать первый макет Semantic BPM для верхнеуровневых процессов, тем самым показав универсальный механизм использования формата RDF для хранения данных модели процесса (обе BPM - системы смогут взаимодействовать через него).