Инструменты пользователя

Инструменты сайта


glossary:graph

Графы – это логика по которой работают все услуги. Граф это формализованный набор бизнес-логики (бизнес-процесс), записанный как структура из вершин и «рёбер».

Граф описывает какое состояние может принимать подключенная абоненту услуга (или наряд) и при каких условиях эти состояния могут изменяться. Найти к какой услуге привязан граф можно в "Справочники" -> "Услуги".

ЕМИР ЖКХ поддерживает следующие виды графов:

Ребро графа соответствует условиям и действиям при переходе из одной вершины в другую.

Информация по зарегистрированным в АСР графам доступна в "Настройка" -> "Графы".

Редактирование графа

Сам граф редактируется в «Настройки» — «Графы».

  1. Находим нужный граф.
  2. Добавляем вершину графа. Ссылка «вершины» в окне редактирования графа.
    1. В поле «свойство» пишем «..State.Name»
    2. В поле состояние выбираем из выпадающего списка «Reference.ContractState» и нажимаем кнопку «выбрать», после чего открывается форма для выбора состояний графа.
    3. Устанавливаем авто смену в да/нет в зависимости от вершины графа.
    4. Нажимаем «сохранить», после этого вершина добавится в граф.
  3. Добавляем ребра в графе (Для новой вершины лучше сначала указать ребра из нее, чтоб автомат или менеджер не успел перевести заказ в это состояние до его полной настройки.).
    1. Выбираем вершину «от вершины».
    2. Выбираем вершину «к вершине».
    3. Задаем методы действий до перехода в эту вершину и после.
    4. Задаем вес — функция которая проверяет может ли заказ перейти в данную вершину. В качестве аргумента передается:
      1. auto — если состояние должно меняться автоматом.
      2. abon — если состояние может менять абонент.
      3. oper — если состояние может менять оператор.
      4. В случае если необходимо внести несколько возможностей, то они перечисляются через точку с запятой, например, auto=1;oper=1; (В разных графам могут быть и другие аргументы, все зависит от настройки конкретной услуги.)
    5. Задаем сортировку. В случае если два перехода из одной вершины вернули одинаковый вес — переход осуществляется по той, у который меньшая сортировка.

Рёбра графа являются направленными переходами из одной вершины (исходящая вершина, OutElement) в другую (входящая вершина, InElement)и описывают:

  • условие, при котором произойдёт переход: метод веса и его аргумент
  • действие, которое произойдёт ДО смены состояния
  • действие, которое произойдёт ПОСЛЕ смены состояния
  • порядок проверки (сортировки)

Условия, при котором произойдёт переход (метод веса) указывается как

  • метод - <имя класса>:<имя метода> - имя классметода, определённого в коде АСР
  • аргумент - дополнительный аргумент, который будет передан в классметод
  • сортировка - приоритет данного ребра над другими. Чем меньше значение, тем более приоритетно данное ребро из данного состояния.

Действие ДО или ПОСЛЕ указывается как

  • метод - <имя класса>:<имя метода> - имя классметода, определённого в коде АСР
  • аргумент - дополнительный аргумент, который будет передан в классметод

Обычно действие можно указать для выполнения ДО или ПОСЛЕ, но если выполнение действие предполагает, что заказ или наряд уже находится в нужном состоянии, то действие необходимо проставить в соответствии со сменой состояний (ДО или ПОСЛЕ).

Примером такого действия может служить блокировка зависимых от базовой услуг. Если блокировка зависимых услуг проверяет, заблокирована ли базовая, то обновление статуса зависимых услуг необходимо указать как действие ПОСЛЕ блокировки базовой.

glossary/graph.txt · Последнее изменение: 2026/06/11 09:50 — admin