Аналіз XML-редакторів для внесення змін до BPMN XML-файлів моделей бізнес-процесів
Приклади коду для редагування
BPMN XML-файл моделі бізнес-процесу
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:data="http://data.sh4.red" id="Definitions_0cjpvm2" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.6.0">
<bpmn:collaboration id="Collaboration_0pn1cv8">
<bpmn:participant id="Participant_02zjlbh" name="" processRef="add-lab" />
</bpmn:collaboration>
<bpmn:process id="add-lab" name="" isExecutable="true">
<bpmn:userTask id="addLabFormActivity" name="" camunda:modelerTemplate="formUserTaskTemplate" camunda:formKey="add-lab-bp-add-lab" camunda:assignee="${initiator}">
<bpmn:extensionElements>
<camunda:properties>
<camunda:property name="eSign" value="" />
</camunda:properties>
<camunda:inputOutput>
<camunda:inputParameter name="userTaskInputFormDataPrepopulate">${payload}</camunda:inputParameter>
</camunda:inputOutput>
</bpmn:extensionElements>
</bpmn:userTask>
</bpmn:process>
</bpmn:definitions>
Ключові вимоги до редактора
-
Підтримка автодоповнення
-
Синтаксичний аналіз
-
Підтримка валідації вибраної schema
-
Підтримка автодоповнення для вибраної schema
Аналіз на відповідність вимогам
Критерій / Функціональність | monaco-editor |
---|---|
Підтримка автодоповнення |
Так |
Підтримка валідації вибраної schema |
Базовий функціонал відсутній, але є можливість інтеграції з мовним сервером В якості мовного серверу використовується XML Language Server (LemMinX) |
Синтаксичний аналіз |
Базовий функціонал відсутній, але є можливість інтеграції з мовним сервером В якості мовного серверу використовується XML Language Server (LemMinX) |
Підтримка автодоповнення для вибраної schema |
Базовий функціонал відсутній, але є можливість інтеграції з мовним сервером В якості мовного серверу використовується XML Language Server (LemMinX) |
Підтримка можливості порівняння версій xml |
Так |
Підтримка коментарів |
Так |
Можливість згортання та розгортання блока з кодом |
Так |
Рішення за результатами аналізу
Рекомендовано використовувати бібліотеку monaco-editor, яка повністю покриває вимоги до XML редактора.
Підтримка темування та стилізації
Бібліотека monaco-editor надає доступні варіанти теми "vs-dark" | «light». Також ми можемо визначати власні теми за допомогою monaco.editor.defineTheme Приклад