ݺߣ

ݺߣShare a Scribd company logo
Relation module Artem Berdishev http://donetsk.drupal.ua
RELATION MODULE Artem Berdishev
Зачем нужен  Relation? Задача: связь сущностей на вашем сайте Изображение  используется  статьей Отдел  включает  работников Комментарий  имеет родительский  комментарий Пользователь  знаком  с другим пользователем
Существующее решение Reference  поля Реализация в виде полей для сущностей Часто используется  node references Хорошо работает в большинстве сущностей Имеет несколько проблем и ограничений
Проблема №1:  Reference  поля являются направленными Reference  поля всегда начинаются с одной сущности и указывают на одну или несколько других Вызывает некоторые проблемы, как например, при использовании взаимосвязей во  Views Одна сущность должны быть исходной даже при симметрической связи  ( например, соседство) Решение : Использование доп. модули и/или создание  “connection nodes”
Проблема №2:  Reference  поля - атомарны Нет возможности указать дополнительную информацию об отношении Когда и кем создана Нет истории изменений Нет возможности добавить поля Решение : создание  “connection nodes”
Проблема № 3 :  У  Reference  полей отношение «одно-ко-многим» Нет возможности указать более одной исходной точки для каждого отношения. Не покрывает частных случаев отношений Снова: позволяет создавать только направленные отношения Решение : создание  “connection nodes”
Решение №1:  Использование  “connection nodes” Типы материалов, служащие только связями между сущностями Ноды тяжелы для загрузки и сохранения Требуются хаки и авто-создание Различная реализация для различных сайтов Все же требует дополнительных модулей для обратных связей
Решение №2:  Использование дополнительных модулей Работает, но имеет недостаток различной архитектуры для каждого сайта Reverse Node Reference  ( views reverse relationship) Back Reference  (nodeapi interface for 1-1 relationships) Node Referrer Corresponding node references Partners
RELATION
Введение в модуль  Relation Отдельная сущность вместо  “connection nodes” Может иметь поля Может объединять любой тип  entity bundles  – даже их комбинации Может объединять любое количество сущностей Может быть направленной или симметричной Интегрируется со стандартными модулями Легче чем ноды
Анатомия  relation -сущностей Массив конечных узлов ( end points) Первая сущность – источник (при направленной связи) Конфигурируется для каждого  bundle –  типы связей Нет заголовка, списков Нет   возможности  редактирования конечных узлов !!!
В первую очередь  – API Другие модули должны реализовывать  Relation Некоторый  UI  для добавления и просмотра отношений Реализована интеграция с  Views  и  Rules
Недостатки Больше времени на установку  reference  полей Немного тяжелее чем  reference fields ( один дополнительный  JOIN) Необходимо, чтобы все конечные узлы были созданы Пока не очень хороший  UI
Будущее  Relation Возможно заменит  reference fields  для  сложных случаев Возможно  не  заменит  reference fields  в простых случаях Возможно предоставит стандартную модель отношений даже для ядра  Drupal
Resources Страница проекта:  http ://drupal.org/project/relation Модуль  Relation select:  http://drupal.org/project/relation_select   Серия видео-уроков про  Relation:  http :// nodeone.se/node/970
THANKS! QUESTIONS? Artem Berdishev email:  [email_address] skype: berdishev

More Related Content

Relation module. Артём Бердышев.

  • 1. Relation module Artem Berdishev http://donetsk.drupal.ua
  • 3. Зачем нужен Relation? Задача: связь сущностей на вашем сайте Изображение используется статьей Отдел включает работников Комментарий имеет родительский комментарий Пользователь знаком с другим пользователем
  • 4. Существующее решение Reference поля Реализация в виде полей для сущностей Часто используется node references Хорошо работает в большинстве сущностей Имеет несколько проблем и ограничений
  • 5. Проблема №1: Reference поля являются направленными Reference поля всегда начинаются с одной сущности и указывают на одну или несколько других Вызывает некоторые проблемы, как например, при использовании взаимосвязей во Views Одна сущность должны быть исходной даже при симметрической связи ( например, соседство) Решение : Использование доп. модули и/или создание “connection nodes”
  • 6. Проблема №2: Reference поля - атомарны Нет возможности указать дополнительную информацию об отношении Когда и кем создана Нет истории изменений Нет возможности добавить поля Решение : создание “connection nodes”
  • 7. Проблема № 3 : У Reference полей отношение «одно-ко-многим» Нет возможности указать более одной исходной точки для каждого отношения. Не покрывает частных случаев отношений Снова: позволяет создавать только направленные отношения Решение : создание “connection nodes”
  • 8. Решение №1: Использование “connection nodes” Типы материалов, служащие только связями между сущностями Ноды тяжелы для загрузки и сохранения Требуются хаки и авто-создание Различная реализация для различных сайтов Все же требует дополнительных модулей для обратных связей
  • 9. Решение №2: Использование дополнительных модулей Работает, но имеет недостаток различной архитектуры для каждого сайта Reverse Node Reference ( views reverse relationship) Back Reference (nodeapi interface for 1-1 relationships) Node Referrer Corresponding node references Partners
  • 11. Введение в модуль Relation Отдельная сущность вместо “connection nodes” Может иметь поля Может объединять любой тип entity bundles – даже их комбинации Может объединять любое количество сущностей Может быть направленной или симметричной Интегрируется со стандартными модулями Легче чем ноды
  • 12. Анатомия relation -сущностей Массив конечных узлов ( end points) Первая сущность – источник (при направленной связи) Конфигурируется для каждого bundle – типы связей Нет заголовка, списков Нет возможности редактирования конечных узлов !!!
  • 13. В первую очередь – API Другие модули должны реализовывать Relation Некоторый UI для добавления и просмотра отношений Реализована интеграция с Views и Rules
  • 14. Недостатки Больше времени на установку reference полей Немного тяжелее чем reference fields ( один дополнительный JOIN) Необходимо, чтобы все конечные узлы были созданы Пока не очень хороший UI
  • 15. Будущее Relation Возможно заменит reference fields для сложных случаев Возможно не заменит reference fields в простых случаях Возможно предоставит стандартную модель отношений даже для ядра Drupal
  • 16. Resources Страница проекта: http ://drupal.org/project/relation Модуль Relation select: http://drupal.org/project/relation_select Серия видео-уроков про Relation: http :// nodeone.se/node/970
  • 17. THANKS! QUESTIONS? Artem Berdishev email: [email_address] skype: berdishev