Платформы операционного преобразования предназначены только для текста? - PullRequest
2 голосов
/ 08 июня 2011

Рассматривая все примеры платформ оперативного преобразования, кажется, что все они решают вопрос преобразования изменений в текстовые документы.Как OT-фреймворк будет использоваться для более сложных объектов?

Я хочу разработать приложение в стиле липких заметок в режиме реального времени, где люди могут совместно создавать липкие заметки, изменять свое положение и текстовое значение.Буду ли я прав, предполагая, что значения положения не будут преобразованы?(Я имею в виду, как бы они, вы не можете объединить их правильно?).Тем не менее, я хотел бы использовать OT-фреймворк для разрешения конфликтов с его значением posit, правильно?

Ответы [ 3 ]

1 голос
/ 16 сентября 2012

См. Следующую статью о подходе к использованию OT с деревьями, если вы хотите пойти по этому маршруту:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.74

Однако в вашем конкретном случае я бы использовалОтдельный текстовый OT-документ для каждого стикера и использование существующей библиотеки, например: etherPad, для выполнения тяжелой работы.Позиции заметок затем могут быть переданы на основе последних победителей.

1 голос
/ 05 мая 2014

Операция Преобразование является общей техникой, она работает для любого типа данных. Дело в том, что вам нужно определить свои функции преобразования. Кроме того, есть некоторые атомарные атрибуты, которые нельзя объединить автоматически (например, положение и цвет фона), которые будут в основном «выигрышем при последнем обновлении», или пользователь решает их вручную в случае конфликта.

Есть несколько хороших библиотек и фреймворков, которые уже предоставляют OT для сложных данных:

  • ShareJS : библиотека для узла, которая обеспечивает все операции над объектами JSON
  • DerbyJS: платформа для NodeJS, она использует ShareJS для OT.
  • Open Coweb Framework : базовый проект Dojo для совместных веб-приложений, использующих OT
1 голос
/ 14 января 2012

Я не вижу проблем в использовании Оперативного преобразования для работы со сложными объектами, вам нужно определить, какие операции поддерживает ваша система OT и как для них решается параллелизм

Например, если вы получаете две заметки «операция перемещения координат» от двух разных пользователей из одного и того же «состояния клиента», вам необходимо объединить оба состояния, возможно, отменяя вторую операцию.

Это то же самое поведение с текстом, когда два пользователя генерируют два обновления, чтобы удалить текстовый диапазон, который полностью или частично перекрывается (или может быть частично), второе обработанное обновление должно быть преобразовано в предыдущее, а результирующая операция только эффективно удалит часть оригинала (или полностью отменена с помощью 'no-op')

Вы можете взглянуть на это приятное объяснение того, как работает Google Wave Operational Transformation, и угадать с этого момента, как оно должно работать в вашей собственной реализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...