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

17
Relation module Artem Berdishev http:// donetsk.drupal.u

Upload: drupalcampdn

Post on 08-May-2015

1.040 views

Category:

Technology


1 download

TRANSCRIPT

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

Relation moduleArtem Berdishev

http://donetsk.drupal.ua

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

RELATION MODULE

Artem Berdishev

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

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

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

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

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

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

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

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

Reference поля

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

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

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

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

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

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

•Вызывает некоторые проблемы, как например, при использовании взаимосвязей во Views

•Одна сущность должны быть исходной даже при симметрической связи (например, соседство)

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

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

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

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

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

Проблема №3: У Reference полей отношение «одно-ко-многим»Нет возможности указать более одной исходной точки для каждого отношения.

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

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

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

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

Решение №1: Использование “connection nodes”Типы материалов, служащие только связями между сущностями

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

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

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

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

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

Решение №2: Использование дополнительных модулейРаботает, но имеет недостаток различной архитектуры для каждого сайта•Reverse Node Reference (views reverse relationship)

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

•Node Referrer•Corresponding node references•Partners

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

RELATION

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

Введение в модуль RelationОтдельная сущность вместо “connection nodes”•Может иметь поля•Может объединять любой тип entity bundles – даже их комбинации•Может объединять любое количество сущностей•Может быть направленной или симметричной•Интегрируется со стандартными модулями•Легче чем ноды

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

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

(end points)• Первая сущность –

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

• Конфигурируется для каждого bundle – типы связей

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

редактирования конечных узлов !!!

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

В первую очередь – API• Другие модули должны реализовывать

Relation

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

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

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

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

полей

• Немного тяжелее чем reference fields (один дополнительный JOIN)

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

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

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

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

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

• Возможно не заменит reference fields в простых случаях

• Возможно предоставит стандартную модель отношений даже для ядра Drupal

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

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

http://drupal.org/project/relation

• Модуль Relation select: http://drupal.org/project/relation_select

• Серия видео-уроков про Relation: http://nodeone.se/node/970

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

THANKS!QUESTIONS?

Artem Berdishevemail: [email protected]

skype: berdishev