Сегодня в статье мы поговорим о режиме вычисления выражений в отчете. По сути, их может быть только два – Интерпретация (Interpretation) и Компиляция (Compilation). Понятия эти общепринятые, однако в этом тексте мы разберемся, что они означают в рамках платформы Stimulsoft.

Режим вычисления отчета

Режим обработки выражения определяется для каждого шаблона в отдельности. По умолчанию, при создании нового отчета в Stimulsoft Designer для него используется режим Компиляция, а при создании нового дашборда – Интерпретация. Поскольку эта настройка относится к шаблону, то и изменить режим обработки можно с помощью свойства шаблона отчета, которое так и называется – Режим вычисления (Calculation Mode). В свою очередь, его значением может быть или Интерпретация, или Компиляция. Обратите внимание, все наши дашборды работают в режиме интерпретации.

Какой режим выбрать?

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

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

К слову, режим компиляции поддерживается в продуктах: Reports.Net, Report.Wpf, Reports.Web, Reports.Angular, Report.Blazor (только для Blazor.Server). В продуктах Stimulsoft BI Server, Dashboards.WIN и Dashboards.WEB режим компиляции актуален только для отчетов.

Вкладка Код

Поскольку речь в нашей статье идет о режиме вычисления выражений и обработки отчета, то следует упомянуть, что в нашем дизайнере есть возможность увидеть код отчета, который фактически и будет обрабатываться компилятором или интерпретатором. Для этого в приложении есть вкладка Код (Code), которая по умолчанию скрыта. Включить её можно из контекстного меню заголовка страницы шаблона отчета, установив флажок у параметра Код. Два важных уточнения: во-первых, в дизайнере отчетов должен быть выбран уровень сложности Расширенный (Professional). Про уровни сложности, у нас есть достаточно подробная статья. ;Во-вторых, вкладка Код содержит код всего отчета, а не конкретной страницы шаблона отчета.
Итак, после того, как вы открыли вкладку Код, необходимо в контекстном меню области редактора кода установить флажок параметра Показать авто-генерируемый код (Show auto generated code). В результате будет сгенерирован код отчета, который при построении и будет обрабатываться транслятором.

Code Tab

Подробности

Теперь о том, как это все касается Stimulsoft. Как известно, компиляция – это трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке. Причем, сначала выполняется анализ кода, затем его трансляция в низкоуровневый язык и выполнение. При интерпретации анализ кода и его выполнение осуществляется построчно. Однако, в нашем генераторе отчетов используется собственный интерпретатор, но он, к сожалению, не умеет обрабатывать выражения в событиях. Поэтому сценарии событий в режиме интерпретации работать не будут. Но решение есть всегда, и об этом чуть ниже.

События

При разработке отчетов есть возможность использовать события компонентов или самого отчета. Другими словами, вы можете определить действие, которое будет срабатывать при возникновении какой-либо ситуации. Например, перед началом построения отчета или при его экспорте, или если количество строк в отчете будет больше 10. Вообще, по событиям в отчете можно написать не одну статью, а использование событий и сценариев в них ограничивается лишь вашими требованиями к отчетам.

Это важно!

  1. Событие – это сценарий, который выполняется при возникновении определенной ситуации. Этот сценарий пишется на языке программирования используемого продукта. Для Stimulsoft Designer – это C# / VB.Net, а, например, для Reports.JS – JavaScript. Отсюда вывод – сценарий отчета, который работает в Stimulsoft Designer, не будет выполняться в Report.JS.
  2. В нашем генераторе отчетов используется собственный интерпретатор, который на данный момент не умеет обрабатывать выражения в событиях. Поэтому и сценарии событий в режиме интерпретации работать не будут.

Причем тут Blockly

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


Blockly Events
Это важно!

При создании сценария визуальными средствами не используется синтаксис языка программирования, а обработка этого сценария реализована отдельно для каждой платформы. Сценарий, созданный с помощью Blockly, является универсальным и не зависит от продукта, на котором он реализуется. Это актуально при разработке, к примеру, отчета в Reports.Net, а затем его построении в Reports.JS.

Коротко о главном

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

Надеемся, наша статья будет полезной для вас.
By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.