Графы
Граф – это файл с описанием последовательности обработки данных в формате XML. Имеет расширение .grf.
В этой главе описаны:
Структура файлов графов OneBridge
В системе определены некоторые элементы, которые стоит использовать для корректной передачи информации и отображения графов в инспекторе задач.
После декларации следует указать начальный тег корневого элемента документа <Graph>. В этот элемент помещается все описание алгоритма обработки данных, все используемые узлы, ребра и их метаданные.
За ним следуют строки, описывающие дочерние элементы корневого элемента. Два главных дочерних элемента это <Global> и <Phase>. В элементе <Global> описываются метаданные и параметры подключения.
Система OneBridge обрабатывает данные в виде записей. Каждая запись может состоять из нескольких полей разных типов. Метаданные хранят тип данных этих полей. Метаданные являются частью графа, они содержатся в файле графа и их нужно описывать в элементе <Metadata>, чтобы четко определить типы обрабатываемых данных.
Параметры подключения к базе данных, файлы с настройками, можно указать и подключить в элементе <GraphParameters>.
В <Phase> задаются атрибуты узлов графа <Node> и описываются ребра <Edge>. Описание узлов может содержать в себе дочерние элементы <Attr>, в которых описываются методы преобразования записей данных.
Последняя строка файла содержит конечный тег корневого элемента: </Graph>.
На схеме ниже представлена иерархия элементов в файле графа.
Элементы файла графа
Ниже приведена таблица с описанием возможных элементов файла графа.
| Элемент | Родительский элемент | Описание элемента |
|---|---|---|
| Graph | нет | Является главным элементом, определяющим граф. Содержит информацию о файле графа.* Обязательный тег для отрисовки графа в инспекторе. |
| Global | Graph | Содержит информацию о файле, не имеет атрибутов. Дочерние элементы: - Metadata - используемые метаданные; - GraphParameters – параметры графа; - Connection – подключения к базам данных. |
| Metadata | Global | Определяет тип данных записи |
| Record | Metadata | Используется для определения символов-разделителей полей и записей для узлов FlatFileReader и FlatFileWriter, которые читают и записывают данные изв плоские файлы. По умолчанию разделитель полей — "," разделитель строк — "n", если необходимо использовать другие разделители – нужно задать их в элементе Record с помощью конструкции:
|
| Field | Record | Содержит имя поля и его тип. Если задан Record, то все Field должны идти внутри него.
|
| GraphParameters | Global | Содержит элементы, в которых хранится информация для подключения к базам данных или путь к файлу для чтения. Может иметь атрибут scopeNonce - дополнительный параметр для защищенных параметров, например, пароля от базы данных. |
| GraphParameter | GraphParameters | Хранит параметры для используемых в файле узлов, например, путь к файлу для узла чтения данных. Атрибуты элемента описаны в таблице "Атрибуты элемента GraphParameter" |
| GraphParameterFile | GraphParameters | Подключает файл параметров. Атрибуты описаны в таблице "Атрибуты элемента GraphParameterFile" |
| Connection | Global | Хранит параметры подключения к базе данных. |
| Phase | Graph | Номер фазы присваивается узлам графа, если есть необходимость запускать часть узлов после завершения выполнения другой части узлов. Фаз в графе может быть несколько, так что им нужно присваивать атрибут number, указывающий очередность выполнения. Каждый граф выполняется параллельно в рамках одного и того же номера фазы; т. е. каждый узел и каждое ребро с одинаковым номером фазы выполняются одновременно. Если процесс останавливается на какой-то фазе, более высокие фазы не запускаются. Только после успешного завершения всех процессов в рамках одной фазы начнется следующая фаза. Ребра графа, в которых описывается соединение узлов должны быть описаны в одной фазе с используемыми узлами. То есть нельзя объявлять узлы в одной фазе, а связывать их ребром - в другой. |
| Node | Phase | Описывает атрибуты узла. Атрибуты описаны в таблице "Атрибуты элемента Node" |
| Attr | Node | Описывает логическое выражение для фильтрации и сортировки или метод преобразования данных. |
| Edge | Phase | Описывает связь между узлами графа. Атрибуты описаны в таблице "Атрибуты элемента Edge" |
Атрибуты элементов
Для графов: <GraphParameter> и <GraphParameterFile>
Для узлов:<Node>
Для рёбер:<Edge>
Атрибуты элемента GraphParameter
| Название | Обязательный | Описание | Возможные значения |
|---|---|---|---|
| name | да | Имя параметра | name="READ_DIR" |
| value | нет | Значение параметра | value="test/files/generated" |
| public | нет | Публичность параметра | Значение по умолчанию: public="false" |
| required | нет | Обязательность указания значения параметра при запуске графа | Значение по умолчанию : required="false" |
| secure | нет | Параметр зашифрован | Значение по умолчанию: secure="false" |
- если public="true" и required="true", тогда value игнорируется;
- если public="true" и value не задан, тогда required устанавливается в "true";
- если public="false", то required игнорируется;
- если public="false", то value должно быть задано;
- значение name не может содержать в себе подпоследовательность "${".
Атрибуты элемента GraphParameterFile
| Атрибут | Обязательный | Описание | Возможные значения |
| fileURL | да | Путь к файлу с параметрами |
|
Атрибуты элемента Node
| Атрибут | Обязательный | Описание | Возможные значения |
|---|---|---|---|
| id | да | Удобное название узла для указания в атрибутах ребер графа. | id="reader" |
| guiName | нет | Имя узла, отражаемое в инспекторе графов. Может быть любым. | guiName="read" |
| guiX | нет | Координата X левого верхнего угла узла для визуального отображения узла в инспекторе задач. | guiX="-132" |
| guiY | нет | Координата Y левого верхнего угла узла для визуального отображения узла в инспекторе задач. | guiY="212" |
| type | да | Тип узла. Определяет функциональность данного узла. |
Все имеющиеся в системе типы узлов: type="FLAT_FILE_READER" type="FLAT_FILE_WRITER" type="EXT_SORT" type="HASH_JOIN" |
Атрибуты элемента Edge
| Атрибут | Обязательный | Описание | Возможные значения |
|---|---|---|---|
| id | да | Уникальное название ребра в пределах графа. | id="edge0" |
| fromNode | нет | Имя исходного компонента с указанием порта. | fromNode="test_join:0" |
| toNode | нет | Имя конечного компонента с указанием порта. | toNode="FlatFileWriter1:0" |
| batch | нет | Объём данных, передаваемых ребром, в Мб. | batch="1024" |
| meta | да | Идентификатор метаданных, назначаемых данному ребру. | meta="metaname" |
В следующих главах более подробно рассмотрено устройство графов и описано взаимодействие с ними.