У меня есть график с двумя определениями краев, как это:Arangodb пользовательского фильтра/посетитель моего графа дерева
isDepartment: [organisation] -> [organisation]
hasAccess: [user] -> [organisation]
организации вложены в дереве (без циклов). Существует несколько организаций верхнего уровня без каких-либо входящих isDepartment
ребер.
Пользователи получают доступ к одной или нескольким организациям. Это могут быть организации или организации верхнего уровня, расположенные ниже по дереву. Если пользователь имеет доступ к организации, он имеет доступ ко всем дочерним организациям.
Я пытаюсь создать пользовательский посетитель или фильтр, который предоставляет мне все доступные организации для пользователя, включая его путь к корню, а также свойство, если они доступны или нет.
Например, возьмем следующую структуру организации:
- корня
- Средств А.1
- Средств А.2
- Корень Б
- Департамент B.1
- Департамент B.2
- Субподготовка. B.2.1
- Root C
- Отдел C.1
- Отдел С.2
Теперь возьмите пользователя, HasAccess к Root A
и Dept. B.2
. Я хотел бы, чтобы генерировать следующий результат: дерево
- корня, доступный: истинный
- Отдел A.1, доступный: истинный
- Отдел А.2, доступный: истинный
- Root B, доступны: ложные
- Отдел В.2, доступный: истинный
- Субдепт. B.2.1, доступный: истинный
Обратите внимание, что Root C
и Dept. B1
не в результате, потому что они не доступны для пользователя, равно как и любой из их детей доступны.
Также обратите внимание, что Root B
включен, но обозначен как not accessible
. Это связано с тем, что пользователю предоставляется доступ только к ребенку Root B
, но не к самому корню.
Как я могу написать пользовательскую функцию/посетитель/фильтр, которые это сделали?
Ох, это выглядит очень хорошо. Спасибо, я собираюсь попробовать :-) –
Это не совсем так, но я добираюсь туда. Мне нужно добавить некоторую сортировку и вложенность (или отступы на vertex.name), чтобы получить нужный мне результат. –