Skip to content

Latest commit

 

History

History
23 lines (20 loc) · 1.9 KB

README.md

File metadata and controls

23 lines (20 loc) · 1.9 KB

JavaEL-to-FEEL

Общая струкутра логики перевода

  1. Построение AST сгенерированным ANTL4 билдером
  2. Обход AST и пометка простых операндов логических выражений
  3. На место операндов в выражении подставляется их id
  4. Выражение преобразуется к КНФ с помощью Pyeda
  5. Строится синтаксическое дерево КНФ - выражения
  6. По дереву JavaEL выражение строится дерево DMN выражений
  7. Каждая нода ExpressionNode дерева DMN выражений переводится в FEEL

Полученное DMN-дерево представляет уже переведенное выражение, по которому строится XML дерево

Структура DMN-дерева

  • DMN-дерево состоит из нод, представляющих выражение (ExpressionDMN) и нелогический оператор (OperatorDMN).
  • Каждый, кроме корневого, ExpressionDMN имеет id зависимых нод, вместо части выражения, которое они представляют.
  • Потомком OperatorDMN может быть как OperatorDMN, так и ExpressionDMN.

Генерация XML

Используется библиотека lxml. Обходя DMN-дерево, для каждой ноды генерируется ee xml представление DRD.

  • Для OperatorDMN это заготовленная таблица логики оператора с операндами на входе.
  • Для ExpressionDMN строится AST FEEL выражения и из него извлекаются необходимые аттрибуты.