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

1,344 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,344
On SlideShare
0
From Embeds
0
Number of Embeds
76
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×