Наше приложение будет выводить перемещающиеся строки и для этого нам нужно эти строки хранить на стороне сервера с возможностью их редактирования. Для этого мы будем использовать системные переменные.
Системные переменные - это данные приложения хранящиеся в одном экземпляре и доступные в разных процессах приложения FCF. Системные переменные имеют специальный строковой формат имени, который хранит в себе имя пакета/раздела и наименования переменной, разделенных символом ":". Формат полного имени имеет следующий вид: "[PACKAGE_NAME]:[VARIABLE_NAME]".
Перед использованием системных переменных их нужно зарегистрировать в системе.
Данные о системных переменных хранятся в конфигурации приложения в объекте systemVariables, где в качестве ключа выступает полное имя переменной, а в качестве значения объект со следующими полями:
- string value - Значение переменной при ее создании.
- string description - Описание системной переменной.
Перед редактированием конфигурационного файла остановите приложение fcfserver, так как при обновление файлов конфигурации (а так же JS файлов и файлов проекций) происходит перезапуск nodejs процессов и при новом запуске процесса выполнится создание системной переменной и если вы сохраните файл с недописанным параметром value, то начальное значение системной переменной придется устанавливать вручную.
Создадим системную переменную c именем "application:strings" в которой мы будем хранить строки в виде массива. Откройте в редакторе файл settings.config и добавьте в переменную systemVariables информацию о новой переменной.
Файл settings.config:
...
// The object containing the initial values of system variables.
// The key is the full name of the system variable, and the value is a object with a description
systemVariables: {
"application:strings": {
description: "Output lines",
value: [
"Hello world",
"Javascript",
"CSS",
"HTML"
],
}
},
...
Теперь запустите fcfserver и в выводе приложения увидите запись о создании новой переменной.
2022-06-25 13:51:43.476 [LOG] [SERVER]: --------------------------------------------
2022-06-25 13:51:43.477 [LOG] [SERVER]: Found a free [20410] port for the "Server control port (innerControlPort parameter)" ...
2022-06-25 13:51:43.477 [LOG] [SERVER]: Start server
2022-06-25 13:51:43.477 [LOG] [SERVER]: Start listening control port 20410 for the local event server
2022-06-25 13:51:43.487 [LOG] [SERVER]: Running processes...
2022-06-25 13:51:43.488 [LOG] [SERVER]: Found a free [20411] port for the "NODEJS application data port(dataPorts parameter)" ...
2022-06-25 13:51:43.488 [LOG] [SERVER]: Start process: /home/phoenix/development/fcf/fcfnode --max-old-space-size=275 fcf-example-moving-containers.js --server-name main --main-server-name main --handler-name application --process-index 0 --inner-control-port 20410 --port 20411 --host localhost --keep-alive-timeout 10 --leading --leak-protected
2022-06-25 13:51:43.775 [PID:213206] [LOG] [MOD:FCF]: Checking NODEJS dependencies...
2022-06-25 13:51:44.692 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcf ...
2022-06-25 13:51:44.902 [PID:213206] [LOG] [MOD:FCF]: Initialize package defaultTheme ...
2022-06-25 13:51:44.955 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcfStyles ...
2022-06-25 13:51:44.956 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcfControls ...
2022-06-25 13:51:44.968 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcfDBControls ...
2022-06-25 13:51:44.991 [PID:213206] [LOG] [MOD:FCF]: Initialize package managementTheme ...
2022-06-25 13:51:44.994 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcfManagement ...
2022-06-25 13:51:45.028 [PID:213206] [LOG] [MOD:FCF]: Initialize package fcfSimpleAuthorization ...
2022-06-25 13:51:45.061 [PID:213206] [LOG] [MOD:FCF]: Install system variable application:strings
2022-06-25 13:51:45.081 [PID:213206] [LOG] [MOD:FCF]: Listing on port 20411
2022-06-25 13:51:45.082 [PID:213206] [LOG] [MOD:FCF]: Applications is running ...
2022-06-25 13:51:45.219 [LOG] [SERVER]: Process started successfully (PID:213200): /home/phoenix/development/fcf/fcfnode --max-oldspace-size=275 fcf-example-moving-containers.js --server-name main --main-server-name main --handler-name application --process-index 0 --inner-control-po
rt 20410 --port 20411 --host localhost --keep-alive-timeout 10 --leading --leak-protected
2022-06-25 13:51:45.221 [LOG] [SERVER]: Listening started with port 8080
2022-06-25 13:51:45.221 [LOG] [SERVER]: Listening started :: with port 8080
Перечень доступных системных переменных можно посмотреть на странице пакета fcfManagement по ссылке http://localhost:8080/fcfpackages/fcfManagement/system/variables. Так же вы должны там увидеть нашу новую системную переменную.
Для доступа к системным переменным используются функции объекта fcf.application:
-
mixed fcf.application.getSystemVariable(srtring a_path);
-
fcf.Actions fcf.application.setSystemVariable(srtring a_path, mixed a_value);