Как организовать цепочки согласающих для согласования документа?
Добрый день. Кто-нибудь может подсказать, как реализовывается подобный функционал?
Вопрос скорее абстрактный, но для конкретики пусть будет база данных Postgress.
Функционал. Есть документ, есть человек генерирующий наполнение этого документа, и есть согласующие ,которые определяются во время создания документа, список согласующих вариативный, может быть два человека , а может и 10.
С функциональной части это выглядит следующим образом , через UI жмется "создать документ" выводится пустая форма с полями которые необходимо заполнить, одно из полей согласующие, в это поле с помощю справочника добавляются люди.
Собственно сам вопрос, какая структура в БД должна быть , чтобы реализовать вариативный список согласующих?
С документов все понятно, определить изменяемые поля и хранить в отдельной таблице. А вот не детерминированный список пока не совсем ясно. Кто может подсказать, как подобное реализуется со стороны релиационных баз данных.
Или тут определенно нужно смотреть в Nosql типа mongo ?
Сначала определяем список должностей согласующих и сортируем их по старшинству: от минимального влияния подписи к максимальному (к самому старшему согласующему).
И записываем в ячейку таблицы виде json-данных с id-шниками всех согласующих.
Затем, считаем результат полного согласования:
T=A1*2^0+...+AN*2^(n-1),
где
N - это порядковый номер по старшинству,
A1..AN - это факт согласования каждым из цепочки: 1- согласовано, 0 - нет.
И записываем текущее значение согласования и целевое значение согласования в ту же строку в БД.
Когда разница будет равна 0 - документ будет полностью согласован всей цепочкой людей.