ПОДДЕРЖКА АСИНХРОННОЙ МНОГОУРОВНЕВОЙ ОТМЕНЫ В СЕТКЕ JAVASCRIPT
ASYNCHRONOUS MULTI-LEVEL UNDO SUPPORT IN JAVASCRIPT GRID

Уровень техники
Одним из главных отличий между настольными клиентскими приложениями и «тонкими» веб-приложениями является обширный опыт редактирования. Традиционно веб-приложения выполняют транзакцию данных с сервером в соответствии с индивидуальными обратными передачами, которые направляют данные на сервер, когда пользователь осуществляет навигацию приложения. Отмена действия пользователя часто не является возможной, если пользователь уходит с веб-страницы. И наоборот, пользователь может взаимодействовать с клиентским приложением более плавно, сохраняя только данные, когда пользователь готов это сделать. Кроме того, если пользователь делает ошибку редактирования при работе в клиентском приложении, пользователь может выбрать «отмену» один или несколько раз для возвращения к исходному состоянию без влияния на сохраненный файл.
Многие программные технологии теперь требуют, чтобы работники взаимодействовали с данными на серверах предприятия посредством приложений веб-типа. Рассмотрим редактирование данных структурированного задания (например, добавление/удаление заданий, назначение ресурсов, изменение запланированных данных и т.д.), обычно обнаруживаемых на серверах проекта, например, но посредством веб-страницы. Без возможности многоуровневой отмены этот опыт может быть опасным, так как пользователю не разрешается отменять действия. Пользователь может выполнять частые сохранения, но сохранение таких наборов данных на сервере представляет собой медленный процесс. Таким образом, эффективные рабочие характеристики редактирования снижаются пропорционально удобству пользователя для ввода с клавиатуры сложных данных в веб-страницу.
Сущность изобретения
Нижеследующее представляет упрощенное краткое изложение, чтобы обеспечить основное понимание некоторых новых вариантов осуществления, описанных в данном документе. Это краткое изложение не является исчерпывающим обзором и оно не предназначено для определения ключевых/критических элементов или для описания его объема. Его исключительной целью является представление некоторых принципов в упрощенном виде в качестве вводной части более подробного описания, которое представлено ниже.
Описанная архитектура многоуровневой отмены представляет собой систему каскадных изменений с управлением от элемента управления, где отслеживание изменений выполняется плавно по асинхронному (и синхронному) сценарию. Кроме того, отмена выходит за пределы действий сохранения, понимает разность между неявными и явными изменениями и обрабатывает эти изменения соответствующим образом для получения контекста для отмены.
Клиентское приложение ассоциируется с объектом сетки, который представляет данные приложения в табличном представлении, таким образом поддерживая редактирование и визуализацию. Приложение частично обрабатывает и конфигурирует объект сетки. Приложение может программным путем инициировать изменение в данных в сетке, и/или пользователь может непосредственно редактировать данные в сетке. Результатом изменения является извещение приложения, причем приложение включает в себя ключ порядка. Приложение принимает извещение и затем может присоединить новые изменения, основываясь на синхронных или асинхронных вычислениях (например, планировании) посредством вызова функции обновления, используя ключ порядка. Приложение может использовать ключ в любой момент в будущем для присоединения дальнейших обновлений к изменению. Обновления надлежащим образом собираются вместе для отмены/повтора.
Для решения вышеупомянутых и связанных задач в данном документе описываются некоторые иллюстративные аспекты в связи с нижеследующим описанием и прилагаемыми чертежами. Эти аспекты, однако, указывают только несколько различных путей, как принципы, описанные в данном документе, могут быть применены, и, как предполагается, включают в себя все такие аспекты и эквиваленты. Другие преимущества и новые признаки станут очевидны из последующего подробного описания при рассмотрении совместно с чертежами.
Краткое описание чертежей
Фиг.1 иллюстрирует реализованную на компьютере систему отмены.
Фиг.2 иллюстрирует реализацию системы клиент - сервер, которая обеспечивает обратные операции многоуровневого изменения в данных.
Фиг.3 иллюстрирует пример асинхронных операций отмены/повтора над данными.
Фиг.4 иллюстрирует окончательные обновления данных, основываясь на использовании ключей изменения для рассмотрения обработки асинхронного изменения не по порядку.
Фиг.5 иллюстрирует отслеживатель изменений в качестве части компонента изменения и стек отмен в качестве части обратного компонента.
Фиг.6 иллюстрирует первоначальное состояние сетки данных в сетке, состояние стека в стеке отмен и состояние отслеживателя в отслеживателе изменений.
Фиг.7 иллюстрирует неявное изменение и влияние на состояние стека и состояние отслеживателя.
Фиг.8 иллюстрирует изменение названия задания данных сетки и влияния на стек отмен и отслеживатель изменений.
Фиг.9 иллюстрирует выполнение операции отмены.
Фиг.10 иллюстрирует реализованный на компьютере способ обеспечения обратных операций в данных.
Фиг.11 иллюстрирует способ обработки явных/неявных изменений.
Фиг.12 иллюстрирует реализованный на компьютере способ обеспечения обратных операций в данных.
Фиг.13 иллюстрирует блок-схему вычислительной системы, выполненной с возможностью выполнения многоуровневой отмены в соответствии с описанной архитектурой.
Фиг.14 иллюстрирует схематическую блок-схему примерной вычислительной среды клиент - сервер для обработки многоуровневой отмены.
Подробное описание
Описанная архитектура заполняет существенный пробел в опыте редактирования «тонких» веб-приложений посредством поддержки многоуровневой отмены на клиенте в основанных на сетке приложениях. Этот признак также полезен для некоторого онлайнового опыта редактирования. Например, многоуровневая отмена позволяет пользователю чувствовать себя более комфортно при редактировании одновременно большего количества данных и улучшает восприятие пользователем положительных функциональных характеристик приложения. Кроме того, онлайновые версии приложений также могут приносить пользу такую, что многочисленные изменения в записи могут быть отменены и повторены, так что пользователь имеет полное управление над редактированием.
Теперь ссылка делается на чертежи, на которых подобные позиции используются для ссылки на подобные элементы по всем чертежам. В нижеследующем описании, для целей объяснения излагаются многочисленные конкретные подробности, чтобы обеспечить его полное понимание. Может быть очевидным, однако, что новые варианты осуществления могут быть осуществлены на практике без этих конкретных подробностей. В других случаях общеизвестные конструкции и устройства показаны в виде блок-схемы, чтобы способствовать их описанию.
Фиг.1 иллюстрирует реализованную на компьютере систему 100 отмены. Система 100 включает в себя компонент 102 изменения для отслеживания асинхронных изменений в данных 104 при помощи веб-приложения 106. Система 100 дополнительно включает в себя обратный компонент 108 для выполнения обратных операций (например, отмены, повтора) над изменениями данных в данные 104 предыдущих состояний. Изменения в данных 104 могут быть сделаны при помощи сетки 110 данных. Изменения в данных 104 могут быть сделаны вручную или программным способом при помощи сетки 110.
Приложение 106 обрабатывает и конфигурирует сетку 110. Сетка 110 представляет собой табличное представление данных, которое хранится в приложении 106, поддерживающем редактирование и визуализацию. Изменение представляет собой версии до и после данных ячейки, плюс действие, которые требовалось для того, чтобы вызвать изменение значения ячейки.
В одном варианте осуществления веб-приложение 106 представляет собой приложение браузера, посредством которого выполняются изменения на веб-странице, хостируемой сервером. Пользователь тогда может осуществлять обратные операции многоуровневой отмены/повтора для изменений, сделанных в документе веб-страницы. В другой реализации веб-приложение 106 представляет собой браузер, который позволяет пользователю взаимодействовать с локальными данными, а не с сетевыми данными, и осуществлять обратные операции, такие как многоуровневая отмена/повтор.
Фиг.2 иллюстрирует реализацию системы 200 клиент - сервер, которая обеспечивает обратные операции многоуровневого изменения в данных. Система 200 изображает систему 100 по фиг.1, т.е. компонент 102 изменения для отслеживания асинхронных изменений в данных 104 при помощи веб-приложения 106, и обратный компонент 108 для выполнения обратных операций (например, отмены, повтора) над изменениями в данных в предыдущие состояния. Изменения в данных выполняются вручную и/или программным способом посредством сетки 110 данных. В данном случае изменения в данных применяются к веб-документу (например, веб-странице) 200 веб-сервера 202. Когда редактирования передаются в сетку 110, извещения об изменении посылаются на сервер 202 при помощи приложения 106 для асинхронной проверки достоверности. Если выполнена проверка достоверности, то изменения посылаются обратно в сетку 110 при помощи приложения 106 в качестве обновлений данных 104.
Фиг.3 иллюстрирует пример 300 операций асинхронной отмены/повтора над данными. Асинхронное изменение представляет собой изменение, которое требует любое количество асинхронных проверок достоверности или пополнений. Когда объект делает изменения в данных сетки, результат такого изменения представляет собой извещение для приложения 106. В данном извещении содержится ключ порядка (или изменения). Приложение 106 принимает извещение и затем может присоединить новые изменения, основываясь на некоторых синхронных или асинхронных вычислениях (например, планировании) посредством вызова функции обновления с таким ключом порядка. Приложение 106 свободно использует ключ порядка в любой момент в будущем для присоединения дополнительных обновлений к данному изменению. Эти обновления собираются надлежащим образом вместе для отмены/повтора.
В данном случае два изменения, обозначенные как А и В, вводятся в сетку 110, которые требуют асинхронной проверки достоверности. Когда выполняются редактирования, изменения захватываются по порядку сеткой 110. Каждое изменение тегируется ключом порядка. Например, изменение А тегируется ключом А порядка (также обозначенным ключом А изменения), и второе изменение В (более позднее во времени, чем изменение А) обозначается ключом В изменения. Когда выполняется изменение в данных, сетка 110 обнаруживает это и посылает извещение приложению 106 (например, браузеру), при этом это приложение 106 затем посылает извещение серверу 202 для проверки достоверности. Процесс проверки достоверности на сервере 202 может происходить не по порядку, или, если завершилась проверка достоверности, сервер может послать ранее упорядоченную проверку достоверности не по порядку. Таким образом, ключи порядка способствуют упорядочению изменений в сетке 110.
В данном примере первый запрос 302 извещения об изменении посылается от сетки 110 приложению 106, вызывая изменение А в данных, сделанное во второй строке в столбце, имеющем поле, обозначенное Длительность, и новое значение длительности устанавливается на пять дней. При последующем редактировании данных сетка 110 посылает второй запрос 304 извещения об изменении приложению 106, вызывающий изменение В в данных, сделанное в третьей строке для столбца, имеющего поле, обозначенное Длительность, и новое значение длительности устанавливается на семь дней. Запросы (302 и 304) извещения об изменении посылаются приложению 106 по порядку (например, изменение А перед изменением В). Приложение 106 затем направляет запросы (302 и 304) извещения на сервер 202, сервер 202 проверяет достоверность запросов (302 и 304) изменения асинхронно и возвращает проверки достоверности обратно приложению 106.
В данном случае сервер 202 начинает первый процесс 306 проверки достоверности для первого запроса 302 извещения об изменении. Затем сервер 202 принимает и начинает второй процесс 308 проверки достоверности для второго запроса 304 извещения об изменении. Сервер 202 завершает второй процесс 308 проверки достоверности перед первым процессом 306 проверки достоверности. Таким образом, второй ответ 310 обновления посылается с сервера 202 при помощи приложения 106 на сетку 110 для обновления ассоциированных данных. Второй ответ 310 обновления включает в себя ключ В порядка, который означает порядок, в котором были сделаны изменения в данных относительно первого изменения А в данных. Второй ответ 310 обновления также включает в себя то, что изменение было сделано в третьей строке в поле, обозначенном Дата окончания, и новое значение для Даты окончания, равное 27/5. Это соответствует новому значению в семь дней во втором запросе 304 извещения об изменении.
Сервер 202 затем завершает первый процесс 306 проверки достоверности и посылает первый ответ 312 обновления при помощи приложения 106 на сетку 110 для обновления ассоциированных данных. Первый ответ 312 обновления включает в себя ключ А порядка, который означает порядок, в котором было сделано изменение в данных относительно второго изменения В в данных. Первый ответ 312 обновления также включает в себя то, что изменение было сделано во второй строке, в поле, обозначенном Дата окончания, и новое значение для Даты окончания, равное 25/5. Это соответствует новому значению в пять дней в первом запросе 302 извещения об изменении. Таким образом, изменения поступают от проверки достоверности не по порядку (изменение В перед изменением А).
Фиг.4 иллюстрирует окончательные обновления данных, основанные на использовании ключей изменения для рассмотрения обработки асинхронного изменения не по порядку. Результаты 400 запросов на изменения в данных, которые произошли с тех пор, как была показана последняя операция сохранения. При возврате от сервера 202 результаты размещаются и сохраняются в логическом порядке, который задают ключи изменения (или порядка) (изменение В после изменения А), а не в порядке, в котором фактически происходили события (изменение А после изменения В). Таким образом, изменения 402, связанные с изменением А, сохраняются вместе и обозначаются как происходящие перед изменением В. Аналогично, изменения 404, связанные с изменением В, сохраняются вместе и обозначаются как происходящие после события А.
Обратные операции отмены и повтора также обрабатываются таким же образом. Таким образом, если бы пользователь выбрал отмену, были бы отменены оба изменения (Длительность и Дата окончания), ассоциированные с изменением В, так как это последнее изменение, которое пользователь сделал, как указано ключом В изменения, даже если обновление изменения А было последним событием, которое встретила сетка.
Объект (например, пользователь или система) взаимодействует с сеткой для выполнения изменения в данных в сетке, или явно, или неявно. Явное изменение представляет собой изменение, сделанное в сетке, которое непосредственно оказывает влияние на данные (например, изменение даты начала задания). Неявное изменение представляет собой изменение, которое сделано в сетке, которое не оказывает влияние на данные (например, изменение размера столбца).
Фиг.5 иллюстрирует отслеживатель 500 изменений в качестве части компонента 102 изменения и стек 502 отмен в качестве части обратного компонента 108. Когда объект делает изменение в данных сетки, отмечается тип каждого изменения, и функции исполнения и отмены размещаются в стеке 502 отмен. Стек 502 отмен представляет собой структуру данных, которая хранит упорядоченную предысторию последнего набора действий. Когда происходит событие отмены, операции удаляются из стека 502 отмен и возвращаются в прежнее состояние до тех пор, пока не будет встречено первое явное изменение. Первым явным изменением является последнее возвращенное в прежнее состояние действие. В этот момент завершается операция отмены. Последующие операции отмены обрабатываются аналогичным образом; команда отмены возвращает в прежнее состояние все неявные действия до следующего явного действия и затем возвращает в прежнее состояние явное действие.
Результатом такой системы является то, что после операции отмены визуальное состояние сетки восстанавливается перед действием отмены. Все явные изменения сохраняются в отдельной структуре (отслеживателе 500 изменений) из стека 502 отмен. Этот отслеживатель 500 изменений может экспортироваться в виде совокупности изменений уровня ячейки.
Стек 502 отмен и отслеживатель 500 изменений представляют собой независимые структуры. Когда происходит изменение, это изменение помещается в стек 502 отмен, и запись для этого изменения создается в отслеживателе 500 изменений, если изменение было явным. Если изменение является неявным, изменение не регистрируется в отслеживателе 500 изменений.
Когда происходит событие отмены, изменение удаляется из стека 502 отмен и отслеживателя 500 изменений, и новое значение отмечается в отслеживателе 500 изменений. Если изменение существовало в отслеживателе 500 изменений, это изменение удаляется. Если изменение не существует в отслеживателе 500 изменений, действие по возвращению в прежнее состояние изменения (которое само является изменением) добавляется в журнал регистрации изменений. Когда происходит операция сохранения, изменения считываются из отслеживателя 500 изменений, зафиксированных в источнике данных, и отслеживатель 500 изменений очищается.
Результатом данной системы является то, что объект может отменить действия, которые произошли до события сохранения, так как информация, необходимая для отмены изменения, сохраняется в стеке 502 отмен. Аналогично, отслеживатель 500 изменений может функционировать в отсутствие стека 502 отмен.
Фиг.6-9 иллюстрируют последовательность диаграмм для приведения в качестве примера изменений, которые происходят в состоянии данных сетки, стеке отмен и отслеживателе изменений. Фиг.6 изображает начальное состояние 600 сетки данных в сетке, состояние 602 стека в стеке отмен и состояние 604 отслеживателя в отслеживателе изменений. Изменения имеют место на второй и третьей строках данных сетки.
Объект затем выполняет явное изменение принятием решения, что покраска изгороди должна занять два дня вместо одного дня. Состояние 606 сетки изменения включает в себя изменение во второй строке в столбце Длительность на два дня. В случае проекта в качестве приложения управления проектом, например изменение длительности вызывает изменение в дате окончания, также называемой Завершение (каскадное изменение). Создается каскадная транзакция, охватывающая оба изменения. Таким образом, информация поля во второй строке в столбце Завершение изменяется с понедельника 21/5/хх на вторник 22/5/хх, как указано в измененном состоянии 606 сетки.
Эти изменения Длительности и Завершения помещаются в стек отмен, как указано в состоянии 608 стека. Дополнительно, состояние 610 отслеживателя отражает изменения. Фиг.7 изображает неявное изменение и воздействия на состояние стека и состояние отслеживателя. В данном случае объект скрывает столбец Завершение, тем самым изменяя в состояние 612 сетки, которое помещает изменение в стек отмен, изменяя в состояние 614 стека, но не изменяет состояние 610 отслеживателя в отслеживателе изменений. Объект сохраняет проект, который вызывает сброс состояния 610 отслеживателя в отслеживателе изменений в состояние 616 стека, так как данные сетки теперь согласуются с данными сервера.
Фиг.8 иллюстрирует изменение в названии задания данных сетки и воздействия на стек отмен и отслеживатель изменений. Объект изменяет состояние 618 сетки, основываясь на изменении в названии задания в строке три с «Очистка инструментов» в «Очистка проекта». Состояние 620 стека отражает изменение, помещенное в стек, и отслеживатель отражает состояние 622 отслеживателя.
Фиг.9 иллюстрирует выполнение операции отмены. Отмена возвращает в прежнее состояние последнее явное изменение посредством извлечения изменения из стека отмен и отслеживателя изменений, как показано в состоянии 622 стека и состоянии 626 отслеживателя (нет изменения до этого). Объект затем выполняет отмену еще раз, которая возвращает в прежнее состояние как неявное изменение, так и оставшееся явное изменение. Это каскадное воздействие удаляет изменение из стека отмен в состояние 628 стека, добавляет обратное изменение в отслеживатель изменений в состояние 630 отслеживателя и изменяет состояние сетки обратно в состояние 632 сетки, которое является таким же, что и состояние 600 сетки на фиг.6.
Ниже представлен ряд блок-схем последовательности операций, представляющих примерные методологии для выполнения новых аспектов раскрытой архитектуры. Хотя для целей упрощения объяснения одна или несколько методологий, показанных в данном документе, например в виде блок-схемы последовательности операций или структурной схемы, показаны и описаны в виде последовательности действий, необходимо понять и оценить по достоинству, что методологии не ограничиваются порядком действий, так как некоторые действия в соответствии с ними могут происходить в другом порядке и/или одновременно с другими действиями в отличие от того порядка, который показан и описан в данном документе. Например, специалист в данной области техники поймет и оценит по достоинству, что методология альтернативно может быть представлена в виде последовательности взаимосвязанных состояний или событий, таких в диаграмме состояний. Кроме того, не все действия, изображенные в методологии, могут потребоваться для новой реализации.
Фиг.10 иллюстрирует реализованный на компьютере способ обеспечения обратных операций в данных. В позиции 1000 изменения в данных в серверном документе на сервере обнаруживаются посредством сетки на основе клиента. В позиции 1002 ключи порядка назначаются изменениям в извещении об изменении. В позиции 1004 извещения об изменении посылаются на сервер для проверки достоверности. В позиции 1006 информация об асинхронной проверке достоверности принимается от сервера на основе извещений. В позиции 1008 информация о проверке достоверности упорядочивается в сетке в соответствии с ключами порядка. В позиции 1010 операции отмены/повтора в серверном документе управляются на основе ключей порядка.
Фиг.11 иллюстрирует способ обработки явных/неявных изменений. В позиции 1100 изменение в данных принимается посредством сетки. В позиции 1102 тип изменения и функция на отмену/повтор изменения сохраняются в стеке отмен. В позиции 1104 принимается обратная операция (например, повтор, отмена). В позиции 1106 операции отмены удаляются из стека и возвращаются в прежнее состояние до тех пор, пока не встретится первое явное изменение (которым является последнее действие, возвращенное в прежнее состояние).
Фиг.12 иллюстрирует реализованный на компьютере способ обеспечения обратных операций в данных. В позиции 1200 изменения в данных инициируются в веб-документе сервера посредством клиентского веб-приложения. В позиции 1202 изменения сохраняются в виде упорядоченной предыстории изменений в клиентском стеке отмен и записей изменений в клиентском отслеживателе изменений. В позиции 1204 проверяется достоверность изменений на сервере. В позиции 1206 информация о проверке достоверности принимается асинхронно от сервера в веб-приложение. В позиции 1208 операции отмены/повтора в веб-документе управляются на клиенте на основе упорядоченной предыстории изменений в стеке отмен и записей изменения в отслеживателе изменений.
Как используется в данной заявке, предполагается, что термины «компонент» и «система» ссылаются на связанный с компьютером объект, или аппаратную, или комбинацию аппаратных и программных, или программную при исполнении. Например, компонентом может быть, но не ограничивается ими, процесс, выполняющийся на процессоре, процессор, накопитель на жестком диске, многочисленные накопители для хранения (оптические и/или магнитные носители данных), объект, исполняемый файл, поток управления, программа и/или компьютер. В качестве иллюстрации, как приложение, выполняющееся на сервере, так и сервер могут быть компонентом. Один или несколько компонентов могут находиться в процессе и/или потоке управления, и компонент может быть локализован на одном компьютере и/или распределен между двумя или более компьютерами.
Ссылаясь теперь на фиг.13, на ней изображена блок-схема вычислительной системы 1300, выполненной с возможностью исполнения многоуровневой отмены в соответствии с описанной архитектурой. Чтобы обеспечить дополнительный контекст для его различных аспектов, фиг.13 и последующее описание предназначены для обеспечения краткого, общего описания подходящей вычислительной системы 1300, в которой могут быть реализованы различные аспекты. Хотя вышеприведенное описание находится в общем контексте исполняемых компьютером инструкций, которые могут выполняться на одном или нескольких компьютерах, специалист в данной области техники оценит по достоинству, что новый вариант осуществления также может быть реализован в комбинации с другими программными модулями и/или в виде комбинации аппаратных и программных средств.
Как правило, программные модули включают в себя подпрограммы, программы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Кроме того, специалист в данной области техники оценит по достоинству, что обладающие признаками изобретения способы могут быть осуществлены на практике с другими конфигурациями компьютерных систем, включая однопроцессорные или многопроцессорные компьютерные системы, мини-компьютеры, компьютеры мэйнфреймов, а также персональные компьютеры, карманные вычислительные устройства, микропроцессорную или программируемую бытовую электронику и т.п., каждая из которых может быть подсоединена с возможностью работы к одному или нескольким ассоциированным устройствам.
Изображенные аспекты также могут быть осуществлены на практике в распределенных вычислительных средах, где некоторые задачи выполняются удаленными устройствами обработки, которые связаны посредством сети передачи данных. В распределенной вычислительной среде программные модули могут располагаться как на локальных, так и на удаленных запоминающих устройствах памяти.
Компьютер обычно включает в себя многочисленные считываемые компьютером носители. Считываемые компьютером носители могут представлять собой любое доступные носители, к которым может обращаться компьютер и которые включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители. В качестве примера и неограничения считываемые компьютером носители могут содержать носители данных компьютера и среды передачи данных. Носители данных компьютера включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные по любому способу или технологии для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Носители данных компьютера включают в себя, но не ограничиваются ими, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электрически стираемое программируемое ROM (EEPROM), флэш-память или другую технологию памяти, компакт-диск, цифровой видеодиск (DVD) или другое запоминающее устройство на оптических дисках, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, или любые другие носители, которые могут использоваться для хранения требуемой информации и к которым может обращаться компьютер.
С ссылкой снова на фиг.13 примерная вычислительная система 1300 для реализации различных аспектов включает в себя компьютер 1302, имеющий блок 1304 обработки, системную память 1306 и системную шину 1308. Системная шина 1308 обеспечивает сопряжение для системных компонентов, включая, но не ограничиваясь ими, системной памяти 1306 с блоком 1304 обработки. Блок 1304 обработки может быть любым из различных имеющихся в продаже процессоров. Архитектуры с двойными микропроцессорами и другие многопроцессорные архитектуры также могут применяться в качестве блока 1304 обработки.
Системная шина 1308 может быть любого из нескольких типов шинной структуры, которая может дополнительно соединяться с шиной памяти (с контроллером памяти или без него), периферийной шиной и локальной шиной, используя любую из многочисленных имеющихся в продаже шинных архитектур. Системная память 1306 может включать в себя энергонезависимую память (NON-VOL) 1310 и/или энергозависимую память 1312 (например, оперативное запоминающее устройство (RAM)). Базовая система ввода-вывода (BIOS) может храниться в энергонезависимой памяти 1310 (например, ROM, стираемом программируемом ROM (EPROM), EEPROM и т.д.), причем BIOS хранит базовые подпрограммы, которые способствуют пересылке информации между элементами в компьютере 1302, например, во время запуска. Энергозависимая память 1312 также может включать в себя высокоскоростное RAM, такое как статическое RAM для кэширования данных.
Компьютер 1302 дополнительно включает в себя внутренний накопитель 1314 на жестком диске (HDD) (например, улучшенной интегрированной электроники жестких дисков (EIDE), интерфейса последовательного стандарта АТА (SATA)), причем внутренний HDD 1314 также может быть выполнен с возможностью внешнего использования в подходящем шасси, накопитель 1316 для магнитных дискетах (FDD) (например, для чтения со съемной дискеты 1318 или записи на нее) и накопитель 1320 на оптических дисках (например, чтение компакт-диска 1322 (CD-ROM) или чтение с другого оптического носителя высокой емкости, такого как DVD, или запись на него). HDD 1314, FDD 1316 и накопитель 1320 на оптических дисках могут быть подсоединены к системной шине 1308 посредством интерфейса 1324 HDD, интерфейса 1326 FDD и интерфейса 1328 накопителя на оптических дисках соответственно. Интерфейс 1324 HDD для реализаций внешнего накопителя может включать в себя по меньшей мере одну или обе технологии универсальной последовательной шины (USB) и интерфейса IEEE 1394 (Института инженеров по электротехнике и радиоэлектронике).
Накопители и связанные с ними считываемые компьютером носители обеспечивают энергонезависимое хранение данных, структур данных, исполняемых компьютером инструкций и т.п. Для компьютера 1302 накопители и носители обеспечивают хранение любых данных в подходящем цифровом формате. Хотя описание считываемых компьютером носителей выше относится к HDD, съемной магнитной дискете (например, FDD) и съемным оптическим носителям, таким как компакт-диск (CD) или DVD, специалист в данной области техники должен оценить, что другие типы носителей, которые являются считываемыми компьютером, такие как накопители «Zip», магнитные кассеты, карты флэш-памяти, картриджи и т.п., также могут использоваться в примерной операционной среде, и, дополнительно, что любые такие носители могут содержать исполняемые компьютером инструкции для выполнения новых способов описанной архитектуры.
Несколько программных модулей может храниться на накопителях и в энергозависимой памяти 1312, включая операционную систему 1330, одну или несколько программ 1332 приложений, другие программные модули 1334 и программные данные 1336. Одна или несколько программ 1332 приложений, другие программные модули 1334 и программные данные 1336 могут включать в себя, например, компонент 102 изменения, данные 104, веб-приложение 106, обратный компонент 108, сетку 110 данных, извещения (302 и 304) об изменении, ответы (310 и 312) обновления, отслеживатель 500 изменений, стек 502 отмен, состояние (600, 606, 612, 618 и 632) сетки, состояние (602, 608, 614, 620, 624 и 628) стека и состояние (604, 610, 616, 622, 626 и 630) отслеживателя.
Все или части операционной системы, приложений, модулей и/или данных также могут кэшироваться в энергозависимой памяти 1312. Необходимо оценить, что описанная архитектура может быть реализована посредством различных имеющихся в продаже подходящих операционных систем или комбинаций операционных систем.
Пользователь может вводить команды и информацию в компьютер 1302 при помощи одного или нескольких проводных/беспроводных устройств ввода, например клавиатуры 1338 и указательного устройства, такого как мышь 1340. Другие устройства ввода (не показаны) могут включать в себя микрофон, инфракрасное дистанционное управление, джойстик, игровой планшет, перо стилуса, сенсорный экран или т.п. Эти и другие устройства ввода часто подключаются к блоку 1304 обработки посредством интерфейса 1342 устройства ввода, который соединен с системной шиной 1308, но может быть подсоединен посредством других интерфейсов, таких как параллельный порт, последовательный порт IEEE 1394, игровой порт, порт USB, инфракрасный интерфейс и т.д.
Монитор 1344 или устройство отображения другого типа также подсоединяется к системной шине 1308 при помощи интерфейса, такого как видеоадаптер 1346. В дополнение к монитору 1344 компьютер обычно включает в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители, принтеры и т.д.
Компьютер 1302 может работать в сетевой среде, используя логические подключения посредством проводной и/или беспроводной связи с одним или несколькими удаленными компьютерами, такими как удаленный компьютер(ы) 1348. Удаленным компьютером(ами) 1348 может быть рабочая станция, серверный компьютер, маршрутизатор, персональный компьютер, портативный компьютер, микропроцессорное устройство развлечения, одноранговое устройство или другой общий сетевой узел, и он обычно включает в себя многие или все из элементов, описанных в отношении компьютера 1302, хотя, для краткости, изображено только устройство 1350 хранения/памяти. Описанные логические подключения включают в себя проводную/беспроводную возможность подключения к локальной сети (LAN) 1352 и/или большим сетям, например, глобальной сети (WAN) 1354. Такие сетевые среды LAN и WAN являются общепринятыми в офисах и компаниях и способствуют созданию компьютерных сетей масштаба предприятия, таких как интрасети, все из которых могут подключаться к глобальной сети передачи данных, например Интернету.
При использовании в сетевой среде LAN компьютер 1302 подключается к LAN 1352 при помощи интерфейса или адаптера 1356 проводной и/или беспроводной сети передачи данных. Адаптер 1356 может способствовать проводной и/или беспроводной передачи данных на LAN 1352, которая также может включать в себя беспроводную точку доступа, расположенную в ней для передачи данных посредством беспроводной функциональной возможности адаптера 1356.
При использовании в сетевой среде WAN компьютер 1302 может включать в себя модем 1358 или соединяется с сервером передачи данных в WAN 1354, или имеет другие средства для установления передачи данных по WAN 1354, такие как посредством Интернета. Модем 1358, который может быть внутренним или внешним и проводным и/или беспроводным устройством, соединен с системной шиной 1308 при помощи интерфейса 1342 устройства ввода. В сетевой среде программные модули, описанные в отношении компьютера 1302 или его частей, могут храниться в удаленном устройстве 1350 хранения/памяти. Понятно, что показанные сетевые соединения являются примерными, и могут использоваться другие средства установления линии передачи данных между компьютерами.
Компьютер 1302 выполнен с возможностью передачи данных посредством проводных и беспроводных устройств или объектов, используя семейство стандартов IEEE 802, таких как беспроводные устройства, выполненные с возможностью работы в беспроводной передаче данных (например, методы модуляции радиосвязи IEEE 802.11), например с принтером, сканером, настольным и/или портативным компьютером, персональным цифровым помощником (PDA), спутником связи, любой частью оборудования или расположения, ассоциированного с обнаруживаемым беспроводным образом тегом (например, киоск, газетный ларек, туалет), и телефоном. Она включает в себя по меньшей мере беспроводные технологии Wi-Fi (или беспроводная точность), WiMax (общемировая совместимость широкополосного беспроводного доступа) и Bluetooth™. Таким образом, передача данных может представлять собой предварительно определенную структуру как в случае с обычной сетью, или просто эпизодическую передачу данных между по меньшей мере двумя устройствами. Сети Wi-Fi используют радиотехнологии, называемые IEEE 802.11х (a, b, g и т.д.), для обеспечения безопасной, надежной, быстродействующей возможности беспроводного соединения. Сеть Wi-Fi может использоваться для соединения компьютером друг с другом, с Интернетом и с проводными сетями (которые используют относящиеся к IEEE 802.3 носители и функции).
Ссылаясь теперь на фиг.14, на ней изображена схематическая блок-схема примерной вычислительной среды 1400 клиент - сервер для обработки многоуровневой отмены. Среда 1400 включает в себя один или несколько клиентов 1402. Клиент(ы) 1402 может быть аппаратным и/или программным (например, потоки, процессы, вычислительные устройства). Клиент(ы) 1402, например, может содержать куки-файл(ы) и/или ассоциированную контекстуальную информацию.
Среда 1400 также включает в себя один или несколько серверов 1404. Сервер(ы) 1404 также может быть аппаратным и/или программным (например, потоки, процессы, вычислительные устройства). Серверы 1404 могут содержать потоки для выполнения преобразований, например, посредством применения архитектуры. Одной возможной формой передачи данных между клиентом 1402 и сервером 1404 может быть в виде пакета данных, предназначенного для передачи между двумя или более компьютерными процессами. Пакет данных может включать в себя, например, куки-файл и/или ассоциированную контекстуальную информацию. Среда 1400 включает в себя инфраструктуру 1406 передачи данных (например, глобальную сеть передачи данных, такую как Интернет), которая может применяться для того, чтобы способствовать передаче данных между клиентом(ами) 1402 и сервером(ами) 1404.
Передаче данных может способствовать проводная (включая световод) и/или беспроводная технология. Клиент(ы) 1402 соединены с возможностью работы с одним или несколькими хранилищами 1408 данных клиента, которые могут применяться для хранения информации, локальной для клиента(ов) 1402 (например, куки-файл(ы) и/или ассоциированная контекстуальная информация). Аналогично, сервер(ы) 1404 соединен с возможностью работы с одним или несколькими хранилищами 1410 данных сервера, которые могут применяться для хранения информации, локальной для серверов 1404.
Клиент(ы) 1402 может включать в себя веб-приложение 106, и хранилище(а) 1408 данных клиента может включать в себя данные 104. Сервер(ы) 1404 может включать в себя сервер 202 и процессы (306 и 308) асинхронной проверки достоверности, и хранилище(а) 1410 данных сервера может включать в себя документ 200.
То, что было описано выше, включает в себя примеры описанной архитектуры. Конечно, нельзя описать любую возможную комбинацию компонентов и/или методологий, но специалист в данной области техники может оценить, что возможны многочисленные дополнительные комбинации и перестановки. Следовательно, как предполагается, новая архитектура охватывает все такие изменения, модификации и варианты, которые подпадают под сущность и объем прилагаемой формулы изобретения. Кроме того, в той степени, в какой термин «включает в себя» используется или в подробном описании, или в формуле изобретения, как предполагается, такой термин является включающим в себя таким образом, который подобен термину «содержащий», как «содержащий» интерпретируется, когда он применяется в качестве переходного слова в формуле изобретения.