Принципы организации и обработки данных

В связи с большим разнообразием типов объектовых приборов, а также не меньшим разнообразием вариантов их конкретной конфигурации текущее состояние системы, включая конфигурацию и текущие значения представлено в оперативной памяти ПК и на жестком диске в виде древовидной структуры XML документа. Исключение сделано лишь для многократно провторяющихся однотипных данных, таких как точки траектории движения, записи системного лога и т.п., для хранения которых идеально подходят реляционные СУБД, такие как MySQL, Microsoft SQL Server.

Обобщенный образец дерева состояния системы мониторинга

Здесь и далее внутренние данные АРМ мониторинга представлены в виде XML документов. Необходимо отметить, что "внутри" программы они естественно хранятся в более удобном для компьютерной обработки виде. Но исходя из соображений удобства объяснения логики работы программы мы будем представлять их в виде текстовых XML документов.


<system>
  /// Общая конфигурация.
  <config>
	/// Сетевые настройки
	<network ping="ya.ru" own_ip="87.103.184.158"> ... </network>
	/// Настройки карт
	<map> ... </map>
	/// Настройки СУБД
	<db> ... </db>
	/// и многое другое
    ... 
  </config>

  /// Конфигурация и текущие данные объектов
  <state>
    <!-- Объекты разбиты на группы-->
    <group name="Первая группа">
      <object id="0000000000" phone="+79507930358" name="Третий" color="16711935" debug="3" eventparser="test1.xsl" statecolor="0" change="1">
      ...
      </object>
	  
      <object id="44678998877654" phone="+7961234567" name="Офис" color="8388863" eventparser="test1.xsl" statecolor="0">
      ...
      </object>
	  
	  ...
    </group>
	
    <group name="Вторая группа">
	...
    </group>
  </state>
  
</system>

Все данные поступающие от объектовых приборов также представляются в формате XML, как наиболее гибком и универсальном. Конкретная структура и набор элементов определяются типом объектового прибора и способом, при помощи которого сообщение было передано (отдельные приборы могут использовать несколько возможных путей доставки сообщений, например посредством SMS, прямого модемного соединения или через GPRS)

Также представляются внутренние события системы, такие как срабатывание таймера или нажатие заданной пользователем кнопки на панели инструментов

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

Обработка события

Рис. 26

Подробнее можно узнать в соответствующих разделах

Перед обработкой события с помощью XSLT скрипта формируется временный XML документ (он хранится в оперативной памяти ПК, но может быть сохранен на жесткий диск для анализа), который включает все необходимые для работы скрипта данные. Это делается для ускорения обработки при большом количестве объектов. Подробнее структуру отдельных тэгов можно посмотреть в соответствующих разделах описания.

Обобщенный образец временного документа, формируемого для обработки события


<tmp>
  /// Общая конфигурация. Копируется из дерева состояния системы.
  <config>
  ... 
  </config>

  // Конфигурация и текущие данные объекта, копируется из дерева состояния системы.
  <object id="0000000000" phone="+79507930358" name="Третий" color="16711935" debug="3" eventparser="test1.xsl" statecolor="0" change="1">
  ...
  </object>
  
  // Собственно  событие
  <event name="programstart" objectid="0000000000" src="" ts="2007-06-30 16:14:10"/>
</tmp>

При обработке XSLT скриптом все данные всех тэгов и аттрибутов временного документа могут быть получены при помощи выражений XPath