Your SlideShare is downloading. ×
0
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Relation module. Артём Бердышев.
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,044

Published on

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

No Downloads
Views
Total Views
1,044
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Relation module Artem Berdishev http://donetsk.drupal.ua
  • 2. RELATION MODULE Artem Berdishev
  • 3. Зачем нужен Relation? <ul><li>Задача: связь сущностей на вашем сайте </li></ul><ul><li>Изображение используется статьей </li></ul><ul><li>Отдел включает работников </li></ul><ul><li>Комментарий имеет родительский комментарий </li></ul><ul><li>Пользователь знаком с другим пользователем </li></ul>
  • 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. Проблема №1: Reference поля являются направленными <ul><li>Reference поля всегда начинаются с одной сущности и указывают на одну или несколько других </li></ul><ul><li>Вызывает некоторые проблемы, как например, при использовании взаимосвязей во Views </li></ul><ul><li>Одна сущность должны быть исходной даже при симметрической связи ( например, соседство) </li></ul><ul><li>Решение : Использование доп. модули и/или создание “connection nodes” </li></ul>
  • 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. Проблема № 3 : У Reference полей отношение «одно-ко-многим» <ul><li>Нет возможности указать более одной исходной точки для каждого отношения. </li></ul><ul><li>Не покрывает частных случаев отношений </li></ul><ul><li>Снова: позволяет создавать только направленные отношения </li></ul><ul><li>Решение : создание “connection nodes” </li></ul>
  • 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. Решение №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. RELATION
  • 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. Анатомия 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. В первую очередь – API <ul><ul><li>Другие модули должны реализовывать Relation </li></ul></ul><ul><ul><li>Некоторый UI для добавления и просмотра отношений </li></ul></ul><ul><ul><li>Реализована интеграция с Views и Rules </li></ul></ul>
  • 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. Будущее 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. 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. THANKS! QUESTIONS? Artem Berdishev email: [email_address] skype: berdishev

×