О применении библиотеки FastScript в своих проектах. Часть-2 «Входные и выходные параметры FS-скрипта(при информационном обмене с внешними инициаторами)»


На предыдущую страницу…

Скачать/посмотреть:
Полный текст статьи в PDF-форматездесь статья в полном объеме;
Исходники иллюстрирующего примера (d12) в ZIP-архиве ;
Исходники в HTML-формате в ZIP-архиве;
Скомпилированные EXE-модули (иллюстрирующий пример) в ZIP-архиве.

См., также:
О библиотеке FastScript;
Соглашения, термины и сокращения.
Часть-1. Расширение функционала FS (локализация идентификаторов программных объектов).
— Часть-3. Группировка (распределение по модулям) добавляемых в FS программных объектов.
Часть-4. Парсинг раздела «Uses» FS-скрипта с целями: 1. «отвязки» от «абсолютного пути» в именах файлов; 2. корректной выгрузки библиотечных FS-скриптов, хранящихся в ИБ, и «подключения» их к «вызывающему» FS-скрипту.
Использование DataSnap-технологии на примере разработки комплекса взаимодействующих приложений (ОС Windows и ОС Android) в среде Delphi 10.2 Tokyo. Последовательность действий.


Автор излагает свой собственный подход к применению библиотеки FastScript, совершенно не претендуя на «истину в последней инстанции»


Общее замечание к этой статье: из-за различий в публикации материалов здесь (на этой ВЕБ-странице) и в PDF-файле, порядок нумерации рисунков здесь «несколько» нарушен (номера рисунков в обеих версиях статьи — совпадают).


В ряде случаев, когда FastScript применяется в гибких ИС, тексты FS-скриптов хранятся в таблицах БД и загружаются для выполнения периодически, согласно принятого регламента, или ситуативно, по «требованию» внешних инициаторов информационного обмена.

«Требования» инициаторов информационного обмена могут включать некие исходные данные, которые должны быть учтены при выполнении FS-скрипта (входные параметры FSI), и возвращаемые данные, полученные в результате выполнения FS-скрипта (вЫходные параметры FSI).

Входные параметры FSI могут быть преобразованы в константы FastScript,
а вЫходные параметры FSI – в переменные FastScript.


Т.е., некий функционал (из состава Обвязки) конвертирует поступившие входные параметры – в константы FastScript, а вЫходные параметры – в переменные FastScript.

А затем, соответствующий FS-скрипт выгружается из БД и (используя компонент TfsScript библиотеки FastScript) запускается на выполнение.

После того, как FS-скрипт выполнен, значения соответствующих переменных конвертируются Обвязкой в вЫходные параметры (для предоставления их инициатору информационного обмена в соответствии с требованиями).

См.рисунки ниже.

Обозначение выносок на рисунке 2:
Выноской-1 обозначен процесс анализа и нормализации задания (входные данные для исполнения, как входные параметры для FSI) от инициатора информационного обмена (Актор-1).
Выноской-2 обозначен процесс конвертации входных параметров FSI в перечень констант для fsScript (см. расширение функционала FastScript в предыдущей статье) и «загрузка» их в fsScript.
Выноской-3 обозначен процесс анализа и нормализации перечня возвращаемых инициатору информационного обмена данных (как вЫходные параметры FSI).
Выноской-4 обозначен процесс конвертации перечня вЫходных параметров FSI в перечень переменных для fsScript (см. расширение функционала FastScript в предыдущей статье) и «загрузка» их в fsScript.
Выноской-5 обозначен процесс выгрузки соответствующего FS-скрипта из БД и загрузка его в fsScript.
Выноской-6 обозначен процесс выполнения FS-скрипта (здесь может быть реализован, например, как алгоритм обработки информации, так и алгоритм управления программно-аппаратными комплексами).
Выноской-7 обозначен процесс конвертации переменных FS-скрипта в перечень возвращаемых (к инициатору информационного обмена) данных.

Существует далеко не один вариант реализации информационного взаимодействия между Акторами (см. рисунки 1 и 2).

Это могут быть, например, взаимодействия:

  • регламентируемые временными рамками (периодическое выполнение
     каких-либо расчетов и «выкладывание» результатов расчетов в «общий доступ» на уровне БД);
  • по заданию от инициатора информационного взаимодействия с использованием соответствующих таблиц БД;
  • по заданию от инициатора информационного взаимодействия в реальном времени.

Способ (в контексте использования FastScript) принципиального значения не имеет.

Поэтому, в рамках данной статьи приведен простой иллюстрирующий пример в варианте «по заданию от инициатора информационного взаимодействия в реальном времени».


Важно!

На рисунке 1 в информационный поток от Актора-1 к Актору-2 (задание) включен и перечень «возвращаемых данных».
В принципе, можно ограничиться только «данными к исполнению».
Но в общем случае может сложиться ситуация, когда в результате каких-то расчетов (на уровне FS-скрипта Актора-2) будет получено существенно «много» данных.
И далеко не все они могут быть необходимы Актору-1.
Включение в информационный поток перечня «возвращаемых данных» решает эту проблему.


Практическое применение библиотеки FastScript

Формат данных информационного обмена

Понятное дело, что формат данных при информационном обмене может быть различным. Но в данном случае будет использоваться простейший вариант − «список значений» (TStrings).

Входные параметры для FSI (формат данных от Актора-1 к Актору-2)

«Данные к исполнению»

«Данные к исполнению» (задание от Актора-1) являются входными параметрами для FSI. Перед выполнением FS-скрипта они конвертируются Оберткой в список соответствующих FS-констант.


«Возвращаемые данные (перечень)»

«Перечень возвращаемых данных» (задание от Актора-1) также являются входными параметрами для FSI. Перед выполнением FS-скрипта они конвертируются Оберткой в список соответствующих FS-переменных. После выполнения FS-скрипта, этот список заполняется значениями соответствующих FS-переменных и возвращается от Актора-2 к Актору-1.

После выполнения FS-скрипта, список «Возвращаемые данные со значениями» заполняется значениями соответствующих FS-переменных и возвращается от Актора-2 к Актору-1.


Размещение FS-скриптов

Тексты FS-скриптов хранятся в таблице БД SQLite.


Используемая технология: DataSnap

При разработке иллюстрирующего примера использована технология DataSnap (см. рисунок 3).

Весь специальный функционал, связанный с использованием библиотеки FastScript, размещен на DataSnap-Сервере (Актор-2).

DataSnap-Клиент (Актор-1) вызывает соответствующие методы DataSnap-Сервера.

На DataSnap-Клиенте реализован функционал, связанный с формированием «Задания» (исходных данных, необходимых для выполнения FS-скриптов) и визуализацией возвращаемых от Актора-2 данных.

Замечания:

  1. О технологии DataSnap есть достаточно много информации в Интернете, поэтому здесь дублировать нет смысла.
  2. Процесс создания Сервера и Клиента детально рассмотрен в другой статье, размещенной на сайте roamer55.ru.
  3. К данной статье прилагаются исходные тексты соответствующих проектов (иллюстрирующий пример).

Важно!

Поскольку это иллюстрирующий пример, то DataSnap-Сервер и DataSnap-Клиент взаимодействуют друг с другом в рамках localhost (т.е., должны быть запущены на одном компьютере).


DataSnap-Сервер (Actor-2)

Порт (используемый для информационного обмена): 50016

На рисунке ниже приведен внешний вид главной формы DataSnap-Сервера (в режиме разработки).

Методы DataSnap-сервера (см. рисунок 5):

Реализация этих методов – это, по сути, вызов соответствующих функций Обвязки.


Ниже приведены исходники функций Обвязки, непосредственно относящихся к теме данной статьи.

Конвертация входных и вЫходных параметров FSI

Функции, исходники которых приведены в этом разделе, выполняет основную роль при конвертации соответствующих данных информационного обмена между Акторами в FS-константы и FS-переменные

Функция MyParams_AddToFS

Функция MyParams_AddToFS предназначена для конвертации входных
и/или вЫходных параметров FSI в FS-константы и/или FS-переменные.

Исходник этой функции приведен на рисунке ниже.

Функция fs_VarConst_Add

Функция fs_VarConst_Add предназначена для добавления одного, конкретного входного или вЫходного параметра FSI − в FS-константу или FS-переменную.

Исходник этой функции приведен на рисунке ниже.

Функция MyParams_VarFromFS

Функция MyParams_VarFromFS предназначена для конвертации FS-переменных в вЫходные параметры FSI (после выполнения скрипта) для возврата их инициатору информационного обмена.

Исходник функции MyParams_VarFromFS приведен ниже


Все технические детали – см. исходные тексты иллюстрирующего примера:
Исходники иллюстрирующего примера (d12) в ZIP-архиве ;
Исходники в HTML-формате в ZIP-архиве.

Или см. здесь (Сервер. HTML-файлы):


DataSnap-Клиент (Actor-1)

Как было сказано выше: DataSnap-Клиент (Актор-1) вызывает соответствующие методы DataSnap-Сервера. На DataSnap-Клиенте реализован функционал, связанный с формированием «Задания» (исходных данных, необходимых для выполнения FS-скриптов) и визуализацией возвращаемых от Актора-2 данных.

На рисунке ниже приведены основные параметры DataSnap-Клиента.

На рисунке ниже приведен внешний вид главной формы DataSnap-Клиента (в режиме разработки).ы


Все технические детали – см. исходные тексты иллюстрирующего примера:
Исходники иллюстрирующего примера (d12) в ZIP-архиве ;
Исходники в HTML-формате в ZIP-архиве.

Или см. здесь (Клиент. HTML-файлы):

Проект (DPR-файл): FS_02_io_param_CLN.htm;
Главная форма Приложения (PAS-файл): fs02iopCln_01_main_pas.htm;
Главная форма Приложения (DFM-файл): fs02iopCln_01_main_dfm.htm;
Модуль класса ClientModule1 (PAS-файл): fs02iopCln_02_ClnModule_pas.htm;
Модуль класса ClientModule1 (DFM-файл): fs02iopCln_02_ClnModule_dfm.htm;
Модуль класса TServerMethods1Client (PAS-файл): fs02iopCln_03_ClnClasses_pas.htm;
Вспомогательный функционал (PAS-файл): fs02iop_00_lib.


Иллюстрирующий пример. Основные операции

К статье прилагаются, также, готовые EXE-модули DataSnap-Сервера
и DataSnap-Клиента:

FS_02_io_param_SRV.exe − DataSnap-Сервер;
FS_02_io_param_CLN.exe − DataSnap-Клиент;
FS_02_io_param.db – SQLite БД (где хранятся FS-скрипты).

Скачать их в ZIP-архиве: 02_FS_io_param_exe.zip.


Общие замечания:

  1. Сервер и Клиент должны быть запущены на одном компьютере.
  2. Сервер должен быть запущен ПЕРЕД Клиентом.
  3. Порт (50016) должен быть доступен для использования.
  4. Никакой «инсталляции» не требуется: «вытащил» из ZIP-архива и используй.
  5. Лучше создать отдельную папку и все три файла (см. выше) скопировать в нее.
  6. В таблице fs_scripts БД SQLite (см. файл FS_02_io_param.db)
    уже хранятся 3 простых скрипта (FS_Script_1_pas.htm, FS_Script_2_pas.htm, FS_Script_3_pas.htm).
  7. На рисунках 8 − 10 приведены основные элементы управления GUI
    DataSnap-Сервера и DataSnap-Клиента.


Начало «работы»

  1. Запустить DataSnap-Сервер (FS_02_io_param_SRV.exe).
  2. Запустить DataSnap-Клиент (FS_02_io_param_CLN.exe).
  3. Разместить окна Приложений на Экране так, чтобы было удобно.

3.2 Операции на Клиенте (FS_02_io_param_CLN.exe)

3.2.1 Получить список FS-скриптов

  1. Нажать на кнопку, обозначенную выноской-1 на рисунке 10.

Результат: список FS-скриптов (выноска-2 на рисунке 10) будет актуализирован.

3.2.2 Выбрать FS-скрипт в списке доступных

  1. Выбрать мышкой соответствующую строку в списке FS-скриптов (выноска-2 на рисунке 10).

3.2.3 Получить информацию о выбранном FS-скрипте

  1. В списке доступных действий (выноска-3 на рисунке 10) выбрать строку
    «Описание получить».
  2. Нажать на кнопку, обозначенную выноской-4 на рисунке 10.

Результат: в области, отмеченной выноской-6 на рисунке 10, появится описание выбранного FS-скрипта.

3.2.4 Получить «перечень данных к исполнению» для выбранного FS-скрипта

  1. В списке доступных действий (выноска-3 на рисунке 10) выбрать строку
    «Перечень необходимых (для расчета) данных получить».
  2. Нажать на кнопку, обозначенную выноской-4 на рисунке 10.

Результат: в области, отмеченной выноской-5 на рисунке 10, появится перечень соответствующих данных.

3.2.5 Получить «перечень возвращаемых данных» для выбранного FS-скрипта

  1. В списке доступных действий (выноска-3 на рисунке 10) выбрать строку
    «Перечень возвращаемых данных получить».
  2. Нажать на кнопку, обозначенную выноской-4 на рисунке 10.

Результат: в области, отмеченной выноской-6 на рисунке 10, появится перечень соответствующих данных.

3.2.6 Выполнить выбранный FS-скрипт

  1. Выбрать соответствующий FS-скрипт (см. раздел 3.2.2).
  2. Выполнить действия, указанные в разделе 3.2.4.
  3. Заполнить корректными значениями соответствующие параметры (см. выноску-5 на рисунке 10).
  4. Выполнить действия, указанные в разделе 3.2.5.
  5. В списке доступных действий (выноска-3 на рисунке 10) выбрать строку
    «В Ы П О Л Н И Т Ь».
  6. Нажать на кнопку, обозначенную выноской-4 на рисунке 10.

Результат: в области, отмеченной выноской-6 на рисунке 10, появится перечень соответствующих данных.


3.3 Операции на Сервере (FS_02_io_param_SRV.exe)

3.3.1 Обновить список FS-скриптов на Экране

  1. Нажать на кнопку, обозначенную выноской-2 на рисунке 8.

Результат: таблица (список) FS-скриптов (выноска-6 на рисунке 8) «Переоткроется».

3.3.2 Перенумеровать список FS-скриптов с шагом 10

  1. Нажать на кнопку, обозначенную выноской-4 на рисунке 8.

Результат: строки в таблице (списке) FS-скриптов (выноска-6 на рисунке 8) перенумеруются с шагом 10.

3.3.3 Создать новый FS-скрипт

  1. Нажать на кнопку, обозначенную выноской-3 на рисунке 8.
  2. В диалоговом окне ввести мнемокод скрипта (уникальное имя).
  3. Нажать на кнопку OK.
  4. Заполнить описание скрипта (выноска-7 на рисунке 8).
  5. Ввести исходный текст скрипта (выноска-11 на рисунке 8).
  6. Корректно (в соответствии с исходным текстом скрипта) создать списки входных и выходных параметров (см. рисунок 9).

3.3.4 Выбрать FS-скрипт в таблице (списке)

  1. Выбрать мышкой соответствующую строку в таблице (списке) FS-скриптов
    (выноска-6 на рисунке 8).

3.3.5 Удалить выбранный FS-скрипт

  1. Нажать на кнопку, обозначенную выноской-5 на рисунке 8.
  2. Нажать на кнопку OK в ответ на запрос о подтверждении.

3.3.6 Редактировать выбранный FS-скрипт

Выполнить соответствующие изменения (отредактировать содержание):
в строке таблицы (списка) скриптов (выноска-6 на рисунке 8);
в описании скрипта (выноска-7 на рисунке 8);
в исходном тексте скрипта (выноска-11 на рисунке 8);
в списках входных и вЫходных параметров (см. рисунок 9).

3.3.7 Отладка выбранного FS-скрипта

  1. Корректно (в соответствии с исходным текстом скрипта) ввести значения входных параметров (см. рисунок 9).
  2. На вкладке «Текст» нажать на кнопку «Компиляция» (выноска-9 на рисунке 8).
  3. Исправить ошибки в исходном тексте скрипта (если они есть).
  4. Нажать на кнопку «Выполнение» (выноска-10 на рисунке 8).
  5. Перейти на вкладку «Выходные парам.» (см. рисунок 9) и произвести контроль результата выполнения скрипта.

Скачать/посмотреть:

См., также:

На предыдущую страницу…


Дата: 27.02.2024