Аналіз XML-редакторів для внесення змін до BPMN 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 Приклад

Інтерфейс веб-редактора

Основний інтерфейс редактора

xml

Автодоповнення

xml autocomplete

Порівняння версій xml

xml diff