
1. ОБЩИЕ ПОЛОЖЕНИЯ


1.1.
jCjS предоставляет собой среду исполнения и систему ввода-вывода для программ
(скриптов) написанных на языке JavaScript (ECMA-262). Порядок выполнения
скриптов, набор встроенных объектов, методы добавления встроенных объектов
регламентируются действующей документацией.

1.2.
jCjS предназначен для построения различных систем автоматизации и управления
(СКУ), что отражено в методологии, структуре и правилах работы с программой.
Область применения jCjS не ограничено СКУ и, в ряде случаев, jCjS может быть
адаптирован для решения других задач, связанных с интеграцией интерпретатора
JavaScript и компилируемого С++ кода с применением библиотеки Qt.

1.3.
Как часть системы ввода-вывода jCjS содержит в своем составе HTTP сервер,
поддерживающий минимально-достаточное подмножество протокола HTTP/1.1 (RFC2068).
В него входят:
    - GET, POST запросы,
    - базовая авторизация,
    - шифрованное соединение HTTPS,
    - выдача куки (cookie).
Формирование HTTP ответа осуществляется выполнением специализированного
скрипта-обработчика события, при этом доступ к параметрам HTTP запроса
осуществляется через встроенный объект.

1.4.
Набор встроенных объектов JavaScript может быть расширен за счет плагин
системы. Назначение каждого конкретного плагина не регламентируется,
и может заключаться, например:
    - в расширении средств ввода-вывода JavaScript,
    - обеспечении интерфейса к различному оборудованию,
    - использовании различных библиотек сторонних производителей,
    - доступ к базам данных,
    - доступ к системным функциям.
Порядок написания, компиляции и внедрения плагинов описан в документации.
Предусмотрена возможность использования исходных кодов плагинов для "жесткой
прошивки" их функционала в исполняемый файл jCjS.

1.5.
В зависимости от настроек jCjS, возможна одновременная работа нескольких
процессов jCjS с различными настройками HTTP порта и/или одновременная
работа нескольких интерпретаторов JavaScript. Каждый экземпляр интерпретатора
хранит набор параметров, отвечающих за логически выделенную и независимую подсистему.
Встроенный сервер перенаправляет HTTP запросы определенному интерпретатору
JavaScript в соответствии с параметрами URL.

1.6.
jCjS содержит встроенные средства клиентской отправки HTTP запросов для
сбора и выдачи данных серверам, в том числе серверам jCjS, выполняемых
на удаленных машинах.

1.7.
jCjS (Gui-версия) имеет в своем составе встроенный отладчик скриптов,
позволяющий останавливать выполнение скрипта в точках останова,
с возможностью просмотра локальных переменных.

1.8.
Варианты компиляции, установка.
jCjS поставляется несколькими вариантами:
    1 - пакетами исходных кодов для проведения сборки
        под различные варианты использования на различных операционных системах
        и аппаратных платформах.
    2 - пакетами установщиками.

Основные поддерживаемые jCjS платформы:
    Linux: (x86, ARMv6)
        - Консольный вариант (служба <демон> или консольное приложение)
        - Графический вариант (иконка в трее)

    Win32: (x86, x86_64)
        - Консольный вариант (служба <демон> или консольное приложение)
        - Графический вариант (иконка в трее)

    QNX6: (x86, shle, ppcbe-spe, ppcbe, mipsle, mipsbe, armle-v7, armle)
        - Консольный вариант (служба <демон> или консольное приложение)
Со списком поддерживаемых платформ можно познакомиться на официальном сайте
фреймворка Qt http://qt-project.org/doc/qt-4.8/supported-platforms.html

1.9.
Ограничение доступа к файлам.
Организация встроенных объектов скриптов имеющих доступ к файловой системе
ограничивает их в доступе в пределах назначенных в настройках сервера директорий
и их поддиректорий.
Ограничение доступа к файлам сервера: настроечные файлы, файлы скриптов и
страниц HTML осуществляется администратором ОС средствами ОС.

1.10.
Настроечный файл в формате XML позволяет описать древовидную структуру
настроечных данных сервера и постов. Параметры настройки делятся на
    - обязательные,
    - необязательные
В обязательные параметры входят:
    - настройки сервера
        - порт сервера,
        - имя серверного поста
        - пути рабочих директорий: stat, data, logs, stuff
    - настройки постов
        - имя поста,
        - имена скриптов обработчиков событий: init.js, cmd.js, end.js,

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

1.11.
Элеватор заданий на последовательных портах.
В ядро jCjS входит элеватор заданий на последовательных портах (далее элеватор).
Элеватор позволяет выполнять опрос устройств, подключеных к последовательным интерфейсам.
Также он снимает ограничения, накладываемые требованиями на
подключение устройств к последовательным интерфейсам
(возможность опросить различные устройства с различными
протоколами обмена и/или аппаратными настройками соединения
расположенные на одном интерфейсе).
