РАБОЧИЕ ПОТОКИ, ОРИЕНТИРОВАННЫЕ НА ДАННЫЕ
WORK STREAMS AIMED AT DATA

УРОВЕНЬ ТЕХНИКИ
Рабочий поток моделирует бизнес-процесс. Приложения с рабочими потоками, разработанные с использованием типичных технологий рабочих потоков, предполагают, что разработчики представляют данные как сообщения, обмен которыми осуществляется между двумя приложениями. Этот типичный подход вынуждает разработчиков рабочих потоков определять обмен информацией и протоколы, которые должны соблюдаться для передачи данных между исполняющимися экземплярами рабочего потока и приложением (например, хостом рабочего потока), которое создало экземпляр рабочего потока. Однако многие разработчики рабочих потоков не понимают тонкостей передачи сообщений или моделирования обмена сообщениями.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Технический результат, достигаемый при использовании заявленного изобретения, заключается в облегчении и улучшении реализации приложений для рабочих потоков, ориентированных на данные, посредством предоставления в инфраструктуре рабочего потока присущих ей конструкций данных.
Варианты воплощения изобретения обеспечивают абстракцию для моделирования передачи сообщений рабочего потока. В частности, варианты воплощения изобретения облегчают реализацию приложений для рабочих потоков, ориентированных на данные, обеспечивая в инфраструктуре рабочего потока присущие ей конструкции данных. Эти конструкции позволяют разработчикам моделировать рабочие потоки как обмен данными между экземпляром рабочего потока и хостом рабочего потока, скрывая взаимодействия передачи сообщений и протоколы. Аспекты изобретения позволяют рабочему потоку быть независимым от лежащей в основе технологии передачи сообщений.
Это описание сущности изобретения дано для того, чтобы в упрощенной форме представить выбор концепций, которые далее описаны в подробном описании. Это описание сущности изобретения не предназначено для идентификации ключевых признаков или существенных признаков заявленной сущности изобретения, а также не предназначено для использования при определении объема заявленной сущности изобретения.
Другие признаки будут отчасти очевидны и отчасти описаны в дальнейшем.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.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 {returnthis.id;}set {this.id =value;}}public string Assignee {get {returnthis.assignee;}set {this.assignee =value;}}}
Этот тип может быть определен пользователем и может содержаться в отдельной сборке
DataHandlerTypeName
"FormTest.BusinessHelper"public class BusinessHelper : IDataHandler {public object SelectData(objectmessage,DataSourceInfodataSource){// User Codereturn message;}public voidUpdateData(object message, DataSourceInfodataSource){// 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). С них они устанавливаются или загружаются во вторичную память компьютера. При исполнении они загружаются, по меньшей мере, частично в первичную электронную память компьютера. Аспекты описанного здесь изобретения включают в себя эти и другие различные типы машиночитаемых носителей данных, когда такие носители содержат команды или программы для осуществления описанных ниже этапов, вместе с микропроцессором или другим процессором. Варианты воплощения изобретения также включают в себя сам компьютер, если он запрограммирован в соответствии с описанными здесь способами и методиками.
В целях иллюстрации программы и другие исполняемые программные компоненты, такие как операционная система, проиллюстрированы здесь как отдельные блоки. Однако следует понимать, что такие программы и компоненты находятся в разное время в различных компонентах памяти компьютера и выполняются посредством процессора (процессоров) компьютера.
Хотя аспекты изобретения описаны в связи с иллюстративной вычислительной системной средой, включающей в себя компьютер 130, они могут работать со многими другими вычислительными системными средами или конфигурациями общего назначения или специального назначения. Не предполагается, что вычислительная системная среда налагает какое-либо ограничение относительно возможностей использования или функциональных возможностей аспектов изобретения. Кроме того, вычислительная системная среда не должна интерпретироваться как имеющая какую-либо зависимость или требование относительно любого компонента или комбинации компонентов, показанных в иллюстративной среде. Примеры известных вычислительных систем, сред и/или конфигураций, которые могут являться подходящими для использования с аспектами изобретения, включают в себя, но без ограничения, персональные компьютеры, серверные компьютеры, карманные или переносные устройства, многопроцессорные системы, системы на основе микропроцессора, телеприставки, программируемую бытовую электронику, мобильные телефоны, сетевые персональные компьютеры, миникомпьютеры, универсальные вычислительные системы, распределенные вычислительные среды, которые включают в себя любые из упомянутых выше систем или устройств, и т.п.
Варианты воплощения изобретения могут быть описаны в общем контексте исполняемых на компьютере команд, таких как программные модули, исполняемые одним или более компьютерами или другими устройствами. В общем случае, программные модули включают в себя, но без ограничения, подпрограммы, программы, объекты, компоненты и структуры данных, которые выполняют специфические задачи или реализуют специфические абстрактные типы данных. Варианты воплощения изобретения также могут быть осуществлены в распределенных вычислительных средах, в которых задачи выполняются удаленными устройствами обработки, которые связаны через сеть связи. В распределенной вычислительной среде программные модули могут быть расположены и на локальных, и на удаленных компьютерных носителях данных, в том числе запоминающих устройствах.
Интерфейс в контексте архитектуры программного обеспечения включает в себя программный модуль, компонент, часть кода или другую последовательность исполняемых на компьютере команд. Интерфейс включает в себя, например, первый модуль, осуществляющий доступ ко второму модулю для выполнения вычислительных задач от имени первого модуля. Первый и второй модули в одном примере включают в себя программные интерфейсы приложений (API), такие как интерфейсы, предоставляемые операционными системами, интерфейсы объектной модели программных компонентов (COM) (например, для однорангового взаимодействия приложений) и интерфейсы формата обмена метаданными на расширяемом языке разметки (XMI) (например, для взаимодействия между веб-службами).
Интерфейс может являться сильно связанной синхронной реализацией, такой как в платформе Java версии 2, редакция для предприятий (J2EE), объектной модели программных компонентов (COM) или распределенной объектной модели программных компонентов (DCOM). В качестве альтернативы или дополнения интерфейс может являться слабо связанной асинхронной реализацией, такой как в веб-службе (например, с использованием простого протокола доступа к объектам). В общем случае, интерфейс включает в себя любую комбинацию следующих характеристик: сильно связанный, слабо связанный, синхронный и асинхронный. Кроме того, интерфейс может соответствовать стандартному протоколу, специализированному частному протоколу или любой комбинации стандартных и специализированных частных протоколов.
Все описанные здесь интерфейсы могут являться частью одного интерфейса или могут быть реализованы как отдельные интерфейсы или любая их комбинация. Интерфейсы могут исполняться локально или удаленно для обеспечения функциональных возможностей. Кроме того, интерфейсы могут включать в себя дополнительные или меньшие функциональные возможности по сравнению с проиллюстрированными или описанными здесь.
При работе компьютер 130 исполняет исполняемые на компьютере команды, такие как команды, проиллюстрированные на чертежах, чтобы реализовать аспекты изобретения. Аппаратные средства, программное обеспечение, встроенное программное обеспечение, исполняемые на компьютере компоненты и/или исполняемые на компьютере команды представляют собой средства для реализации независимой от протокола передачи сообщений в рабочем потоке.
Следующие примеры дополнительно иллюстрируют варианты воплощения изобретения. В одном сценарии разработчик заинтересован в разработке приложения рабочего потока, которое требует от пользователя ввести информацию с использованием некоторой технологии работы с формами (например, веб-формами). Формы были предварительно определены и имеют свои собственные определения схем. Разработчик хочет смоделировать взаимодействия для формы и элементы данных как этапы внутри приложения рабочего потока. Предполагается, что это взаимодействие между формой и рабочим потоком будет иметь место без необходимости переписывать формы. Чтобы достичь этого, разработчик использует этап рабочего потока или стандартный блок, называемый действием с данными формы, и добавляет его к определению рабочего потока. Разработчик конфигурирует источник данных, относящийся к этому объекту, чтобы он указывал на определение схемы формы (например, определения схем могут быть выражены как XML-схемы). Эта привязка автоматически формирует тип преобразования, от которого создается экземпляр объекта в рабочем потоке во время исполнения рабочего потока. Этим экземпляром объекта управляет разработчик, чтобы отправлять данные форме и извлекать данные из формы. Во времени исполнения этот экземпляр объекта преобразовывается в последовательную форму и преобразовывается из последовательной формы посредством хоста рабочего потока, и информация вводится в форму и извлекается из формы. Это происходит без изменения формы.
В другом сценарии разработчик заинтересован в разработке приложения рабочего потока, исполнение которого зависит от данных из внешней унаследованной системы. В этом примере внешняя система только обеспечивает интерфейс базы данных для осуществления доступа к своим данным и не имеет никаких интерфейсов веб-служб. Разработчик хочет смоделировать обмен данными между рабочим потоком и внешними унаследованными системами. Каждый раз, когда исполняется этап рабочего потока, который требует данных от унаследованной системы, этап рабочего потока ожидает, когда информация будет обновлена унаследованной системой. Чтобы достичь этого, разработчик использует этап рабочего потока или стандартный блок, называемый действием с данными, и добавляет его к определению рабочего потока. Разработчик конфигурирует источник данных, относящийся к этому объекту, чтобы он указывал на источник данных объекта. Во время этого этапа конфигурации разработчик определяет библиотеку типов и тип (например, класс) для обмена данными между внешней системой и экземпляром рабочего потока. Эта привязка создает экземпляр объекта выбранного типа внутри определения рабочего потока во время исполнения экземпляра рабочего потока. Этим экземпляром объекта будет управлять разработчик, чтобы отправлять данные унаследованной системе и извлекать данные из нее. Во время исполнения этот объект передается внешней системе и запрашивается внешней системой через код преобразования, предоставленный хостом рабочего потока. В этом примере хост рабочего потока облегчает обмен данными между внешней унаследованной системой и экземпляром рабочего потока без введения каких-либо новых типов.
В примере, в котором рабочий поток моделирует процесс обзора документа, интерфейс обзора документа (например, IDocumentReviewInterface) показан ниже.
public delegate void OnReviewStartedHandler(object o);
public delegate void OnParticipantsAddedHandler(object o);
public interface IDocumentReviewInterface
{
event OnReviewStartedHandler OnReviewStarted;
event OnParticipantsAddedHandler OnParticipantsAdded;
void ReviewCompleted(object o);
}
В этом примере объект "o" соответствует экземпляру такого типа, как показан ниже, который будет получать неструктурированный список аргументов.
public class DocumentReviewInfo
{
public DocumentInfo documentInfo;
public Hashtable ReviewResults;
}
Тип DocumentReviewInfo описывает форму/схему передаваемых данных. Этот тип создан автором рабочего потока, и разработчику хоста рабочего потока не нужно реализовывать что-либо в этом примере.
Аспекты изобретения скрывают механизм передачи сообщений от автора рабочего потока, обеспечивая стандартному интерфейсу локальной службы действия, связанные с данными, которые знают, как взаимодействовать со стандартным интерфейсом. Автор рабочего потока описывает схему данных, которыми обмениваются (например, преобразовывает неструктурированный список аргументов метода интерфейса локальной службы в определение класса, как в описанном здесь классе DocumentReviewInfo). В одном примере стандартный интерфейс локальной службы называется IDataSourceService и показан ниже. Интерфейс IDataSourceService, показанный ниже, является лишь иллюстративным, и в некоторых вариантах воплощения интерфейс IDataSourceService не реализован. Вместо этого реализованы методы RaiseDataChanged и RaiseDataQueried класса DataSourceService.
public delegate void DataChangedEventHandler(IDictionary<string, object> properties, object proxy);
public delegate void DataQueriedEventHandler(IDictionary<string, object> properties, object proxy);
public delegate void DataFetchedEventHandler(IDictionary<string, object> properties, object proxy);
[DataExchangeService]
[CorrelationProvider(typeof(CorrelationTokenProvider))]
public interface IDataSourceService
{
void UploadData(DataSource ds, object proxy);
void FetchData(DataSource ds, object proxy);
event DataFetchedEventHandler DataFetched;
event DataChangedEventHandler DataChanged;
event DataQueriedEventHandler DataQueried;
void PostDataQueryReply(DataSource ds, object proxy);
}
Иллюстративная реализация класса DataSourceService показана ниже.
public class DataSourceService : IDataSourceService
{
#region IDataSourceService Members
void IDataSourceService.UploadData(DataSource ds, object proxy){}
void IDataSourceService.FetchData(DataSource ds, object proxy){}
event DataFetchedEventHandler IDataSourceService.DataFetched
{ add {} remove {} }
event DataChangedEventHandler IDataSourceService.DataChanged
{ add {} remove {} }
event DataQueriedEventHandler IDataSourceService.DataQueried
{ add {} remove {} }
void IDataSourceService.PostDataQueryReply(DataSource ds, object proxy){}
#endregion
public void RaiseDataChanged(IDictionary<string, object> properties,object msg) {}
public object RaiseDataQueried(IDictionary<string, object> properties, object msg) {}
}
Порядок исполнения или выполнения проиллюстрированных и описанных способов не является существенным, если не указано иначе. Таким образом, элементы способов могут быть выполнены в любом порядке, если не указано иначе, и способы могут включать в себя больше или меньше элементов, чем раскрыто здесь. Например, предполагается, что исполнение или выполнение отдельного элемента до другого элемента, одновременно с ним или после него находится в рамках объема вариантов воплощения изобретения.
При представлении элементов вариантов воплощения изобретения предполагается, что употребление единственного числа и слова "упомянутый" означает, что имеется один или более элементов. Предполагается, что термины "содержит", "включает в себя" и "имеет" являются включающими и означают, что могут иметься дополнительные элементы кроме перечисленных элементов.
Поскольку в вышеупомянутых конструкциях, продуктах и способах могут быть сделаны различные изменения без отступления от объема вариантов воплощения изобретения, предполагается, что техническое решение, содержащееся в вышепредложенном описании и показанное на чертежах, должно интерпретироваться как иллюстративное, а не в ограничивающем смысле.