Содержание материала

9. Принципы работы WEB-сервера системы Electro

В составе системы имеются компоненты (CGI-модули, пакетный генератор отчетов RepGen.exe), позволяющие организовать работу клиентов системы на основе Web-технологии – на компьютере клиента достаточно наличия web-браузера (MS Internet Explorer) и настройки подключения к Серверу.
На Сервере должен функционировать стандартный комплект системы (База Данных, Ядро, компоненты сбора и обработки данных) и произвольный Web-сервер (MS IIS, Apachi, Xitami, EServ и др., согласуется с Заказчиком), поддерживающий протокол HTTP/1.1 и CGI-интерфейс.
Ориентация на CGI-интерфейс обусловлена его наличием в любом Web-сервере. Web-программисту предоставляется набор готовых CGI-модулей (ElCGI_xxx.exe) и исходные тексты интерфейсных функций (MS Visual C++) Ядра Electro.dll.
Естественно, возможно применение и других технологий web-программирования, расширяющих стандарт HTML и поддерживаемых конкретным web-сервером (JavaScript, JScript, VBScript, апплеты и сервлеты Java, ISAPI/NSAPI, PHP).
Что касается взаимодействия web-программы с системой Electro, то техническая сторона проблемы заключается в организации интерфейса между web-программой и Ядром (Electro.dll). По мере развития системы програмисту будут предоставлены интерфейсные модули Electro для Java, PHP, Perl и др.

Важное место в организации web-страниц системы Electro занимает программа RepGen.exe. Функционально это часть программы RepCnf.exe, обеспечивающая генерацию отчета (в форматах HTML и XLS) в пакетном режиме. Специальный CGI-модуль реализует на HTML-странице идентификацию пользователя, навигацию по базе данных шаблонов отчетов и ввод необходимых для генерации отчета меток времени, после чего запускает RepGen.exe. Результат работы генератора отчетов публикуется в виде HTML-страницы.

9.1 RepGen.exe – пакетный генератор отчетов

Синтаксис командной строки запуска программы:

RepGen RID=n [SRV=serv] [HTML=file] [XLS=file] [DTi=date] [RUN=macro] [VIEW]

где
n - Идентификатор шаблона (TB_Reports.RepId). Вы можете узнать этот код в программе RepCnf в диалоговом окне открытия шаблона;
SRV=serv - указание сервера ElectroHost. Шаблон и исходные данные будут взяты с указанного сервера. Если ключ не указан, будет использоваться локальная БД;
HTML=file - если ключ указан, RepGen генерирует отчет в html-формате. Обычно, эта опция используется Web-приложениями;
XLS=file - если ключ указан, RepGen генерирует отчет в указанный xls-файл.
Значение file может содержать литерал $DTn (n – идентификатор метки времени). Текст литерала будет замещен текстом значения соответствующей метки времени.
RUN=macro - when this key is used, RepGen try to execute macros macro in report.
Dti=date - define date for DT1, DT2.. ectc. in report. Possible date format is:
CURDAY
LASTDAY
DAYn
LASTMON
MONTHn
yyyy (year)
yyyy/mm
yyyy/mm/dd
yyyy/mm/dd hh
yyyy/mm/dd hh:mm
yyyy/mm/dd hh:mm:ss

Программа протоколирует события процесса генерации документа в файл RepGen.log размещаемый в папке Electro/log

Examples:
RepGen RID=2 XLS=”C:\Test.xls” DT1=LASTDAY
RepGen RID=2 XLS=”C:\Test.xls” DT1=2002/03/05 RUN=Button1Click
RepGen RID=2 XLS=”C:\Test for $DT1.xls” HTML=”C:\Test.htm” DT1=LASTDAY

RepGen exit code:
0 - successful
3 - Couldn't start Excel
4 - Old Excel version
5 - Error while automate Excel
6 - Report is absent in database
7 - Unsupported TB_Reports.Media
8 - Unsupported TB_Reports.Type
9 - Error while access to database

How RepGen working?:

  1. Try to load report pattern RID=n from PLS.TB_Reports to temporary XLS-file.
  2. Hidden start MS Excel (OLE-automation)
    • Enter dates from command line to ‘define date’ – cells. If date not defined, use current time, reduced to DefineDate type.
    • Retrieve data from NRS COM-server to cells.
    • [Run macros]
    • If HTML= then save html-file
    • If XLS= then save xls-file

3. Close Excel and exit.

RepGen is main program for build NRS Web-site. Usually, some [CGI-] module prepare dialog with user (navigate in report database, ask date etc.). After this, CGI-module run RepGen and publish HTML-document. It very simple J

Also. Sometime RepCnf have problem with Excel in OLE-container. So, I recommend use RepCnf only as Report Editor. For report generation, best ways is:

  • Web-based solution;
  • Simple shell for RepGen.exe (navigate in report database à ask dates à run RepGen.exe à open xls- or html- report in pure Excel).

9.2 XmlGen.exe - Пакетный исполнитель заданий

Программа XmlGen.exe является консольным вариантом оболочки вызова функции ElectroXML() из ядра Electro.dll (см. документ ElectroCNF.doc). Синтаксис:
XMLGEN ACTION=n INPUT=file [OUTPUT=file] [OPTION=txt] [SERVER=name]
Где n – код команды (задания):


0 – экспорт данных

1 – экспорт конфигурации

2 – замена конфигурации

3 – импорт данных

4 – не используется

5 – опрос устройств

6 – обновление данных в БД

7 – удаление данных из БД

Ключ INPUT указывает имя файла с XML-заданием;
Ключ OUTPUT указывает имя файла для результата выполнения задания;
Ключ OPTION содержит строку с опциями выполния.

Пример. В файле OPROS.xml перечислены некоторые переменные БД Electro. Нам необходимо выполнить чтение этих переменных из устройства, причем необходимо указать диапазон выборки данных:
XMLGEN ACTION=5 INPUT=opros.xml OUTPUT=result.xml OPTION=”FROM=DAY4 TO=DAY1”