Рабочие потоки, ориентированные на данные

Иллюстрации

Показать все

Изобретение относится к способу и системе управления рабочими потоками, ориентированными на данные, в компьютерной среде. Техническим результатом является облегчение и улучшение реализации приложений для рабочих потоков, ориентированных на данные, посредством предоставления в инфраструктуре рабочего потока присущих ей конструкций данных. Способ содержит этапы, на которых: принимают от пользователя выбор предопределенного действия с данными рабочего потока для моделирования операции передачи сообщений между исполняющимся экземпляром рабочего потока и приложением хоста рабочего потока, причем упомянутый выбор не специфицирует конкретный протокол сообщения; специфицируют определение источника данных; связывают выбранное действие с данными со специфицированным определением источника данных; ссылаются на связанное действие с данными как на одно из множества действий в приложении хоста рабочего потока для реализации передачи сообщений между экземпляром рабочего потока и приложением хоста рабочего потока, причем связанное действие с данными не специфицирует конкретный протокол сообщения. Система реализует вышеуказанный способ. Машиночитаемый носитель содержит программный код для осуществления в компьютерной системе вышеуказанного способа. 3 н. и 17 з.п. ф-лы, 6 ил., 6 табл.

Реферат

УРОВЕНЬ ТЕХНИКИ

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

Варианты воплощения изобретения обеспечивают абстракцию для моделирования передачи сообщений рабочего потока. В частности, варианты воплощения изобретения облегчают реализацию приложений для рабочих потоков, ориентированных на данные, обеспечивая в инфраструктуре рабочего потока присущие ей конструкции данных. Эти конструкции позволяют разработчикам моделировать рабочие потоки как обмен данными между экземпляром рабочего потока и хостом рабочего потока, скрывая взаимодействия передачи сообщений и протоколы. Аспекты изобретения позволяют рабочему потоку быть независимым от лежащей в основе технологии передачи сообщений.

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

Другие признаки будут отчасти очевидны и отчасти описаны в дальнейшем.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фиг.1 - иллюстративный рабочий поток, содержащий задачи и составные действия управления потоком.

Фиг.2 - иллюстративная блок-схема последовательности операций, иллюстрирующая аспекты изобретения во время проектирования и во время исполнения.

Фиг.3 - блок-схема, иллюстрирующая последовательный рабочий поток, имеющий два действия с данными.

Фиг.4 - блок-схема, иллюстрирующая последовательный рабочий поток, показанный на фиг.3, и свойства и значения свойств, относящихся к каждому из действий с данными в последовательном рабочем потоке.

Фиг.5 - блок-схема, иллюстрирующая взаимодействия между исполняющимся экземпляром рабочего потока и хостом рабочего потока.

Фиг.6 - блок-схема, иллюстрирующая один пример подходящей вычислительной системной среды, в которой могут быть реализованы аспекты изобретения.

Аналогичные ссылочные позиции обозначают аналогичные части на всех чертежах.

ПОДРОБНОЕ ОПИСАНИЕ

Фиг.1 показывает иллюстративный рабочий поток. Варианты воплощения изобретения работают с рабочим потоком, представляющим такой процесс, как бизнес-процесс. Бизнес-процессы зависят от требуемых задач, действий и т.п., которые приводят к предсказуемым и повторяющимся результатам. Бизнес-процессы, включающие в себя порядок деятельности, практические знания учреждения и информационные ресурсы организации, разрабатываются для удовлетворения определенных деловых целей эффективным и своевременным образом. В эффективной среде функциональные компоненты процесса могут быть легко идентифицированы, приспособлены и применены для удовлетворения постоянно изменяющихся корпоративных требований. Рабочий поток представляет собой навыки конечного пользователя при взаимодействии с некоторыми из задач в бизнес-процессе. Задачи смоделированы как действия, компоненты и т.п., каждый из которых представляет единицу работы, которая выполняется человеком или машиной.

Хост рабочего потока создает экземпляр рабочего потока. Хост рабочего потока и экземпляр рабочего потока обмениваются сообщениями или иным образом взаимодействуют во время исполнения экземпляра рабочего потока. В одном варианте воплощения подробности передачи сообщений каждого из этих обменов должны быть смоделированы пользователем во время создания рабочего потока. Такой процесс создания включает в себя определение интерфейса локальной службы (например, определение протокола связи) для каждого взаимодействия между экземпляром рабочего потока и хостом рабочего потока, реализацию этого интерфейса в хосте рабочего потока, регистрацию интерфейса в качестве службы связи в среде рабочего потока и формирование действий рабочего потока со строгим контролем типов, которые осуществляют взаимодействие с интерфейсом, реализованным в хосте рабочего потока. Некоторые рабочие потоки осуществляют взаимодействие с использованием интерфейсов, методов (например, каналов, портов).

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

В частности, хост рабочего потока собирает информацию от пользователя (например, через форму) или от внешней системы (например, с использованием протоколов доступа к данным) и возвращает данные исполняющемуся экземпляру рабочего потока для обработки. В одном варианте воплощения некоторые из технологий работы с формами, используемых программистом хоста рабочего потока для получения данных от пользователя, скрывают концепции передачи сообщений от программиста хоста рабочего потока. Аспекты изобретения обеспечивают объект данных, связанный с конкретным определением источника данных (например, схемой или определением типов), для представления данных, передаваемых между хостом рабочего потока и исполняющимся экземпляром рабочего потока. Тем же самым объектом данных можно управлять с помощью экземпляра рабочего потока и хоста рабочего потока, чтобы меньше запутывать разработчика и обеспечить навык связывания данных между объектами данных рабочего потока и хостами рабочего потока. В общем случае, источник данных (например, доступный с помощью хоста рабочего потока) выдает данные объектам данных, которые потребляют данные или выдают данные потребителю данных (например, действию рабочего потока). В одном примере взаимодействие между экземпляром рабочего потока и хостом рабочего потока не является специфическим для форм.

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

Способ, проиллюстрированный на фиг.2, реализует независимую от протокола передачу сообщений между хостом рабочего потока и исполняющимся экземпляром рабочего потока. В одном варианте воплощения для реализации способа, проиллюстрированного на фиг.2, один или более машиночитаемых носителей имеют исполняемые на компьютере команды или компоненты. Иллюстративные исполняемые на компьютере компоненты включают в себя компонент 202 пользовательского интерфейса для приема от пользователя выбора предопределенного действия с данными рабочего потока для моделирования операции передачи сообщений между рабочим потоком и хостом рабочего потока. В одном варианте воплощения прием выбора предопределенного действия с данными рабочего потока включает в себя прием выбора через программный интерфейс приложений. Для пользователя предопределенное действие с данными является независимым от протокола передачи сообщений.

Компоненты также включают в себя компонент 204 свойств для специфицирования определения источника данных, связывающего выбранное действие с данными со специфицированным определением источника данных, и ссылки на связанное действие с данными как на одно из множества действий в рабочем потоке для реализации передачи сообщений между рабочим потоком и хостом рабочего потока. Определение источника данных включает в себя определение объекта данных для хранения данных сообщения, передача которых будет выполняться между исполняемым экземпляром рабочего потока и хостом рабочего потока. Хост рабочего потока создает экземпляр рабочего потока. Специфицирование определения источника данных может включать в себя, например, прием от пользователя идентификатора, соответствующего определению источника данных, или определение схемы для данных сообщения. В одном варианте воплощения пользователь определяет объект данных, относящийся к определению источника данных, и программирует объект данных или иным образом получает доступ к объекту данных в рабочем потоке.

Исполняемые на компьютере компоненты также включают в себя компонент 206 экземпляра, который во время исполнения экземпляра рабочего потока формирует объект данных для специфицированного определения источника данных и отправляет сформированный объект данных хосту рабочего потока. Компонент хоста (см. фиг.5) в хосте рабочего потока заполняет объект данных данными сообщения и отправляет заполненный объект данных компоненту экземпляра в экземпляре рабочего потока. Компонент 206 экземпляра принимает заполненный объект данных от хоста рабочего потока и обрабатывает данные сообщения в принятом заполненном объекте данных. В одном варианте воплощения данные сообщения соответствуют запросу данных. В таком варианте воплощения компонент 206 экземпляра заполняет объект данных запрашиваемыми данными и отправляет заполненный объект данных хосту рабочего потока (например, для обновления формы).

Действия, связанные с данными, инкапсулируют лежащие в основе механизмы передачи сообщений таким образом, чтобы автору рабочего потока и разработчику хоста рабочего потока не нужно было определять интерфейсы локальной службы для обмена сообщениями. В общем случае, любая реализация интерфейса локальной службы может использоваться для обмена данными между рабочим потоком и хостом с использованием этой абстракции. В одном примере определен универсальный интерфейс локальный службы для возможности обмена данными с использованием этой абстракции.

В одном примере варианты воплощения изобретения обеспечивают следующие четыре действия, связанные с данными: UpdateData (обновить данные), SelectData (выбрать данные), WaitForData (ожидать данные) и WaitForQuery (ожидать запрос). Действие UpdateData позволяет рабочему потоку обновлять внешние данные. Действие SelectData позволяет рабочему потоку запрашивать внешние данные. Действие WaitForData моделирует точку ожидания внешних данных в рабочем потоке. Действие WaitForQuery моделирует точку ожидания в рабочем потоке, соответствующую запросу данных. В одном варианте воплощения внешние данные могут находиться в базе данных, доступной для хоста рабочего потока, или являться данными, полученными из формы. Например, при соединении с формой данные сохраняются в рабочем потоке и действие UpdateData сообщает форме, что данные были изменены.

Следующая таблица описывает свойства каждого из этих действий с данными. Свойство для активации в контекстных свойствах отображается на свойство для активации по выполнению действий WaitForData и WaitForQuery. Если любое из этих действий имеет свойство для активации, установленное в значение "истина", контекстные свойства включают в себя свойство для активации со значением "истина".

Таблица 1Свойства иллюстративных действий, связанных с данными
Действие/Свойство Источник данных Объект данных Активация
UpdateData (обновить данные) Источник данных обеспечивает функциональные возможности для обновления данных в хосте Данные, которые отправляют хосту Не применимо
SelectData (выбрать данные) Источник данных обеспечивает функциональные возможности для запроса данных у хоста Данные, которые запрашивают у хоста Не применимо
WaitForData (ожидать данные) Используется для корреляции входящих сообщений для этого действия Входящие данные от хоста Когда установлено в значение "истина", входящие данные активизируют рабочий поток
WaitForQuery (ожидать запрос) Используется для корреляции входящих сообщений для этого действия Результат входящего запроса Когда установлено в значение "истина", результат входящего запроса активизирует рабочий поток

Источник данных представляет схему внешних данных. Например, источник данных может являться локальным контейнером для данных, которые передаются формам и рабочим потокам и от них. Источник данных определяет формат и/или структуру данных, сохраненных в нем. Один вариант воплощения изобретения обеспечивает источники данных на основе определения схемы расширяемого языка разметки (XSD) и типа общеязыковой среды исполнения (CLR). Однако для определения источника данных может использоваться любой формат, который используется для описания структуры объекта или данных. Например, для определения источников данных может использоваться язык описания интерфейсов (IDL) или язык описания веб-служб (WSDL). Следующая таблица описывает свойства иллюстративного источника данных типа/объекта, который использует определения типов (например, классов) в качестве определений для автоматического формирования объектов данных.

Таблица 2Иллюстративный источник данных объекта
Свойство Описание
Name (имя) Определить имя источника данных
DataHandlerTypeName (имя типа обработчика данных) Определить тип обработчика данных, используемого для обработки исходящих вызовов действий UpdateData и SelectData рабочего потока
DataObjectTypeName (имя типа объекта данных) Определить тип объекта данных
Properties (свойства) Определить свойства для объекта DataObject, которые будут использоваться для корреляции экземпляров рабочего потока

Следующая таблица описывает свойства иллюстративного источника данных формата XSD/XML, который использует определение XSD в качестве определений схемы для автоматического формирования объектов данных.

Таблица 3 Иллюстративный источник данных формата XSD
Свойство Описание
Name (имя) Определить имя источника данных
DataHandlerTypeName (имя типа обработчика данных) Определить тип обработчика данных, используемого для обработки исходящих вызовов действий UpdateData и SelectData рабочего потока
ProxyType (тип прокси) Определить тип прокси, сформированный из файла XSD
Properties (свойства) Определить свойства XPath на схеме XSD

Далее на фиг.3 блок-схема иллюстрирует последовательный рабочий поток 302, имеющий два действия с данными. В этом примере автор рабочего потока проектирует рабочий поток 302 с возможностью загружать данные через действие 304 UpdateData1 и ожидать события изменения данных от хоста рабочего потока через действие 306 WaitForData1. Навыки разработчика рабочего потока включают в себя конфигурирование источника данных и конфигурирование этих действий 304, 306, связанных с данными.

Источник данных может быть сконфигурирован через пользовательский интерфейс или программно через программный интерфейс приложений. В одном примере экземпляр класса ObjectDataSource создается и добавляется к коллекции DataSources в действии DataContext. Затем могут быть сконфигурированы свойства объекта ObjectDataSource (показаны в таблице ниже).

Таблица 4 Свойства объекта ObjectDataSource
Свойство Значение Описание
Name "orange" Определить имя источника данных
DataObjectTypeName "FormTest.Task"[SerializableAttribute()]public class Task{public string ID {get { return this.id;}set {this.id = value;}}public string Assignee {get {return this.assignee;}set {this.assignee = value;}}} Этот тип может быть определен пользователем и может содержаться в отдельной сборке
DataHandlerTypeName "FormTest.BusinessHelper"public class BusinessHelper : IDataHandler {public object SelectData(object message, DataSourceInfo dataSource){// User Codereturn message;}public void UpdateData(object message, DataSourceInfo dataSource){// User Code }} Этот тип может быть определен пользователем и может содержаться в отдельной сборке
Properties "ID" Определить свойства класса DataObject, которые используются для корреляции экземпляров рабочего потока

Разработчик добавляет к рабочему потоку два действия, связанных с данными (например, UpdateData и WaitForData). Разработчик конфигурирует свойства этих действий, связанных с данными, через пользовательский интерфейс или программно через программный интерфейс приложений. Например, фиг.4 иллюстрирует последовательный рабочий поток 402, такой как последовательный рабочий поток 302 на фиг.3, в том числе свойства и значения свойств, относящиеся к каждому из действий с данными в последовательном рабочем потоке 402. Таблица 5 описывает свойства 404 действия UpdateData, показанного на фиг.4. Таблица 6 описывает свойства 406 действия WaitForData, показанного на фиг.4.

Таблица 5 Свойства действия UpdateData
Свойство Значение Описание
DataSource "Source 1" Определить источник данных
DataObject "Object A" Привязать к переменной объекта данных в классе DataContext
Таблица 6 Свойства действия WaitForData
Свойство Значение Описание
DataSource "Source 1" Определить источник данных
DataObject "Object A" Привязать к переменной объекта данных в классе DataContext

Навыки разработчика хоста рабочего потока включают в себя написание кода, который работает со службой источника данных, чтобы инициировать события (например, события изменения данных) в исполняющемся экземпляре рабочего потока. Например, служба источника данных обеспечивает способы для инициации событий DataChanged и DataQuery в рабочем потоке. Разработчику хоста рабочего потока не нужно реализовывать какой-либо интерфейс службы взаимодействия объектов (OCS) или другой интерфейс локальный службы. Следующий фрагмент кода хоста рабочего потока запускает событие DataChanged в рабочем потоке с использованием службы источника данных.

// Получить объект DataSourceService от объекта ObjectConnectionService

Dictionary <string, object> properties = new Dictionary<string,object>();

properties.Add("InstanceId", instance.InstanceId);

properties.Add("WorkflowType", typeof(FormTest.Workflow1));

properties.Add("DataSource", "Workflow1.orange");

FormTest.Task t = new FormTest.Task("5");

service.RaiseDatacChanged(properties, t).

Далее на фиг.5 блок-схема иллюстрирует взаимодействия между исполняющимся экземпляром 502 рабочего потока и хостом 504 рабочего потока. В общем случае, хост 504 рабочего потока принимает события от формы или внешнего приложения (не показано) и обрабатывает и опубликовывает объекты 510 данных экземпляру 502 рабочего потока для обработки. В сценарии документа хост 504 рабочего потока извлекает тип объекта данных в полезной информации объекта 509 данных из экземпляра 502 рабочего потока, идентифицирует форму, относящуюся к этому типу, преобразовывает объект данных в последовательную форму в формате расширяемого языка разметки (XML) и сохраняет XML-представление в хранилище документов (не показано).

В примере на фиг.5 реализованная с помощью компьютера система обеспечивает независимую от протокола передачу сообщений в среде рабочего потока. Система включает в себя хост рабочего потока 502 для создания экземпляра рабочего потока для исполнения. Система также включает в себя одно или более предопределенных действий с данными, таких как действие 506 с данными формы для использования в рабочем потоке. Действие 506 с данными формы включает в себя действие 508 "отправить данные хосту" и действие 511 "принять данные от хоста". Каждое из предопределенных действий 508, 511 с данными моделирует операцию передачи сообщений между экземпляром 502 рабочего потока и хостом 504 рабочего потока. Предопределенное действие 508 с данными формирует объект 509 данных во время исполнения экземпляра рабочего потока для сохранения данных сообщения. Объект 509 данных передается от экземпляра 502 рабочего потока хосту 504 рабочего потока. Определение источника данных для определения структуры данных относится к объекту 509 данных. Система также включает в себя службу 512 источника данных, относящуюся к хосту 504 рабочего потока, для заполнения объекта 509 данных данными сообщения и передачи заполненного объекта данных в качестве объекта 510 данных экземпляру 502 рабочего потока для обработки.

Система на фиг.5 также включает в себя машиночитаемый носитель (не показан), который хранит структуру данных, представляющую объект 509 данных. Структура данных включает в себя поле 518 типа протокола, поле 520 полезной информации и поле 522 источника. Поле 518 типа протокола хранит значение, идентифицирующее протокол для использования при взаимодействии между исполняющимся экземпляром 502 рабочего потока и хостом 504 рабочего потока. Поле 520 полезной информации хранит данные сообщения. Поле 522 источника хранит значение, идентифицирующее определение источника данных для объекта 509 данных. Определение источника данных идентифицирует протокол для взаимодействия между экземпляром 502 рабочего потока и хостом 504 рабочего потока.

Служба 512 источника данных в хосте рабочего потока пересылает полезную информацию сообщения в объекте данных приложению в хосте рабочего потока посредством создания экземпляра вспомогательного класса в области обработки хоста в позиции 514. Разработчик хоста рабочего потока конфигурирует эти вспомогательные классы в определении рабочего потока при определении источников данных. Как только экземпляр вспомогательного класса создан или вызван, хост 504 управляет полезной информацией сообщения через созданный экземпляр вспомогательного класса (например, обработчик данных). Любые клиенты, управляемые хостом 504, могут принимать эти данные и обновлять свое информационное содержание. Вспомогательные классы включают в себя множество обработчиков данных для обработки объекта данных. Служба 516 связи в хосте 504 передает заполненный объект 510 данных экземпляру 502 рабочего потока.

Иллюстративная служба 512 источника данных, обеспечиваемая хостом 504 рабочего потока, включает в себя показанные ниже методы. Первый метод инициирует событие DataChanged в рабочем потоке, и второй метод инициирует событие DataQueried в рабочем потоке и принимает результаты запроса.

void RaiseDataChanged(IDictionary <string, object> contextProperties, object msg)

object RaiseDataQueried(IDictionary <string, object> contextProperties, object msg)

Параметр 'IDictionary <string, object> contextProperties' содержит контекстные свойства, такие как идентификатор экземпляра рабочего потока, тип рабочего потока, уточненное имя источника данных и значение активации (например, является ли сообщение сообщением активации). Параметр 'object message' представляет объект 510 данных или сообщение, которое должно быть отправлено рабочему потоку.

В одном варианте воплощения во время выполнения выполняются следующие операции через сообщения между исполняющимся экземпляром 502 рабочего потока и хостом 504 рабочего потока. Событие активации принимается посредством определения рабочего потока, и создается экземпляр 502 рабочего потока. Экземпляр 502 рабочего потока инициализируется информацией события активации. В исполняющемся экземпляре 502 рабочего потока встречается действие, связанное с данными (например, действие с данными формы или действие с данными), такое как действие 506. Действие, содержащееся в контейнере действия 506, связанного с данными, формируют и отправляет объект данных хосту 504 рабочего потока. Служба 512 источника данных, относящаяся к хосту 504 рабочего потока, принимает объект 509 данных от экземпляра 502 рабочего потока. Служба 512 источника данных вызывает обработчик данных в хосте 504 рабочего потока для обработки принятого объекта 509 данных. В экземпляре 502 рабочего потока другое действие 511 (например, "принять данные от хоста") ожидает, пока от хоста 504 рабочего потока не будет принят запрос или событие инициации. Если действием 511 в экземпляре 502 рабочего потока принят запрос, то запрос обрабатывается и результаты отправляются хосту 504 рабочего потока с использованием действия "загрузить данные на хост" (не показано). Если действием 511 в экземпляре 502 рабочего потока принято событие инициации, то событие обрабатывается и действие 506 помечается как завершенное. Экземпляр 502 рабочего потока продолжает обрабатывать все свои действия с данными, пока приложение рабочего потока не завершится.

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

Иллюстративная среда

Фиг.6 показывает один пример вычислительного устройства общего назначения в виде компьютера 130. В одном варианте воплощения изобретения компьютер, такой как компьютер 130, является подходящим для использования в вариантах, проиллюстрированных на других фигурах и описанных здесь. Компьютер 130 имеет один или более процессоров 132 и системную память 134. В иллюстрированном варианте воплощения системная шина 136 соединяет различные компоненты системы, в том числе системную память 134, на процессоры 132. Шина 136 представляет собой один или более из любых типов шинных структур, в том числе шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и процессор и локальную шину с использованием любой из разнообразных шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (MCA), шину расширенной промышленной стандартной архитектуры (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину соединения периферийных компонентов (PCI), также известную как шина расширения.

Компьютер 130 обычно имеет, по меньшей мере, некоторые виды машиночитаемых носителей. Машиночитаемые носители, которые включают в себя как энергозависимые, так и энергонезависимые носители, сменные и несменные носители, могут представлять собой любые имеющиеся носители, к которым можно получить доступ с помощью компьютера 130. В качестве примера, но не ограничения, машиночитаемые носители могут содержать компьютерные носители данных и коммуникационные носители. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и несменные носители, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Например, компьютерные носители данных включают в себя оперативное запоминающее устройство (RAM; ОЗУ), постоянное запоминающее устройство (ROM; ПЗУ), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM; ЭСППЗУ), флэш-память или другую технологию памяти, компакт-диск, предназначенный только для чтения (CD-ROM), цифровые универсальные диски (DVD) или другую память на оптическом диске, магнитные кассеты, магнитную ленту, память на магнитном диске или другие магнитные запоминающие устройства или любой другой носитель, который может быть использован для хранения желаемой информации и к которому можно получить доступ с помощью компьютера 130. Коммуникационная среда обычно воплощает машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включает в себя любую среду доставки информации. Специалисты в области техники знакомы с модулированным сигналом данных, у которого одна или более из его характеристик установлена или изменяется таким образом, чтобы кодировать информацию в сигнале. Проводная среда, такая как проводная сеть или прямое проводное соединение, и беспроводная среда, такая как акустическая, радиоволновая, инфракрасная и другая беспроводная среда, являются примерами коммуникационных сред. Комбинации любых упомянутых выше элементов также должны быть включены в объем понятия машиночитаемых носителей.

Системная память 134 включает в себя компьютерные носители данных в виде сменной и/или несменной, энергозависимой и/или энергонезависимой памяти. В иллюстрированном варианте воплощения системная память 134 включает в себя постоянное запоминающее устройство (ROM; ПЗУ) 138 и оперативное запоминающее устройство (RAM; ОЗУ) 140. Базовая система 142 ввода-вывода (BIOS), содержащая базовые подпрограммы, которые помогают перемещать информацию между элементами в компьютере 130, например, во время запуска, обычно хранится в постоянном запоминающем устройстве (ROM; ПЗУ) 138. Оперативное запоминающее устройство (RAM; ОЗУ) 140 обычно содержит данные и/или программные модули, которые являются моментально доступными для процессора 132 и/или которые в данный момент обрабатываются процессором 132. В качестве примера, но не ограничения, фиг.6 иллюстрирует операционную систему 144, прикладные программы 146, другие программные модули 148 и программные данные 150.

Компьютер 130 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Например, фиг.6 иллюстрирует накопитель 154 на жестких дисках, который считывает или записывает на несменный энергонезависимый магнитный носитель. Фиг.6 также показывает накопитель 156 на магнитных дисках, который считывает или записывает на сменный энергонезависимый магнитный диск 158, и накопитель 160 на оптических дисках, который считывает или записывает на сменный энергонезависимый оптический диск 162, такой как постоянное запоминающее устройство на компакт-диске (CD-ROM) или другой оптический носитель. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в иллюстративной среде, включают в себя, но без ограничения, кассеты магнитной ленты, карты флэш-памяти, цифровые универсальные диски, цифровую видеоленту, полупроводниковое ОЗУ, полупроводниковое ПЗУ и т.п. Накопитель 154 на жестких дисках, накопитель 156 на магнитных дисках и накопитель 160 на оптических дисках обычно соединены с системной шиной 136 посредством интерфейса энергонезависимой памяти, такой как интерфейс 166.

Дисковые накопители или другие запоминающее устройство большой емкости и связанные с ними компьютерные носители данных, описанные выше и проиллюстрированные на фиг.6, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 130. На фиг.6, например, накопитель 154 на жестких дисках проиллюстрирован как содержащий операционную систему 170, прикладные программы 172, другие программные модули 174 и программные данные 176. Следует отметить, что эти компоненты могут быть либо теми же самыми, либо отличными от операционной системы 144, прикладных программ 146, других программных модулей 148 и программных данных 150. Операционная система 170, прикладные программы 172, другие программные модули 174 и программные данные 176 обозначены здесь другими ссылочными позициями, чтобы проиллюстрировать, что они как минимум являются другими копиями.

Пользователь может вводить команды и информацию в компьютер 130 через устройства ввода данных или устройства выбора интерфейса пользователя, такие как клавиатура 180 и координатно-указательное устройство 182 (например, мышь, шаровой манипулятор или сенсорная клавиатура). Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода данных часто соединены с процессором 132 через интерфейс 184 пользовательского ввода, который присоединен к системной шине 136, но может быть соединен другими интерфейсными и шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 188 или устройство отображения другого типа также соединены с системной шиной 136 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору 188 компьютеры часто включают в себя другие периферийные устройства вывода (не показаны), такие как принтер и динамики, которые могут быть соединены через интерфейс периферийных устройств вывода.

Компьютер 130 может работать в сетевом окружении, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 194. Удаленный компьютер 194 может являться персональным компьютером, сервером, маршрутизатором, сетевым персональным компьютером, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше относительно компьютера 130. Логические соединения, изображенные на фиг.6, включают в себя локальную сеть 196 и глобальную сеть 198, но могут также включать в себя другие сети. Локальная сеть 136 и/или глобальная сеть 138 могут являться проводной сетью, беспроводной сетью, их комбинацией и т.д. Такие сетевые среды являются обычным явлением в офисах, компьютерных сетях масштаба предприятия, интрасетях и глобальных компьютерных сетях (например, в Интернете).

При использовании в среде локальной сети компьютер 130 соединен с локальной сетью 196 через сетевой интерфейс или адаптер 186. При использовании в среде глобальной сети компьютер 130 обычно включает в себя модем 178 или другое средство для установления связи по глобальной сети 198, такой как Интернет. Модем 178, который может быть внутренним или внешним, соединен с системной шиной 136 через интерфейс 184 пользовательского ввода или другой соответствующий механизм. В сетевом окружении программные модули, изображенные относительно компьютера 130, или их части могут храниться в удаленном запоминающем устройстве (не показано). В качестве примера, но не ограничения, фиг.6 иллюстрирует удаленные прикладные программы 192 как находящиеся в устройстве памяти. Показанные сетевые соединения являются иллюстративными, и могут быть использованы другие средства установления линии связи между компьютерами.

В общем случае, процессоры компьютера 130 запрограммированы посредством команд, сохраненных в разное время на различных машиночитаемых носителях данных компьютера. Программы и операционные системы обычно распространяются, например, на гибких дисках или на компакт-дисках, предназначенных только для чтения (CD-ROM). С них они устанавливаются или загружаются во вторичную память компьютера. При исполнении они загружаются, по меньшей мере, частично в первичную электронную память компьютера. Аспекты описанного здесь изобретения включают в себя эти и д