Общий порядок загрузки данных
Содержание
Используемые технологии
Передача данных из АИС РГ в ИУС-ГАЗ осуществляется на базе Веб-сервиса, предоставляемого АИС РГ.
Для коммуникации используются:
- коммуникационный интернет-протокол HTTP;
- протокол для управления сообщениями в универсальном XML-формате — Simple Object Access Protocol (SOAP);
- язык для описания интерфейсов взаимодействия компонент распределенной системы — Web Services Description Language (WDSL).
Для описания методов, предоставляемых сервисом, и поддерживаемых протоколов используется файл в формате WSDL. Адаптер ИУС-ГАЗ вызывает методы веб-сервиса, отправляет запросы и получает результат запросов. Настройка параметров взаимодействия проводится при развертывании и настройке ИУС-ГАЗ.
Общий порядок загрузки данных из АИС РГ
Поскольку ИУС-ГАЗ является диспетчерской системой, в первую очередь импортируются текущие объекты учета (справочники ГРС, ГРО, площадки, точки подключения, планы поставок). В терминах АИС РГ это означает, что в большинстве случаев данные забираются из регистров, где между объектами имеется связь, объекты не помечены на удаление, и берется СрезПоследних данных регистров.
История изменения состояний объектов АИС РГ в общем случае не является целью импорта в ИУС-ГАЗ, поэтому, если имеется реестр и возможность получить актуальные данные, будут импортироваться именно они (имеются признаки ЕстьСвязь, Установлено, Активно и тому подобные, в зависимости от контекста).
В качестве идентификатора импортируемых данных используется UID (UUID, GUID).
Проблема некорректности загружаемых данных
При загрузке данных из АИС РГ в ИУС-ГАЗ возникает множество проблем, связанных с некорректностью входных данных. Предпринимается попытка загрузить максимальное количество данных, включая объекты, содержащие некритические с точки зрения текущей бизнес-логики ошибки. Некорректные данные помечаются специальным образом и доступны в интерфейсе ИУС-ГАЗ для просмотра и отбора. Также доступно представление проблем, возникших при импорте данных, в виде отчёта.
Некорректными считаются данные, которые нарушают текущую логику учёта газа, согласно методологии МРГ. Прежде всего, речь идёт о нарушении ссылочной целостности и взаимосвязи объектов. Например, площадка, для которой нет потребителя, является некорректной, так как согласно логике учёта газа площадка без потребителя не может существовать.
Конкретные варианты некорректности данных (типы ошибок) для большинства загружаемых типов, а также указания по локализации проблем и способы их устранения описаны в отдельно.
Любой тип ошибки (код, номер) может быть полностью исключён из проверки с помощью опции конфигурации ais.ws.muteErrors и не будет показываться ни в отчёте, ни в АРМе. Решение об исключении того или иного типа ошибки может быть принято, например, если некорректность данных не является критичной для взаимодействия двух систем. Характерным примером может быть ведение районов на площадках. Если район никогда не вёлся для площадок в АИС РГ, этот атрибут не является критичной ни для какой ключевой логики ИУС-ГАЗ и компания не планирует проводить аналитику по данному разрезу в будущем, можно отключить и не проверять данный атрибут на заполненность |
Данные с некорректными датами
В общем случае корректными считаются даты после 1 января 1945 года ("1945-01-01")[1].
Особым случаем считается дата "0001-01-01" ("пустая" дата в терминах АИС РГ). "Пустые" даты пропускаются, если параметр не должен быть обязательно заполнен.
Дубликаты
Дубликатом (дублем) считается именно дубликат загружаемого из АИС РГ мастер-объекта. При этом сверяются не названия и какие-то атрибуты объектов, а UID объектов или Ссылки в терминах АИС РГ.
Чаще всего дубли возникают, когда данные загружаются из реестров, по которым возможна множественная связь одних объектов с другими. Яркий пример - один и тот тот же корректор одновременно установленный на нескольких УУГ.
В данном примере суть обычно в следующем: Хотя АИС РГ и позволяет развесить ИО на конкретные каналы вычислителя[2], однако развесить ГПО по каналам нету никакой технической возможности в принципе. Поэтому в случаях, когда нужно вести раздельный учёт по установленной мощности, многими компаниями применялись различные, но схожие по сути подходы: создавались фиктивные корректор (вычислитель) и/или УУГ |
При импорте загружается только первый объект, имеющий дубли, остальные пропускаются. Причем под "первым" объектом в данном случае имеется ввиду именно первый объект по выгрузке, то есть условия сортировки в каждом конкретном случае определяются запросом, и первым не обязательно будет актуальный объект.
Удалённые (помеченные удаленными) объекты
Объекты, помеченные на удаление в АИС РГ, обрабатываются следующим образом:
- Если таких объектов не было в ИУС-ГАЗ, то при первоначальном импорте они игнорируются.
- Если приходит объект, который ранее уже был импортирован, и в данный момент он помечен на удаление, то объект помечается на удаление в ИУС-ГАЗ. Все остальные изменения применяются также.
За исключением ошибок. Ошибки не будут появляться по таким объектам в отчёте! Где возможно проставятся значения по умолчанию, если нельзя, объект будет молча пропущен. |
- Если объект был уже помечен на удаление в ИУС-ГАЗ (согласно предыдущему пункту), а при очередном импорте он приходит не удаленным, то такой объект снова возвращается в ИУС-ГАЗ (пометка удаления снимается).
- Объекты, фактически удаленные в АИС РГ (а не помеченные на удаление), а также переставшие быть активными (и значит просто не приходящие для обновления на текущий момент), по умолчанию[3] не трогаются вовсе. Они могут быть оставлены как есть, или удалены вручную. Рекомендуется, если объект в АИС РГ помечается на удаление, выполнить импорт таких объектов в ИУС-ГАЗ, чтобы в ИУС-ГАЗ эти объекты также пометились на удаление.
С версии версии 17.0 появилась возможность их скрывать. Но во избежание неожиданностей (данное поведение рассматривается как опасное) и для обратной совместимости требуется явное включение данного поведения для каждого типа объектов где это желательно. За это отвечает опция конфигурации ais.ws.dvisAbsent. Для любого типа объектов это может быть включено по запросу. |
Таким образом, доступна синхронизация удаления объектов двух систем.
Следует обратить внимание, что в большинстве запросов удаленные объекты исключены для выверки.
Помеченные на удаление объекты из АИС не загружаются. Если необходимо, например, синхронизировать УУГ, то можно включить опцию dvisAbsent=Tuug. Тогда все непришедшие из АИС УУГ будут скрыты в ИМУС. |
Связывание на общие справочники
В ИУС-ГАЗ ведутся глобальные справочники некоторых объектов (таких как трансгазы, региональные газовые компании, группы отраслей, отрасли, субъекты РФ, и т.д.).
До тех пор как импортированные для них ПМ не будут связаны - будут появляться ошибки в имеющихся на них при загрузке ссылках.
Исправление проблем
Ошибки в именах должны пропасть, а объекты связаться соответствующим образом.
Обратите пожалуйста внимание на каскадную природу ошибок и очерёдность исправления проблем и перезагрузки элементов.
Проблемы на стороне АИС РГ
Большинство проблем должно быть исправлено на стороне АИС РГ, затем такие данные должны быть импортированы в ИМУС снова.
Проблемы на стороне ИУС-ГАЗ
Также, имеется пласт ошибок, в основном имеющих суффикс в коде ошибки "_1" относящихся прежде всего к маппингу и разности схем двух систем. В таких случаях требуется вмешательство на стороне ИУС-ГАЗ. Характерным примером является невозможность в ИМУС связать вместе ТП и площадку, если у площадки нету канала. Таким образом, требуется наличие полного тракта Площадка -> УУГ -> корректор -> канал). Т.к. для АИС РГ чаще всего не желательно вести или генерировать структуру с такой детализацией, данные сущности могут быть сгенерированы в ИУС-ГАЗ.
Перезапрос данных, команды внешних систем
Большинство команд адаптера имеют соответствующий пункт в меню команд внешних систем[4].
Перезапрос данных осуществляется следующим образом:
- На форме "Внешние системы" (пункт дерева раскрывать не надо) в АРМ ИУС-ГАЗ выбирается внешняя система АИС (для удобства можно воспользоваться фильтром типа систем в верхнем правом углу, выбрав там тип "Учётная система")
- На вкладке "Редактор" формы "Внешние системы" выбирается команда "Команды – Команды учётных систем".
- Выбирается команда загрузки необходимых данных.
- В появившемся модальном окне заполнить необходимые параметры, если есть[5] и нажать кнопку "Отправить команду (ы)".
- Откроется окно лога, в котором вы увидите сообщения об отправке команды, доставки ее адаптеру и затем краткую сводку о выполнении: Сколько объектов загружено, сколько ошибок и т.д.
Следует обратить внимание, что процедура загрузки объектов может быть весьма продолжительной (загрузка планов может занимать десятки минут в зависимости от запрошенного периода) |
Для удобной отправки одной и той же команды на сервере, можно использовать утилиту amq-command |
Отчёт о состоянии синхронизации
В целях упрощения анализа текущего состояния импорта объектов реализован отчёт о состоянии, дающий как общее представление о проблемах, так и описание каждой ошибки, произошедшей на конкретной операции. Типичным является итеративное исправление указанных в нём проблем, и формирование нового.
Генерация структуры вниз
Генерация структуры возможна от Площадки, Узла или Корректора.
В общем случае, просто необходимо выбрать объекты для которых предполагается сгенерировать потомков, и из контекстного меню выбрать пункт "Генерировать вниз".
Особенности алгоритма генерации:
- Операция не деструктивна, и всегда генерирует только 1 прямого потомка (УУГ для площадки или Выхода ГРС, корректор для узла, канал для корректора). Таким образом может быть выполнена несколько раз для одного и того же объекта - дублей создаваться не будет.
Однако стоит заметить что для большого количества объектов это может потребовать значительного времени выполнения. Пользуйтесь спецфильтрами для отбора элементов без потомков! |
- Генерация останавливается на первом потомке, если он есть. Так, если имеется Площадка с узлом она будет пропущена при генерации от Площадки. Необходимо будет выполнить такую операцию от узлов и корректоров соответственно, если там могут быть элементы без потомков также.
- В момент генерации будет выведено диалоговое окно с вопросом как формировать имена генерируемых элементов.
- Чтобы иметь возможность отличать объекты фактически импортированные из АИС РГ и генерированные, в поле объекта Ид. во внешней системе дописывается префикс "gen:"
В случае, если в АИС РГ вообще не ведётся структура ниже площадок, адаптер имеет команду автоматической генерации всей недостающей структуры, которая может быть также настроена на автоматическое регулярное выполнение.
Ответственными за структуру и в том числе за генерацию недостающих элементов являются представители РГК.
В общем случае не стоит генерировать потомков для всех подряд! Если вы знаете что площадка телеметризирована и завтра-послезавтра для неё будет создан УУГ в АИС РГ - лучше подождать. Иначе, когда импортируется реальный узел - появится смысловой дубль элемента, который придётся искать и удалять вручную[6] |
Примечания
- ↑ предполагается что в базе не может быть валидных объектов с датами ранее этой
- ↑ Весьма не удобным способом правда, около 8 кликов мышкой требуется, но тем не менее такая возможность имеется
- ↑ С версии версии 17.0 появилась возможность их скрывать. Но во избежание неожиданностей (данное поведение рассматривается как опасное) и для обратной совместимости требуется явное включение данного поведения для каждого типа объектов где это желательно. За это отвечает опция конфигурации ais.ws.dvisAbsent
- ↑ Доступ к тем или иным командам может гибко настраиваться администратором системы на основе доступных ролей, таким образом не все могут быть доступны каждому пользователю и/или АРМу. Возможность доступна с версии 1.3.34.
- ↑ Большинство команд не имеют параметров. Параметрами могут быть например диапазон дат запроса планов
- ↑ Ранее это можно было сделать только вручную, а при массовых чистках по запросу к нам. С версии 17.0 реализован режим замещения, но пользоваться им также нужно с осторожностью (в общем случае не рекомендуется)