Перейти к основному содержимому

Консоль выражений

Этот документ был подготовлен при помощи ИИ

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

Выражение отвечает на вопрос о модели: есть ли у элемента имя, какие процессы реализует компонент. Модель изменяют два языка из пяти.

Консоль выполняет выражения над выделенным объектом и ничего не сохраняет.

Режим выражений

  1. Откройте панель Ассистент.
  2. Раскройте переключатель языка под полем ввода. Первый пункт — Чат, ниже перечислены Acceleo Query Language (AQL), Object Constraint Language (OCL), Epsilon Object Language (EOL), Common Expression Language (CEL) и SPARQL.
  3. Выберите AQL.

Поле ввода подсветит синтаксис, кнопка отправки станет кнопкой запуска. Выбор языка сохраняется для следующих запросов.

Запрос

Выделите в навигаторе моделей компонент приложения ArchiMate и выполните:

self.outgoingRelationships
->select(r | r.oclIsKindOf(archimate::RealizationRelationship))
->collect(r | r.target)

self — объект, выделенный в навигаторе моделей на момент запуска. Если ничего не выделено, self — корень текущей модели. Эта переменная есть в любом языке, в SPARQL она называется ?self.

Результат выводится в переписку по элементу на строку. Объект модели показан подписью с типом — Label (BusinessProcess). Это ссылка: по щелчку объект раскрывается и выделяется.

Консоль с запросом на AQL и результатом: элементы, которые реализует выбранный компонент

КлавишаДействие
EnterВыполнить запрос или принять подсказку
Shift+EnterПеревод строки
Up, DownПредыдущий и следующий запрос из истории

Автодополнение есть в AQL, OCL и SPARQL. Ошибки подчёркиваются по мере ввода, первая выводится под полем; пока запрос содержит ошибку, кнопка запуска недоступна.

Выбор языка

ЯзыкНазначениеЧитаетИзменяетАвтодополнениеПроверка до запуска
AQLНавигация по модели, поля выражений метамоделиДаНетДаСтатическая типизация
OCLИнварианты в правилах проверкиДаНетДаСтатическая типизация
EOLБыстрые исправления и другие изменения моделиДаДаНетСинтаксис
CELКомпактные проверки с операторами в духе CДаНетНетСинтаксис и тип результата
SPARQLЗапросы к модели как к RDF и обновленияДаДаДаСинтаксис и требование ASK для логического результата

Изменяют модель только EOL и SPARQL Update, поэтому быстрые исправления пишут на них.

Читающее выражение отличается от изменяющего по телу, а не только по языку. Тело на EOL с разделителем операторов ; — программа, изменяющая модель; без разделителя это одиночное выражение, вычисляемое ради значения. В SPARQL читают SELECT, ASK, CONSTRUCT и DESCRIBE, изменяет UPDATE.

Изменение модели

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

  • Флажок снят — сначала просмотр: выполнение приостанавливается и показывает список изменений, ничего не записывая.
  • Флажок установлен — изменения применяются сразу.

В просмотре по строке на изменение, каждая начинается с его типа: CREATE, DELETE, SET (характеристика: было → стало), ADD, REMOVE, MOVE. Изначально отмечены все строки. Снимите отметки с ненужных и нажмите Выполнить; Отмена отбрасывает весь набор.

Изменения записываются одной транзакцией: сбой в любой части откатывает всё. Набор для просмотра действует десять минут, после чего выражение нужно выполнить заново. Изменения, которые больше не подходят к модели, пропускаются, и задача сообщает их число.

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

Другие места, где пишут выражения

  • Правила проверки и быстрые исправления — четыре поля: Precondition Language, Precondition, Implementation Language, Implementation. Правило может проверять на AQL, а исправлять на EOL. Реализация правила возвращает логическое значение: true — инвариант выполнен. Реализация быстрого исправления обязана менять модель, читающее тело редактор отклоняет.
  • Конструктор метамоделей работает только на AQL: Predicate у класса сущности, Display Expression у подписи, Allowed Values у ссылки.
  • Документы используют один язык на весь документ, он задаётся полем Язык выражений в форме документа. Выражения документа модель только читают.