Выражения

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

Вычисление выражений

Формат таблицы Вычисление выражений:

Выражение пригодности источника

Выражение, определяющее, применимы ли настройки в этой строке к данной оценке выражения. Оно оценивается относительно источника вычисляемого выражения. Источник — это ссылка, однозначно идентифицирующая место в платформе, где определено выражение — например, конкретное выражение привязки, функция или условие набора правил в модели. Источник текущего выражения доступен в виде переменной среды {env/reference}.

Выражение может возвращать:

  • Строку (включая окружающие кавычки). Строка применяется, если она точно совпадает с текущим источником. Каждый экземпляр Expression Builder автоматически добавляет сущность в этом формате для своего источника, чтобы сделать соответствующее выражение отлаживаемым. Сущность удаляется при закрытии Builder.

  • Логическое значение. Выражение вычисляется относительно текущего источника с использованием {env/reference} , и строка применяется, если результатом является true. Это позволяет создавать гибкие условия сопоставления. Например: referencePart({env/reference}, "context") == "users.admin.models.myModel" применяет строку ко всем выражениям в указанной модели.

Примечание: для компонентов инструментальной панели часть «контекст» источника содержит контекст самого компонента, а не инструментальной панели, к которой он принадлежит. Путь контекста содержащей инструментальной панели помещается в часть «сервер». Чтобы охватить все выражения в пределах инструментальной панели, используйте: referencePart({env/reference}, "server") == "users.admin.dashboards.myDash".

Отладка

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

Отслеживать переменные окружения

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

Отслеживать сессионные переменные

Доступно только при включенной отладке. При включении переменные сеанса сохраняются как часть данных вычисления. По умолчанию отключено по тем же причинам, что и Отслеживать переменные среды.

Режим высокой точности

Когда включено, соответствующее выражение вычисляется с использованием арифметики высокой точности вместо стандартной double (64-битная плавающая запятая IEEE 754), что устраняет ошибки округления, которые могут накапливаться при вычислениях. Например, 0.2 + 0.3 + + 0.4 Вычисляется как точно 0.9 вместо 0.9000000000000001. Включайте эту опцию только для выражений, в которых критически важна точность десятичной части.

Строки обрабатываются сверху вниз. Применяется первая подходящая строка, и результат запоминается (кэшируется) до тех пор, пока таблица не изменится. Это также относится к несопоставленным источникам для ускорения последующих проверок. Более конкретные правила должны располагаться выше более общих.

Примеры

Чтобы включить режим высокой точности для конкретного выражения, откройте его в конструкторе выражений, скопируйте ссылку на источник из раздела Источник на панели Окружение и используйте ее в качестве строкового литерала в поле Выражение пригодности источника:

  • Выражение пригодности источника: "users.admin.models.myModel:modelFunctions$expression[0]"

  • Режим высокой точности: Включить

Чтобы применить режим высокой точности для всех выражений в модели, используйте referencePart({env/reference}, "context") для сопоставления по пути модели:

  • Выражение пригодности источника: referencePart({env/reference}, "context") == "users.admin.models.myModel"

  • Режим высокой точности: Включить

Was this page helpful?