ПОДДЕРЖКА БЫСТРОГО СЛИЯНИЯ ДЛЯ УСТАРЕВШИХ ДОКУМЕНТОВ

1. Способ (400) слияния метаданных документа на клиентском компьютере (102), содержащий этапы, на которых
получают документ от серверного компьютера (106) на клиентском компьютере (102), причем документ запрошен пользователем на клиентском компьютере (102);
открывают документ на клиентском компьютере (102);
в ответ на открытие документа на клиентском компьютере (102) определяют, включает ли в себя документ идентификаторы блока;
если определено, что документ не включает в себя идентификаторы блока, присваивают идентификатор блока каждому блоку в документе;
принимают первое сообщение от серверного компьютера (106), обеспечивающее уведомление о том, что по меньшей мере один другой пользователь осуществляет авторскую разработку этого документа;
в ответ на прием первого сообщения от серверного компьютера (106) о том, что по меньшей мере один другой пользователь осуществляет авторскую разработку этого документа, отправляют второе сообщение на серверный компьютер (106), причем второе сообщение включает в себя первые метаданные для документа;
в ответ на отправку второго сообщения на серверный компьютер (106) принимают третье сообщение от серверного компьютера (106), причем третье сообщение включает в себя вторые метаданные для документа;
в ответ на прием третьего сообщения от серверного компьютера (106) определяют, должны ли быть слиты первые метаданные и вторые метаданные; и
если определено, что первые метаданные и вторые метаданные должны быть слиты, корректируют идентификаторы блока в документе на основе вторых метаданных.
2. Способ по п.1, в котором первые метаданные включают в себя первый идентификатор документа, первый идентификатор следующего блока и первый идентификатор версии, а вторые метаданные включают в себя второй идентификатор документа, второй идентификатор следующего блока и второй идентификатор версии.
3. Способ по п.2, в котором из первого идентификатора документа определяют первый диапазон идентификаторов блока, и из вторых метаданных определяют второй диапазон идентификаторов блока, причем первый диапазон идентификаторов блока включает в себя первый идентификатор и последний идентификатор, и второй диапазон идентификаторов блока включает в себя первый идентификатор и последний идентификатор, при этом первый идентификатор в первом диапазоне идентификаторов блока имеет исходное значение, равное первому идентификатору документа, и последний идентификатор в первом диапазоне идентификаторов блока имеет значение, на единицу меньшее первого идентификатора следующего блока, причем первый идентификатор во втором диапазоне идентификаторов блока имеет исходное значение, равное второму идентификатору документа, и последний идентификатор во втором диапазоне идентификаторов блока имеет значение, на единицу меньшее второго идентификатора следующего блока.
4. Способ по п.3, в котором при определении того, должны ли быть слиты первые метаданные и вторые метаданные, определяют, совпадает ли первый идентификатор версии со вторым идентификатором версии.
5. Способ по п.4, дополнительно содержащий этап на котором, если определено, что второй идентификатор версии совпадает с первым идентификатором версии, определяют, совпадает ли первый идентификатор документа со вторым идентификатором документа.
6. Способ по п.5, дополнительно содержащий этап, на котором, если первый идентификатор документа не совпадает со вторым идентификатором документа, определяют, совпадает ли размер первого диапазона идентификаторов блока с размером второго диапазона идентификаторов блока.
7. Способ по п.6, дополнительно содержащий этап, на котором, если размер первого диапазона идентификаторов блока совпадает с размером второго диапазона идентификаторов блока, определяют, что первые метаданные и вторые метаданные должны быть слиты.
8. Способ по п.3, в котором первый идентификатор документа генерируется случайным образом, причем каждый блок в первом диапазоне идентификаторов блока последовательно пронумерован, начиная с первого идентификатора документа, и каждый блок во втором диапазоне идентификаторов блока последовательно пронумерован, начиная со второго идентификатора документа.
9. Способ по п.8, в котором при корректировке идентификаторов блока в документе на основе вторых метаданных изменяют первый идентификатор в первом диапазоне идентификаторов блока на второй идентификатор документа.
10. Способ по п.9, дополнительно содержащий этап, на котором изменяют идентификаторы блока для блоков, включенных в первый диапазон идентификаторов блока, на соответствующие идентификаторы блока, включенные во второй диапазон идентификаторов блока.
11. Способ по п.10, дополнительно содержащий этап, на котором определяют, включены ли во второй диапазон идентификаторов блока один или более идентификаторов блока из блоков, не включенных в первый диапазон идентификаторов блока.
12. Способ по п.10, дополнительно содержащий этап, на котором, если определено, что один или более идентификаторов блока из блоков, не включенных в первый диапазон идентификаторов блока, включены во второй диапазон идентификаторов блока, изменяют эти один или более идентификаторов блока из блоков, не включенных в первый диапазон идентификаторов блока, на идентификатор блока, включенный в первый диапазон идентификаторов блока.
13. Компьютерное устройство (102), содержащее
процессорное устройство (602); системную память (604), соединенную с процессорным устройством (602), причем системная память (604) содержит инструкции, которые при их исполнении процессорным устройством (602) предписывают процессорному устройству (602) реализовывать:
модуль (204) обработки метаданных, который генерирует, отслеживает и сохраняет метаданные для документа в компьютерном устройстве (102), причем метаданные включают в себя идентификатор документа, идентификатор следующего абзаца и идентификатор версии, при этом модуль (204) обработки метаданных генерирует диапазон идентификаторов абзаца из идентификатора документа и из идентификатора следующего абзаца, причем диапазон идентификаторов абзаца включает в себя первый идентификатор абзаца и последний идентификатор абзаца, причем первый идентификатор абзаца имеет значение, равное идентификатору документа, а последний идентификатор абзаца имеет значение, на единицу меньшее идентификатора следующего абзаца, при этом модуль (204) обработки метаданных генерирует идентификаторы абзаца для каждого абзаца в диапазоне идентификаторов абзаца, причем каждый идентификатор абзаца в диапазоне идентификаторов абзаца последовательно пронумерован; и
модуль (206) слияния метаданных, который объединяет метаданные для документа с метаданными, принятыми от серверного компьютера (106), при этом модуль (206) слияния метаданных изменяет идентификатор документа на идентификатор документа, включенный в метаданные, принятые от серверного компьютера (106), причем модуль (206) слияния метаданных изменяет идентификаторы абзаца в диапазоне идентификаторов абзаца на идентификаторы абзаца, включенные в метаданные, принятые от серверного компьютера (106).
14. Компьютерное устройство по п.13, в котором модуль обработки метаданных сохраняет метаданные в файле на серверном компьютере (106), который отделен от документа.
15. Машиночитаемый носитель информации, содержащий инструкции, которые при их исполнении процессорным устройством (602) из состава электронного вычислительного устройства (102) предписывают процессорному устройству (602):
получать документ от серверного компьютера (106), причем документ запрошен пользователем на электронном вычислительном устройстве (102);
открывать документ;
в ответ на открытие документа определять, включает ли документ в себя идентификаторы абзаца;
если определено, что документ не включает в себя идентификаторы абзаца, присваивать идентификатор абзаца каждому абзацу в документе посредством этапов, на которых:
генерируют случайным образом идентификатор для первого абзаца документа;
назначают этот идентификатор для первого абзаца документа в качестве первого идентификатора документа;
последовательно присваивают идентификаторы остальным абзацам в документе; и
назначают первый идентификатор следующего абзаца, имеющий значение, на единицу большее идентификатора, присвоенного последнему абзацу в документе;
принимать первое сообщение от серверного компьютера (106) о том, что по меньшей мере один пользователь осуществляет авторскую разработку этого документа;
в ответ на прием первого сообщения от серверного компьютера (106) о том, что по меньшей мере один другой пользователь осуществляет авторскую разработку этого документа, отправлять второе сообщение на серверный компьютер (106), причем второе сообщение включает в себя первые метаданные для документа, при этом первые метаданные включают в себя первый идентификатор документа, первый идентификатор следующего абзаца и первый идентификатор версии;
определять первый диапазон идентификаторов абзаца из первого идентификатора документа и из первого идентификатора следующего абзаца, причем первый идентификатор в первом диапазоне идентификаторов абзаца является первым идентификатором документа, а последний идентификатор в первом диапазоне идентификаторов абзаца на единицу меньше первого идентификатора следующего абзаца;
в ответ на отправку второго сообщения на серверный компьютер (106) принимать третье сообщение от серверного компьютера (106), причем третье сообщение включает в себя вторые метаданные для документа, при этом вторые метаданные включают в себя второй идентификатор документа, второй диапазон идентификаторов абзаца и второй идентификатор версии;
определять второй диапазон идентификаторов абзаца из второго идентификатора документа и из второго идентификатора следующего абзаца, причем первый идентификатор во втором диапазоне идентификаторов абзаца является вторым идентификатором документа, а последний идентификатор во втором диапазоне идентификаторов абзаца на единицу меньше второго идентификатора следующего абзаца;
в ответ на прием третьего сообщения от серверного компьютера (106) определять, должны ли первые метаданные и вторые метаданные быть слиты посредством этапов, на которых:
определяют, совпадает ли первый идентификатор версии со вторым идентификатором версии;
если определено, что первый идентификатор версии совпадает со вторым идентификатором версии, определяют, совпадает ли первый идентификатор документа со вторым идентификатором документа,
если определено, что первый идентификатор версии совпадает со вторым идентификатором версии, и если определено, что первый идентификатор документа не совпадает со вторым идентификатором документа, определяют, совпадает ли размер первого диапазона идентификаторов абзаца с размером второго диапазона идентификаторов абзаца,
если определено, что первый идентификатор версии совпадает со вторым идентификатором версии, если определено, что первый идентификатор документа не совпадает со вторым идентификатором документа, и если определено, что размер первого диапазона идентификаторов абзаца совпадает с размером второго диапазона идентификаторов абзаца, определяют, что первые метаданные и вторые метаданные должны быть слиты, и,
если определено, что первые метаданные и вторые метаданные должны быть слиты, корректируют идентификаторы абзаца в документе на основе вторых метаданных посредством этапов, на которых:
назначают второй идентификатор документа в качестве первого идентификатора документа, при этом второй идентификатор документа также назначается как идентификатор абзаца для первого абзаца в первом диапазоне идентификаторов абзаца;
присваивают идентификаторы абзаца во втором диапазоне идентификаторов абзаца соответствующим абзацам в первом диапазоне идентификаторов абзаца;
определяют, совпадает ли с идентификатором абзаца во втором диапазоне идентификаторов абзаца идентификатор абзаца в документе из абзаца, не включенного в первый диапазон идентификаторов абзаца,
если определено, что идентификатор абзаца в документе из абзаца, не включенного в первый диапазон идентификаторов абзаца, совпадает с идентификатором абзаца во втором диапазоне идентификатора абзаца, присваивают идентификатор абзаца в документе, который совпадает с идентификатором абзаца во втором диапазоне идентификаторов абзаца, идентификатору абзаца в первом диапазоне идентификаторов абзаца.