SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
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: berdartem@gmail.com
    skype: berdishev

Contenu connexe

Similaire à Relation module

Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...GoSharp
 
Rambler.iOS #5: Подмодули в VIPER
Rambler.iOS #5: Подмодули в VIPERRambler.iOS #5: Подмодули в VIPER
Rambler.iOS #5: Подмодули в VIPERRAMBLER&Co
 
Модуль 10 Интерфейсы
Модуль 10 ИнтерфейсыМодуль 10 Интерфейсы
Модуль 10 ИнтерфейсыYevgeniy Gertsen
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)Alexander Gornik
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноRoman Dvornov
 
процедурный и объектный подходы создания Page object'ов при автоматизированно...
процедурный и объектный подходы создания Page object'ов при автоматизированно...процедурный и объектный подходы создания Page object'ов при автоматизированно...
процедурный и объектный подходы создания Page object'ов при автоматизированно...mishaninss
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 

Similaire à Relation module (8)

DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!DESIGN PATTERNS? EASY!
DESIGN PATTERNS? EASY!
 
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
Как перейти с двухзвенной архитектуры Desktop приложения на трехзвенную за од...
 
Rambler.iOS #5: Подмодули в VIPER
Rambler.iOS #5: Подмодули в VIPERRambler.iOS #5: Подмодули в VIPER
Rambler.iOS #5: Подмодули в VIPER
 
Модуль 10 Интерфейсы
Модуль 10 ИнтерфейсыМодуль 10 Интерфейсы
Модуль 10 Интерфейсы
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)
 
Компонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективноКомпонентный подход: скучно, неинтересно, бесперспективно
Компонентный подход: скучно, неинтересно, бесперспективно
 
процедурный и объектный подходы создания Page object'ов при автоматизированно...
процедурный и объектный подходы создания Page object'ов при автоматизированно...процедурный и объектный подходы создания Page object'ов при автоматизированно...
процедурный и объектный подходы создания Page object'ов при автоматизированно...
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 

Relation module

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