16
RELATION MODULE Artem Berdishev

Relation module

Embed Size (px)

DESCRIPTION

Presentation about Relation (http://drupal.org/project/relation) module on DrupalCamp Donetsk 2011 (http://donetsk.drupal.ua)

Citation preview

Page 1: Relation module

RELATION MODULE

Artem Berdishev

Page 2: Relation module

Зачем нужен Relation?

Задача: связь сущностей на вашем сайте

• Изображение используется статьей

• Отдел включает работников

• Комментарий имеет родительский комментарий

• Пользователь знаком с другим пользователем

Page 3: Relation module

Существующее решение

Reference поля

• Реализация в виде полей для сущностей

• Часто используется node references

• Хорошо работает в большинстве сущностей

• Имеет несколько проблем и ограничений

Page 4: Relation module

Проблема №1: Reference поля являются направленными Reference поля всегда начинаются с одной сущности и

указывают на одну или несколько других

• Вызывает некоторые проблемы, как например, при

использовании взаимосвязей во Views

• Одна сущность должны быть исходной даже при

симметрической связи (например, соседство)

Решение: Использование доп. модули и/или создание

“connection nodes”

Page 5: Relation module

Проблема №2: Reference поля - атомарны Нет возможности указать дополнительную информацию об отношении

• Когда и кем создана

• Нет истории изменений

• Нет возможности добавить поля

Решение: создание “connection nodes”

Page 6: Relation module

Проблема №3: У Reference полей отношение «одно-ко-многим»

Нет возможности указать более одной исходной точки для каждого отношения.

• Не покрывает частных случаев отношений

• Снова: позволяет создавать только направленные отношения

Решение: создание “connection nodes”

Page 7: Relation module

Решение №1: Использование “connection nodes”

Типы материалов, служащие только связями между сущностями

• Ноды тяжелы для загрузки и сохранения

• Требуются хаки и авто-создание

• Различная реализация для различных сайтов

• Все же требует дополнительных модулей для обратных связей

Page 8: Relation module

Решение №2: Использование дополнительных модулей Работает, но имеет недостаток различной архитектуры для каждого сайта

• Reverse Node Reference (views reverse relationship)

• Back Reference (nodeapi interface for 1-1 relationships)

• Node Referrer

• Corresponding node references

• Partners

Page 9: Relation module

RELATION

Page 10: Relation module

Введение в модуль Relation

Отдельная сущность вместо “connection

nodes”

• Может иметь поля

• Может объединять любой тип entity bundles –

даже их комбинации

• Может объединять любое количество сущностей

• Может быть направленной или симметричной

• Интегрируется со стандартными модулями

• Легче чем ноды

Page 11: Relation module

Анатомия relation-сущностей • Массив конечных узлов

(end points)

• Первая сущность – источник

(при направленной связи)

• Конфигурируется для

каждого bundle – типы

связей

• Нет заголовка, списков

• Нет возможности

редактирования конечных

узлов !!!

Page 12: Relation module

В первую очередь – API

• Другие модули должны реализовывать

Relation

• Некоторый UI для добавления и просмотра

отношений

• Реализована интеграция с Views и Rules

Page 13: Relation module

Недостатки

• Больше времени на установку reference

полей

• Немного тяжелее чем reference fields (один

дополнительный JOIN)

• Необходимо, чтобы все конечные узлы

были созданы

• Пока не очень хороший UI

Page 14: Relation module

Будущее Relation

• Возможно заменит reference fields для

сложных случаев

• Возможно не заменит reference fields в

простых случаях

• Возможно предоставит стандартную

модель отношений даже для ядра Drupal

Page 15: Relation module

Resources

• Страница проекта:

http://drupal.org/project/relation

• Модуль Relation select:

http://drupal.org/project/relation_select

• Серия видео-уроков про Relation:

http://nodeone.se/node/970

Page 16: Relation module

THANKS! QUESTIONS?

Artem Berdishev email: [email protected]

skype: berdishev