Системные переменные

Наше приложение будет выводить перемещающиеся строки и для этого нам нужно эти строки хранить на стороне сервера с возможностью их редактирования. Для этого мы будем использовать системные переменные.

Системные переменные - это данные приложения хранящиеся в одном экземпляре и доступные в разных процессах приложения 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);