ДИНАМИЧЕСКОЕ ПЕРЕПОЗИЦИОНИРОВАНИЕ ПОТОКА РАБОТ КОНЕЧНЫМИ ПОЛЬЗОВАТЕЛЯМИ
DYNAMIC REPOSITIONING WORKFLOW BY END USERS

Уровень техники
Эволюция компьютеров и сетевых технологий от систем обработки данных с высокой стоимостью и низкими рабочими характеристиками к системам связи, решения проблем и развлечения с низкой стоимостью и высокими рабочими характеристиками обеспечила экономически эффективное и экономящее время средство для снижения нагрузки выполнения ежедневных задач, таких как корреспонденция, оплата счетов, покупки, составление бюджета и сбор информации. В настоящее время вычислительная система, сопряженная с Интернетом при помощи проводной или беспроводной технологии, может предоставить пользователю легкодоступный для него канал для почти мгновенного доступа к огромному количеству информации из хранилищ веб-сайтов и серверов, расположенных по всему миру.
Например, в такой сети «Всемирной паутины» пользователь может обозначить адрес сайта или целевой страницы, куда пользователь хочет «идти». Затем пользователь вводит выбранный сайт, и целевая страница или домашняя страница сайта отображается на экране дисплея пользователя. Обычно к информации, доступной посредством веб-сайтов и серверов, обращаются при помощи веб-браузера, исполняющегося на веб-клиенте (например, компьютере). Например, пользователь «Всемирной паутины» может применить веб-браузер и обратиться к веб-сайту посредством ввода унифицированного указателя ресурса (URL) веб-сайта (например, веб-адрес и/или адрес Интернета) в адресную строку веб-браузера и нажатия на клавишу ввода на клавиатуре или щелчком на клавише «go» кнопкой мыши. Во многих случаях, когда отображается целевой экран, он может не представлять ожидаемое или искомое согласно информации, и пользователю тогда приходится указывать другой целевой адрес для обращения.
Процессы, участвующие в навигации страниц, могут быть автоматизированы, основываясь на обмене данными между приложениями, тогда как другие основываются на том, что люди для инициирования процесса одобрят документы, которые процесс использует, разрешат любые исключительные ситуации, которые возникают, и т.д. В любом случае обычно задают отдельные последовательности этапов, известные как поток работ (например, управление потоком страниц), который описывает действия пользователей и программного обеспечения, участвующих в процессе. Если такой поток работ был определен, приложение может быть построено вокруг этого определения для поддержки бизнес-процесса.
Компьютерные системы и связанное с ними программное обеспечение теперь обеспечивают инструментальные средства, при помощи которых коммерческие предприятия и другие организации могут улучшить свой поток работ. Программные инструментальные средства могут использоваться для моделирования бизнес-процессов потоков работ или бизнес-планов и идентификации неэффективности и возможных улучшений. Кроме того, если процесс включает в себя обмен данными между людьми, отделами, заводами или даже между отдельными компаниями, компьютерные системы и сети могут использоваться для реализации таких обменов. Такие системы и программные инструментальные средства также могут реализовывать крупномасштабные вычисления и другую обработку данных или информации, которые обычно связаны с относящейся к коммерции информацией.
Следовательно, управление потоком работ включает в себя эффективное управление потоком информации и управление бизнес-процессами организации, причем автоматизация такой обработки информации привела к значительным повышениям эффективности в современном деловом мире. Кроме того, такая автоматизация управления потоком работ теперь позволяет коммерческим предприятиям и другим организациям дополнительно улучшать рабочие характеристики посредством исполнения транзакций потока работ в компьютерных системах, включая глобальные компьютерные сети, такие как Интернет.
с
Типовое, основанное на потоке работ приложение часто требует удовлетворения множества условий. Например, одним таким условием является возможность принятия решений, основываясь на бизнес-правилах. Оно может включать в себя простые правила (например, подобные решению «да-или-нет», основанному на результате кредитной проверки) и более сложные правила (например, потенциально большой набор, который должен оцениваться, чтобы принять первоначальное андеррайтерское решение). Другим требованием является обмен данными с другим программным обеспечением и другими системами вне потока работ. Например, первоначальный запрос может приниматься от одной части приложения, тогда как другие аспекты (например, контактирование с кредитной службой) могут потребовать обмен данными, используя другие веб-службы или технологии. Другим условием, которое должно быть удовлетворено, является правильное взаимодействие пользователями. Например, поток работ обычно должен иметь возможность отображать сам пользовательский интерфейс или взаимодействовать с человеком посредством другого программного обеспечения. Кроме того, способность поддерживать состояние на протяжении срока службы потока работ является другим условием, которое необходимо выполнить. Следовательно, создание и исполнение потока работ в программном обеспечении накладывает уникальные проблемы.
В настоящее время имеется множество решений для встраивания систем потока работ с управлением потоком страниц. Они могут включать в себя решения, которые применяют шаблоны модель-представление-контроллер (MVC), контроллера страниц, контроллера запросов, для оркестровки навигации веб-страниц, например. Эти решения позволяют пользователям выполнять навигацию по последовательности предварительно определенных страниц с жестко запрограммированными взаимосвязями. Тем не менее, представление страниц, которые уже были обработаны, требует, чтобы взаимосвязи были определены заранее.
Следовательно, может стать проблемным моделирование всех возможных комбинаций взаимосвязей между любым набором страниц. Такая сложность заставляет разработчиков и аналитиков моделировать взаимосвязь между страницами, которые наиболее часто и наиболее вероятно происходят, например «удачный путь». Таким образом, разработчикам приходится строить логику повторного представления внутри их страниц, которая требует отслеживания последних представленных страниц. Как правило, не существует механизм, который позволяет определять поток страниц, в котором конечные пользователи могут перепозиционировать поток без формальной взаимосвязи между определяемыми страницами.
Поэтому существует потребность устранения недостатков вышеупомянутых примеров, связанных с обычными системами и устройствами.
Сущность изобретения
Нижеследующее представляет упрощенную сущность, чтобы предоставить базовое понимание некоторых аспектов заявленного предмета. Данная сущность изобретения не является обширным обзором. Она не предназначена для определения ключевых/критичных элементов или для того, чтобы характеризовать объем заявленной сущности изобретения. Ее исключительной целью является представление некоторых принципов в упрощенном виде в качестве вводной части к более подробному описанию, которое представлено ниже.
Рассматриваемое нововведение обеспечивает системы и способы, которые динамически восстанавливают состояние потока работ посредством применения менеджера динамического состояния, который является внешним для потока работ и позволяет выполнять взаимодействие хоста с экземпляром потока работ. Такой менеджер динамического состояния может управлять состоянием потока работ извне потока работ (например, без встраивания в виде части самого потока работ). По существу, снижается требование на моделирование изменений незапланированных (специальных, ad hoc) состояний потока работ. Таким образом, может подаваться управляемый событиями поток работ, в котором незапланированные события применяются для восстановления и манипулирования потоком работ в состояния, которые не были смоделированы как часть самого потока работ, чтобы динамически создавать взаимосвязи во время исполнения. Хост может вызывать провайдера потока работ и передает установленное состояния (например, с заданным состоянием и пользовательским интерфейсом (UI)), причем тогда захватывается время исполнения потока работ. Менеджер динамического состояния принимает установленное состояние для возбуждения такого состояния посредством переустановки экземпляра потока работ. Состояние потока работ также может посылать уведомление времени исполнения потока работ в отношении приостановки (например, ожидания события), которое возвращается провайдеру потока работ и затем передается хосту.
В связанном аспекте компонент интерактивной деятельности может остановить поток работ в заданных точках (например, устанавливая время исполнения потока работ в ожидание) и ожидать ввод от хоста для возобновления потока работ. Хост может вызвать провайдера потока работ для загрузки экземпляра потока работ. Затем может быть установлено событие, причем событие может соответствовать пользовательскому интерфейсу (например, веб-странице, которая соответствует состоянию потока работ). Таким образом, хост может подавать информацию, касающуюся путей навигации (например, в виде «go-to» («идти к»)).
Затем может обеспечиваться проверка менеджером динамического состояния в отношении доступности состояния для потока работ. Если такое состояние не существует, пользователю может отображаться ошибка. В противном случае, и если такое состояние существует, менеджер динамического состояния может установить такое состояние в активное для его исполнения в потоке работ. Затем и после исполнения поток работ может ожидать событие для перехода в новое состояние, и после приема события перехода от хоста поток работ может перейти в новое состояние. Затем выполняется верификация для проверки, является ли такое состояние последним состоянием в экземпляре потока работ. Если да, методология завершается. Иначе, методология возвращается к исполнению другого состояния. Необходимо понять, что рассматриваемое нововведение не ограничивается таким образом, и в дополнение к веб-страницам рассматриваемое нововведение может быть применимо к веб-услугам, исполнению системных услуг и т.п.
Согласно конкретному способу рассматриваемого нововведения первоначально отображение (например, страница), которая представляет собой часть управления навигацией приложения (например, потока управления потоком страниц), отображается в браузере, причем пользователь заполняет информацию на странице для ее представления. Затем загружается экземпляр потока работ, связанный с таким отображением, и состояние потока работ устанавливается в состояние, связанное с отображением. Обычно существует взаимно однозначная ассоциация между отображением и состоянием. Если состояние установлено, событие, генерируемое отображением, передается экземпляру потока работ для потребления. События передаются текущему состоянию экземпляра потока работ. Состояние определяет, может ли потребляться такое событие. Если событие потребляется текущим состоянием, связанный с ним обработчик может определить, требуются ли переходы состояний. Иначе и если событие не потребляется текущим состоянием, такое событие тогда передается состоянию, содержащему это состояние для потребления.
Чтобы выполнить вышеприведенные и связанные цели, некоторые иллюстративные аспекты заявленной сущности изобретения описываются в данном документе в связи с последующим описанием и прилагаемыми чертежами. Эти аспекты указывают различные пути, которыми заявленное изобретение может быть осуществлено на практике, все из которых, как предполагается, находятся в пределах объема заявленного изобретения. Другие преимущества и новые признаки могут стать очевидными из последующего подробного описания при рассмотрении в связи с чертежами.
Краткое описание чертежей
Фиг.1 иллюстрирует примерную схему системы потока работ, имеющую менеджер динамического состояния, который переустанавливает состояние потока работ.
Фиг.2 иллюстрирует примерную методологию для переустановки состояния потока работ согласно примерному аспекту рассматриваемого нововведения.
Фиг.3 иллюстрирует конкретную схему системы технологии разработки веб-сайтов активных серверных страниц (ASP) согласно аспекту рассматриваемого нововведения.
Фиг.4 иллюстрирует дополнительную схему системы технологии разработки веб-сайтов ASP согласно другому аспекту рассматриваемого нововведения.
Фиг.5 иллюстрирует примерную методологию, в которой поставляется интерактивный поток работ, который ожидает ввода от хоста для перемещения потока работ в другое состояние.
Фиг.6 иллюстрирует другую методологию переустановки состояния потока работ.
Фиг.7 иллюстрирует диаграмму этапов, относящихся к управляемому событиями потоку работ согласно аспекту рассматриваемого нововведения.
Фиг.8 иллюстрирует последовательность действий, применяемых для восстановления и манипулирования потоком работ в состояния, которые не были смоделированы как часть самого потока работ.
Фиг.9 иллюстрирует примерную среду для реализации различных аспектов рассматриваемого нововведения.
Фиг.10 представляет собой блок-схему дополнительной вычислительной среды, которая может применяться для реализации потока работ с услугой сохранности маршрутизации рассматриваемого нововведения.
Подробное описание
Различные аспекты данного изобретения теперь описываются с ссылкой на прилагаемые чертежи, на которых одинаковые ссылочные позиции обозначают подобные или соответствующие элементы на всех чертежах. Необходимо понять, однако, что чертежи и подробное описание, относящееся к ним, как предполагается, не ограничивают заявленную сущность изобретения конкретной описанной формой. Скорее, намерением является охват всех модификаций, эквивалентов и альтернатив, подпадающих под сущность и объем заявленного изобретения.
Как используется в данном документе, термины «компонент», «система», «услуга», «менеджер» и т.п., как предполагается, ссылаются на относящиеся к компьютеру объект, аппаратные средства, комбинацию аппаратных средств и программного обеспечения, программное обеспечение, или исполняемое программное обеспечение. Например, компонентом может быть, без ограничения указанным, процесс, выполняющийся на процессоре, процессор, объект, исполняемый файл, поток управления, программа и/или компьютер. В качестве иллюстрации, как приложение, выполняющееся на компьютере, так и компьютер могут быть компонентами. Один или несколько компонентов могут постоянно находиться в процессе и/или потоке управления, и компонент может локализоваться на одном компьютере и/или распределяться между двумя или несколькими компьютерами.
Слово «примерный» используется в данном документе со значением «служащий в качестве примера, копии или иллюстрации». Любой аспект или образец, описанные в данном документе в качестве «примерного», необязательно должен истолковываться как предпочтительный или выгодный относительно других аспектов или образцов.
Кроме того, описанная сущность изобретения может быть реализована в виде системы, способа, устройства или изделия, используя стандартные методы программирования и/или методы проектирования для создания программных средств, программно-аппаратных средств, аппаратных средств или любой их комбинации для управления компьютером или процессором, основываясь на устройстве для реализации аспектов, описанных в данном документе. Термин «компьютерная программа», используемый в данном документе, как предполагается, охватывает компьютерную программу, доступную с любого считываемого компьютером устройства, несущей или носителя. Например, считываемые компьютером носители могут включать в себя, но не ограничиваются ими, магнитные запоминающие устройства (например, жесткий диск, гибкий диск, магнитные полоски …), оптические диски (например, компакт-диск (CD), цифровой многофункциональный диск (DVD) …), смарт карты и устройства флэш-памяти (например, карточка, полоска). Кроме того, необходимо понять, что несущее колебание может применяться для переноса считываемых компьютером электронных данных, таких как те, которые используются при передаче и приеме электронной почты или при доступе к сети, такой как Интернет или локальная сеть (LAN). Конечно, для специалиста в данной области техники понятно, что возможны многочисленные модификации этой конфигурации без отступления от объема или сущности заявленного предмета.
На фиг.1 изображена блок-схема системы 101, которая динамически переустанавливает состояние (состояния) 102 потока работ посредством применения менеджера 105 динамического состояния, который является внешним для потока работ, и позволяет осуществлять взаимодействие хоста 120 с экземпляром 102 потока работ. Система 101 применяет менеджер 105 динамического состояния для снижения требования к моделированию изменений незапланированного состояния потока работ, связанного с системой 101. Таким образом, может подаваться управляемый событиями поток работ, в котором незапланированные события применяются для переустановки и манипулирования потоком работ в состояния, которые не были смоделированы как часть самого потока работ, и для динамического создания взаимосвязей во время исполнения.
Такой поток работ может моделировать процесс оператора или системный процесс, который определяется как карта деятельностей. Деятельность представляет собой этап в потоке работ и представляет собой единицу исполнения, повторного использования и композиции для потока работ. Карта деятельностей выражает правила, действия, состояния и их связь. Обычно поток работ выполняется посредством механизма/времени 110 исполнения потока работ, и время исполнения потока работ требует внешнего приложения, чтобы исполнить его согласно нескольким правилам, как определяется хостом 120. Обмен данными между хостом 120 и системой 100 потока работ может принадлежать бизнес-документам и/или описывать их и другие объекты, которые применяются для, или которые способствуют деятельности потока работ, или потоку между локальными переменными потока работ, которые используются с переданными данными с хост-приложением 120.
Например, хост-приложение 120 может взаимодействовать с провайдером 115 потока работ, связанным с системой 100 потока работ, через базовый класс 117 провайдера потока работ. Кроме того, хост 120 может быть ответственным за ряд дополнительных или критических аспектов, такие как создание одного или нескольких процессов, маршалинг вызовов между различными компонентами, как необходимо, для правильного исполнения потока работ; и установку механизмов изолирования. Кроме того, хост 120 может создавать многочисленные процессы, чтобы воспользоваться многочисленными центральными процессорами (CPU) в машине по причинам масштабируемости, или исполнять большое количество экземпляров потока работ на «ферме» машин. Хост 120 может дополнительно управлять политиками для применения, когда поток работ подвержен длительному ожиданию, прослушиванию заданных событий и сообщению о них пользователю или администратору, установке времени простоя и повторных попыток для каждого потока работ, выявлению счетчиков рабочих характеристик и записи информации регистрации для целей отладки и диагностики.
Поток работ, связанный с системой 101 потока работ, может устанавливать связь с внешним миром посредством услуги, специально установленной для этой цели, причем такая услуга может вызывать события, которые возбуждают особые ситуации, к которым будут подключаться управляемые событиями деятельности внутри потока работ. Аналогично, услуга раскрывает открытые методы для потока работ для вызова и посылки данных на хост 120. Поток работ может определяться в виде плана для исполнения в компьютерной системе. План может включать в себя набор действий, имеющих заданные атрибуты одновременности, зависимости и транзакции, связанные с ними. Каждый план может иметь ассоциированное состояние плана, которое включает в себя определение плана, текущее расположение в плане, а также активные или оперативные данные и объекты, связанные с планом. В плане могут существовать границы транзакций, основываясь на группировках действий. В этом отношении транзакция может охватывать индивидуальные действия, или транзакции, или их группы. Как описано дополнительно ниже в данном документе, действия могут группироваться в последовательности, которые исполняются последовательным образом, а также задачи, в которых действия исполняются одновременно. Поэтому, основываясь на группировках, атрибуты одновременности могут быть разрешены для действий и транзакций в плане.
Хост 120 может вызывать провайдера 115 потока работ и передавать установленное состояние (например, с заданным состоянием и UI), причем тогда захватывается время исполнения потока работ. Менеджер 105 динамического состояния принимает установленное состояние для возбуждения такого состояния посредством переустановки экземпляра 111 потока работ. Состояние 102 потока работ также может посылать уведомление времени 110 исполнения потока работ в отношении приостановки (например, ожидания события), которая направляется провайдеру 115 потока работ и затем сообщается хосту 120.
Нижеследующее представляет собой примерное определение менеджера динамического состояния, причем предполагается, что каждое состояние внутри потока работ конечного автомата отображается на веб-страницу.
//Извлечь информацию со страницы и послать потоку работ
Data pageInfo = Page.GetFormData();
//Извлечь имя, ассоциированное со страницей.
String pageAlias = Page.GetCurrentPageAlias();
//Извлекает экземпляр потока работ потока работ
//конечного автомата
StateMachineWorkflow StateMachineInstance =
WorkflowRuntime.GetWorkflow(workflowID);
//Извлекает текущее состояние конечного автомата
State currentState = StateMachineInstance.GetCurrentState();
//Если текущее состояние конечного автомата не совпадает с
//именем страницы, тогда необходимо переустановить состояние,
//иначе, продолжить и представить страницу текущему
//состоянию
If (currentState.Name != pageAlias)
{
StateMachineWorkflow.SetState(pageName);
}
StateMachineWorkflow.Submit(pageInfo);
//Ожидает до тех пор, пока не произойдет переход состояния,
//перед тем как он обновит страницу
State nextState = StateMachine.GetCurrentState();
//Извлекает отображение между состоянием потока работ и
//страницей.
//Напоминаем, что имеется взаимно однозначное отображение.
String nextPage = Page.LookUpAlias(nextState.Name);
Page.DisplayPage(nextPage);
Фиг.2 иллюстрирует методологию 200 согласно аспекту рассматриваемого нововведения. В то время как примерный способ изображается и описывается в данном документе как последовательность блоков, представляющих различные события и/или действия, рассматриваемое нововведение не ограничивается изображенным порядком таких блоков. Например, некоторые действия или события могут происходить в другом порядке и/или одновременно с другими действиями или событиями, отдельно от порядка, изображенного в данном документе, согласно нововведению. Кроме того, не все изображенные блоки, события или действия могут требоваться для реализации методологии согласно рассматриваемому нововведению. Кроме того, понятно, что примерный способ и другие способы согласно нововведению могут реализовываться в ассоциации со способом, изображенным и описанным в данном документе, а также в ассоциации с другими системами и устройствами, которые не изображены или не описаны. На этапе 210 хост может вызвать провайдера потока работ для загрузки экземпляра потока работ. Например, чтобы загрузить экземпляр потока работ, может быть предусмотрен доступ к соответствующему персистентному хранилищу, которое хранит представление экземпляра потока работ, и такое представление затем преобразуется в экземпляры потока работ и предоставляется хост-приложению. Затем и на этапе 220 может быть установлено событие, причем событие может соответствовать пользовательскому интерфейсу (например, веб-странице, которая соответствует состоянию потока работ). Таким образом, хост может послать информацию, касающуюся путей навигации (например, в виде «go-to»). Затем на этапе 230 менеджер динамического состояния может проверить доступность состояния для потока работ. Если такое состояние не существует, пользователю может отображаться ошибка, и методология останавливается на этапе 235.
Иначе, и если такое состояние существует, менеджер динамического состояния может установить такое состояние активным на этапе 240 для его исполнения в потоке работ. Затем, при исполнении на этапе 250 поток работ может ожидать события на переход в новое состояние 260, и при приеме события перехода от хоста поток работ может перейти в новое состояние на этапе 270. Затем и на этапе 280 выполняется верификация для проверки, является ли такое состояние последним состоянием в экземпляре потока работ. Если да, методология завершается на этапе 295. Иначе, методология возвращается к действию 250 для исполнения другого состояния.
Фиг.3 и 4 иллюстрируют конкретные примеры 300 и 400 реализации менеджера динамического состояния согласно аспекту рассматриваемого нововведения. В противоположность обычным системам (в которых пользователям необходимо взаимодействовать с системой типа потока работ, которая определяет навигацию по страницам посредством моделирования комплексной логики среди различных страниц/этапов) - рассматриваемое нововведение делает возможным динамический принцип для управления состояниями, который упрощает участвующую логику. Например, состояния 310, 410 потока работ могут быть переустановлены, перед тем как информация для события будет обработана потоком работ.
Как показано на фиг.3 и 4, существует две версии потока работ, а именно тип 315, 415 потока работ конечного автомата и тип 317, 417 последовательного потока работ. Обычно каждый поток работ содержит некоторое количество деятельностей, каждая из которых выполняет некоторый аспект функции этого потока работ. Поток работ действует в качестве контейнера для этих деятельностей, обеспечивая путь для управления их жизненными циклами и порядком исполнения. Системные потоки работ имеют тенденцию исполнять деятельности хорошо определенным, предсказуемым образом, тогда как потоки работ человека-оператора - нет.
Чтобы рассмотреть оба эти требования, Windows Workflow Foundation обеспечивает два встроенных типа потока работ: последовательные потоки 317, 417 работ, способные исполнять деятельности по предварительно определенному шаблону, и потоки 315, 415 работ конечного автомата, способные реагировать на внешние события, когда они происходят. Оба основываются на одной и той среде исполнения, и оба могут использовать одни и те же настроенные деятельности. Последовательный подход представляет собой естественное соответствие для системного потока работ, тогда как конечные автоматы обеспечивают способ моделирования более свободно определенной природы потока работ человека-оператора. Отдельный поток работ может объединять элементы обоих стилей, позволяя получить их комбинирование. Кроме того, разработчик также может создать настроенные типы потока работ.
Время 311, 411 исполнения потока работ управляет экземпляром потока работ программным путем в качестве времени исполнения потока работ в Active Server Pages (активные серверные страницы) (приложение ASP.net) 301, 401. Кроме того, компонент 330, 430 интерактивной деятельности может остановить исполнение потока работ в заданных точках (например, установкой времени исполнения потока работ в ожидание) и ожидать ввода от хоста для возобновления потока работ. Хост (например, веб-страница) может послать событие, чтобы переместить поток работ в другое состояние. Например, хост может запустить событие возобновления для возобновления потока работ в следующее состояние. Фиг.4 дополнительно иллюстрирует компонент интерактивной деятельности, разбитый на возобновление и приостановку в конечном автомате 450.
Компонент 330, 440 интерактивной деятельности может подавать пользовательский ввод и связанное с ним взаимодействие с потоком работ во время различных прерываний интерактивности, которые запрашивает такой пользовательский ввод. Он разрешает управляемый/синхронный обмен данными между потоком работ и хост-приложением, которое связано с потоком работ. Таким образом, в определенные моменты времени во время исполнения потока работ контекст пользователя может ассоциироваться с экземпляром потока работ. Кроме того, поток работ может запускать пользовательский интерфейс (UI), основываясь на состоянии потока работ во время приостановки, при помощи компонента 332, 432 переключения пользователя, такого как информация, относящаяся к пользователю потока работ. Кроме того, обработчики 334, 434 событий могут потреблять события, которые не обрабатываются текущим состоянием, для разрешения текущего потока управления, который определяется на состоянии, подлежащем подмене. Следовательно, состояние потока работ может управляться извне потока работ (например, без встраивания в виде части самого потока работ), и снижается требование на моделирование изменений незапланированных состояний потока работ.
Фиг.5 и 6 иллюстрируют примерные блок-схемы последовательности операций, на которых подается интерактивный поток работ, который исполняется до конкретных точек и ожидает ввода от хоста для возобновления потока работ, причем такое событие может переместить поток работ в другое состояние. Как изображается в методологии 500, процесс потока работ исполняется на этапе 505 и переходит к следующему действию в процессе. Исполнение потока работ может верифицироваться на этапе 510, означает ли действие, подлежащее исполнению, окончание потока работ. Если да, исполнение потока работ завершается на этапе 520. Иначе, методология переходит к действию 530, при котором действие, подлежащее исполнению потоком работ, проверяется для верификации, является ли оно интерактивной деятельностью. Если да, поток работ приостанавливается на этапе 540 для выполнения взаимодействия с хост-приложением для динамического восстановления состояния потока работ, как подробно описано выше. Иначе, методология возвращается к действию 505, в котором поток работ исполняет текущее действие и переходит к следующему.
Как изображено на фиг.5 и после приостановки потока работ на этапе 540, поток исполнения ожидает ввода от хоста на этапе 550 для возобновления потока работ, причем такое событие может переместить поток работ в другое состояние. Затем и на этапе 660 по фиг.6 может быть установлено событие, причем событие может соответствовать пользовательскому интерфейсу (например, веб-странице), которое соответствует состоянию потока работ, предполагая, что такое состояние фактически существует. Таким образом, хост может подавать информацию, касающуюся путей навигации, на этапе 670 в виде «go-to», например. По существу, менеджер динамического состояния может установить такое состояние в активное на этапе 680 для его исполнения в потоке работ. Затем и после исполнения поток работ может ожидать события для перехода в новое состояние, и при приеме события перехода от хоста поток работ может перемещаться в новое состояние на этапе 690. Таким образом, состояние потока работ может управляться извне потока работ (например, без встраивания в виде части самого потока работ), и снижается требование к моделированию изменений незапланированных состояний потока работ.
Фиг.7 и 8 иллюстрируют пример управляемого событиями потока работ, при котором незапланированные события применяются для восстановления и манипулирования потоком работ в состояния, которые не были смоделированы как часть самого потока работ, для динамического создания зависимостей во время исполнения. Приложение веб-страницы может вызвать провайдера потока работ и передать установленное состояние (например, с заданным состоянием и UI), причем тогда захватывается время исполнения потока работ. Менеджер динамического состояния может принимать установленное состояние для запуска такого состояния посредством переустановки экземпляра потока работ. Первоначально страница, которая является частью потока управлениями потоком страниц, отображается в браузере, причем пользователь заполняет информацию на странице для ее представления. Затем загружается экземпляр потока работ, ассоциированный с такой страницей, и состояние потока работ устанавливается в состояние, ассоциированное со страницей. Обычно существует взаимно однозначная ассоциация между страницей и состоянием. Если состояние установлено, событие, генерированное страницей, передается экземпляру потока работ для потребления. События передаются текущему состоянию экземпляра потока работ. Состояние определяет, может ли оно потребить данное событие. Если событие потребляется текущим состоянием, ассоциированный обработчик может определить, требуются ли переходы состояния. Иначе и если событие не потребляется текущим состоянием, такое событие тогда передается состоянию, содержащему это состояние для потребления.
Например, в сценарии покупки телефона с выбранными свойствами разработчик может разработать приложение потока работ, которое требует, чтобы пользователи вводили информацию, используя веб-страницы. Веб-страницы были ранее определены и отображены на состояния в потоке работ конечного автомата. Целью разработчика является смоделировать поток управления приложения, используя поток работ конечного автомата. События, определенные на странице, могут моделироваться как вводы в состояние. Основываясь на типе события, конечный автомат может изменить состояния и исполнить до завершения. Изменение состояний в конечном автомате определяет поток управления приложения управления страницами.
Перед тем как событие будет представлено со страницы потоку работ, текущее состояние потока работ конечного автомата может позиционироваться в состояние, ассоциированное с отображаемой страницей. Это позволяет выполнять манипулирование событием, как если бы пользователь был на удачном пути и, как ожидается, находится на этой странице. Таким образом, может быть создана динамическая взаимосвязь (при помощи перепозиционирования) между последним установленным состоянием потока работ и вновь выбранным состоянием потока работ. Этапы покупки сотового телефона изображены на диаграмме 700 на фиг.7. Необходимо понять, что, если кто-то работает на странице, которая отображается на текущее состояние потока работ конечного автомата, тогда обычно нет необходимости изменять или перепозиционировать состояние. В основном, состояние переустанавливается только тогда, когда страница и текущее состояние не совпадают.
На фиг.8 изображена последовательность 800, причем конечный пользователь может представить этапы 1, 2, 3, 4, 5 и затем пересмотреть тип плана, который должен приобрести. Рассматриваемое нововведение дает возможность конечному пользователю нажать на обратную кнопку браузера, чтобы перепозиционироваться на этап два 820, выбрать план с предоплатой, представить информацию и перейти к этапу пять 840. Необходимо понять, что взаимосвязь между этапом 5 и 2 не была определена заранее, и, следовательно, может существовать как незапланированное (специальное; ad hoc) соотношение. Также событие 860 аннулирования может моделироваться как обработчик событий на главном потоке работ конечного автомата. Следовательно, рассматриваемое нововведение обеспечивает инфраструктуру, где взаимосвязи могут создаваться динамически во время исполнения. Это позволяет аналитикам и разработчикам моделировать только наиболее общий путь исполнения между страницами и поток управления, определенный по модели потока работ, для настройки под запросы конечного пользователя.
С ссылкой на фиг.9 описывается примерная среда 910 для реализации различных аспектов рассматриваемого нововведения, которая включает в себя компьютер 912. Компьютер 912 включает в себя блок 914 обработки, системную память 916 и системную шину 918. Системная шина 918 соединяет системные компоненты, включая, но не ограничиваясь ими, системную память 916 с блоком 914 обработки. Блок 914 обработки может быть любым из многочисленных доступных процессоров. Сдвоенные микропроцессоры и другие мультипроцессорные архитектуры также могут применяться в качестве блока 914 обработки.
Системная шина 918 может быть любой из нескольких типов шинной структуры (структур), включая шину памяти или контроллер памяти, периферийную шину или внешнюю шину и/или локальную шину, используя любое множество доступных шинных архитектур, включая, но не ограничиваясь ими, 11-разрядную шину, архитектуру промышленного стандарта (ISA), микроканальную архитектуру (MSA), расширенную ISA (EISA), электронику интеллектуальных накопителей (IDE), локальную шину Ассоциации по стандартам в области видеотехники (VESA) (VLB), межсоединения периферийных компонентов (PCI), универсальную последовательную шину (USB), ускоренный графический порт (AGP), шину Международной ассоциации производителей карт памяти для персональных компьютеров (PCMCIA) и интерфейс малых компьютерных систем (SCSI).
Системная память 916 включает в себя энергозависимую память 920 и энергонезависимую память 922. Базовая система ввода-вывода (BIOS), содержащая базовые подпрограммы для переноса информации между элементами внутри компьютера 912, например, во время запуска, хранится в энергонезависимой памяти 922. В качестве иллюстрации и не ограничения, энергонезависимая память 922 может включать в себя постоянное запоминающее устройство (ROM), программируемое ROM (PROM), электрически программируемое ROM (EPROM), электрически стираемое ROM (EEPROM) или флэш-память. Энергозависимая память 920 включает в себя оперативное запоминающее устройство (RAM), которое служит в качестве внешней кэш-памяти. В качестве иллюстрации и не ограничения, RAM доступно во многих видах, таких как синхронное RAM (SRAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), SDRAM с удвоенной скоростью обмена данными (DDR SDRAM), усовершенствованное SDRAM (ESDRAM), DRAM с синхронной связью (SLDRAM) и RAM с шиной прямого резидентного доступа (DRRAM).
Компьютер 912 также включает в себя съемные/несъемные, энергозависимые/энергонезависимые носители данных компьютера. Фиг.9 иллюстрирует, например, запоминающее устройство 924 на дисках. Запоминающее устройство 924 на дисках включает в себя, но не ограничивается ими, устройства, подобные накопителю на магнитных дисках, накопителю на гибких магнитных дисках, накопителю на ленте, накопителю «Jaz», накопителю «Zip», накопителю LS-100, карте флэш-памяти или карте памяти. Кроме того, запоминающее устройство 924 на дисках может включать в себя носители данных отдельно или в комбинации с другими носителями данных, включая, но не ограничиваясь ими, накопитель на оптических дисках, такой как накопитель на компакт-дисках (накопитель CD-ROM), накопитель на записываемых компакт-дисках (накопитель CD-R), накопитель на перезаписываемых компакт-дисках (накопитель CD-RW) или накопитель на цифровых многофункциональных дисках (накопитель DVD-ROM). Чтобы облегчить подключение запоминающих устройств 924 на дисках к системной шине 918, обычно используется съемный или несъемный интерфейс, такой как интерфейс 926.
Необходимо понять, что фиг.9 описывает программное обеспечение, которое служит в качестве посредника между пользователями и основными ресурсами компьютера, описанными в подходящей операционной среде 910. Такое программное обеспечение включает в себя операционную систему 928. Операционная система 928, которая может храниться на запоминающем устройстве 924 на дисках, служит для управления и распределения ресурсов компьютерной системы 912. Системные приложения 930 используют преимущество управления ресурсами посредством операционной системы 928 при помощи программных модулей 932 и программных данных 934, хранимых или в системной памяти 916, или на запоминающем устройстве 924 на дисках. Необходимо понять, что различные компоненты, описанные в данном документе, могут быть реализованы с различными операционными системами или комбинациями операционных систем.
Пользователь вводит команды или информацию в компьютер 912 при помощи устройства (устройств) 936 ввода. Устройства 936 ввода включают в себя, но не ограничиваются ими, указательное устройство, такое как мышь, шаровой указатель, стилус, сенсорную панель, клавиатуру, микрофон, джойстик, игровой планшет, антенну спутниковой связи, сканер, карту телевизионного тюнера, цифровую камеру, цифровую видеокамеру, веб-камеру и т. п. Эти и другие устройства ввода подключаются к блоку 914 обработки при помощи системной шины 918 через интерфейсный порт (порты) 938. Интерфейсный порт (порты) 938 включает в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройство (устройства) 940 вывода использует некоторые из портов этого же типа, что и устройство (устройства) 936 ввода. Таким образом, например, порт USB может использоваться для обеспечения ввода в компьютер 912 и вывода информации из компьютера 912 на устройство 940 вывода. Адаптер 942 вывода предусмотрен для иллюстрации того, что существуют некоторые устройства 940 вывода, подобные мониторам, громкоговорителям и принтерам, из числа других устройств 940 вывода, которым требуются специальные адаптеры. Адаптеры 942 вывода включают в себя, в качестве иллюстрации и не ограничения, видео и звуковые карты, которые обеспечивают средство соединения между устройством 940 вывода и системной шиной 918. Необходимо отметить, что другие устройства и/или системы устройств обеспечивают возможности как ввода, так и вывода, такие как удаленный компьютер (компьютеры) 944.
Компьютер 912 может работать в сетевой среде, используя логические подключения к одному или нескольким удаленным компьютерам, таким как удаленный компьютер (компьютеры) 944. Удаленным компьютером (компьютерами) 944 может быть персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер (PC), рабочая станция, микропроцессорный прибор, одноранговое устройство или другой общий узел сети и т.п., и он обычно включает в себя многие или все из элементов, описанных в отношении компьютера 912. Для целей краткости только запоминающее устройство 946 памяти изображается с удаленным компьютером (компьютерами) 944. Удаленный компьютер (компьютеры) 944 логически подключается к компьютеру 912 при помощи сетевого интерфейса 948 и затем физически подключается при помощи подключения 950 обмена данными. Сетевой интерфейс 948 охватывает сети передачи данных, такие как локальные сети (LAN) и глобальные сети (WAN). Технологии LAN включают в себя распределенный интерфейс передачи данных по волоконно-оптическим каналам (FDDI), распределенный проводной интерфейс передачи данных (CDDI), Эзернет/IEEE (Институт инженеров по электротехнике и радиоэлектронике) 802.3, Маркерное кольцо/IEEE 802.5 и т.п. Технологии WAN включают в себя, но не ограничиваются ими, двухточечные линии передачи данных, сети с коммутацией каналов, такие как цифровые сети с интеграцией служб (ISDN) и их варианты, сети с коммутацией пакетов и цифровые абонентские линии (DSL).
Подключение (подключения) 950 обмена данными ссылается на аппаратные/программные средства, используемые для соединения сетевого интерфейса 948 с шиной 918. Хотя подключение 950 обмена данными показано для целей иллюстрации внутри компьютера 912, оно также может быть вне компьютера 912. Аппаратные/программные средства, необходимые для подключения к сетевому интерфейсу 948, включают в себя, только для примерных целей, внутреннее и внешнее оборудование, такое как модемы, включая модемы обычного телефонного класса, кабельные модемы и модемы DSL, адаптеры ISDN и карты Ethernet.
Фиг.10 представляет собой схематическую блок-схему среды 1000 выборочного вычисления, которая может применяться для воплощения реализации потока работ рассматриваемого нововведения. Система 1000 включает в себя одного или нескольких клиентов 1010. Клиент (клиенты) 1010 может быть аппаратным и/или программным средством (например, потоки, процессы, вычислительные устройства). Система 1000 также включает в себя один или несколько серверов 1030. Сервер (серверы) 1030 также может быть аппаратным и/или программным средством (например, потоки, процессы, вычислительные устройства). Серверы 1030 могут содержать потоки для выполнения преобразований посредством применения компонентов, описанных в данном документе, например. Одной возможной передачей данных между клиентом 1010 и сервером 1030 может быть в виде пакета данных, предназначенного для передачи между двумя или более компьютерными процессами. Система 1000 включает в себя инфраструктуру 1050 обмена данными, которая может применяться для того, чтобы способствовать обмену данными между клиентом (клиентами) 1010 и сервером (серверами) 1030. Клиент (клиенты) 1010 выполнен с возможностью подключения к одному или нескольким хранилищам 1060 данных клиентов, которые могут использоваться для хранения информации, локальной для клиента (клиентов) 1010. Аналогично, сервер (серверы) 1030 выполнены с возможностью подключения к одному или нескольким хранилищам 1040 данных серверов, которые могут применяться для хранения информации, локальной для серверов 1030.
То, что было описано выше, включает в себя многочисленные примерные аспекты. Конечно, нельзя описать каждую мыслимую комбинацию компонентов или методологий с целью описания этих аспектов, но специалист в данной области техники может понять, что возможны многие дополнительные комбинации и перестановки. Следовательно, аспекты, описанные в данном документе, предназначены для того, чтобы охватывать все такие изменения, модификации и варианты, которые подпадают под сущность и объем прилагаемой формулы изобретения. Кроме того, в той мере, в какой термин «включает» используется как в подробном описании, так и в формуле изобретения, такой термин предполагается включающим в себя аналогично термину «содержащий», как «содержащий» интерпретируется, когда он используется в качестве переходного слова в формуле изобретения.