Событийно-ориентированная SOA — это форма сервисно-ориентированной архитектуры (SOA), объединяющая интеллект и проактивность событийно-ориентированной архитектуры с организационными возможностями, которые можно найти в сервисных предложениях. До событийно-ориентированной SOA типичная платформа SOA централизованно организовывала сервисы с помощью предопределенных бизнес-процессов, предполагая, что то, что должно было быть уже запущено, определено в бизнес-процессе. Этот старый подход (иногда называемый SOA 1.0) не учитывает события, которые происходят в рамках или за пределами определенных бизнес-процессов. Таким образом, сложные события, в которых шаблон действий — как незапланированных, так и запланированных — должен запускать набор сервисов, не учитываются в традиционной архитектуре SOA 1.0.
Архитектура SOA 2.0 («SOA, управляемая событиями») позволяет бизнес-пользователям отслеживать, анализировать и обогащать события, чтобы устанавливать связи между разрозненными событиями, которые на первый взгляд не кажутся интуитивно очевидными. Это делает эти обогащенные события видимыми для других, особенно бизнес-аналитиков или директоров по маркетингу, а также позволяет системе SOA 2.0, возможно, автоматизировать действия, предпринимаемые для решения некоторых уникальных шаблонов. [1]
SOA 2.0 — это возможность создавать высокоуровневые бизнес-события из многочисленных низкоуровневых системных событий. События создаются путем фильтрации данных в реальном времени (например, из промежуточного ПО, приложений, баз данных и веб-сервисов) и добавления к ним определяющих деталей, таких как зависимости или причинно-следственные связи, обнаруженные путем корреляции других событий.
Если становится ясно, благодаря обогащенным событиям, которые создаются средой SOA 2.0, что показатель отказа клиентов от корзин покупок возрос за последние несколько дней, уведомление в отдел маркетинга может инициировать исследование того, что конкуренты сделали, чтобы заставить клиентов покупать продукты в другом месте. Был ли общий продукт в большинстве корзин покупок? Если да, то какие цены предлагают конкуренты?
На практике эта связь потоковых событий обрабатывается с помощью каузального векторного движка, который выполняет поиск на основе недавно просмотренных событий и назначает каузальный вектор событию, если связь обнаружена. Если A вызывает B, каузальный векторный движок проверяет, содержит ли индекс правила каузального вектора B ссылку на A. Движок может обрабатывать события для разных транзакций одновременно, возможно, в другом порядке, чем они произошли.
В отличие от последовательных или процедурных систем (в которых клиенты должны опрашивать запросы на изменение), событийно-управляемая SOA позволяет системам и компонентам реагировать динамически, в режиме реального времени, по мере возникновения событий. SOA 2.0 дополняет и расширяет SOA 1.0, вводя возможности длительной обработки.
Возможность длительной обработки позволяет архитектуре собирать различные асинхронные события в течение длительного периода времени и сопоставлять эти события с причинно-следственными связями. Шаблоны событий SOA 2.0 могут быть разработаны и реализованы для поиска взаимосвязей событий, которые охватывают дни, недели или месяцы; и при выполнении определенных критериев запускать бизнес-процесс для обработки шаблона событий.
Событийно-управляемое программирование SOA 2.0 структурировано вокруг концепции разъединенных отношений между производителями и потребителями событий: потребителю событий все равно, где или почему происходит событие; скорее, его волнует, будет ли оно вызвано, когда событие произойдет. Системы и приложения, которые разделяют производителей и потребителей событий, обычно полагаются на диспетчер событий или канал. Этот канал содержит очередь событий, которая действует как посредник между производителями и обработчиками событий.
Прототипическая парадигма SOA 2.0 содержит четыре основных элемента:
Веб-сервисы SOA 2.0 могут быть составлены двумя способами: оркестровка и хореография. При оркестровке центральный процесс берет под контроль задействованные веб-сервисы и координирует выполнение различных операций на веб-сервисах, задействованных в операции. Задействованные сервисы SOA 2.0 не знают (и не должны знать), что они являются частью композиции или более высокого бизнес-процесса. Это знает только центральный координатор оркестровки, поэтому оркестровка централизована с явными определениями операций и порядком вызова сервисов SOA 2.0.
Хореография, с другой стороны, не полагается на центрального координатора. Вместо этого каждая служба SOA 2.0, участвующая в хореографии, точно знает, когда выполнять свои операции (на основе определенных критериев запуска) и с кем взаимодействовать. Хореография — это совместные усилия, направленные на обмен сообщениями. Все участники хореографии должны знать о бизнес-процессе, операциях для выполнения, сообщениях для обмена и времени обмена сообщениями.
BPEL следует парадигме оркестровки. Хореография охвачена другими стандартами, такими как WSCI (Web Services Choreography Interface) и WS-CDL (Web Services Choreography Description Language).
Причинно-следственные связи присущи окружающему миру и являются неотъемлемой частью нашего принятия решений. Человеческий интеллект обрабатывает и собирает эти связи быстрее, чем современные искусственные вычислительные возможности. Одним из основных препятствий в области искусственного интеллекта является отсутствие автоматизированной способности связывать события вместе, как это происходит, когда человек использует человеческую интуицию.
Используя причинно-векторный движок, восприятие причинности может быть улучшено при соответствующих пространственно-временных условиях на основе структурных и временных правил, записанных в движок. Восприятие сложной причинной семантики, такой как аддитивная, опосредованная и двунаправленная причинность, должно быть закодировано так, чтобы движок мог различать события, которые связаны, и те, которые только кажутся связанными, но на самом деле таковыми не являются.
Движок использует преобладающее распространение скорости изменения причинного вектора для кодирования взаимосвязи между событиями и устанавливает частичный порядок, в котором он проверяет причинность, воспринимаемую между множественными событиями. Движок воспроизводит и воспроизводит последовательность событий в различном временном порядке, чтобы сделать вывод о том, что может быть связано топологическими связями, и сравнивает эти воспроизведения с правилами, предварительно запрограммированными аналитиком .
Несколько низкоуровневых системных событий обрабатываются Causal Vector Engine и сравниваются с этими правилами для запуска бизнес-событий более высокого уровня. Это делается с помощью консольного приложения Causality Vector Engine (CVE), которое отображает события в реальном времени для бизнес-аналитиков. В то время как потоки событий можно наблюдать по мере их возникновения, как в биржевом тикере, консольное приложение CVE имеет несколько окон, в которых перечислены одни и те же события в разных контекстах, поэтому бизнес-аналитики могут видеть, что CVE делает с отношениями между ними.
Последовательное окно показывает события в порядке даты-времени, одно или несколько других окон в различных порядках, поскольку CVE работает со списком правил и создает подразумеваемые связи между событиями. Различные кнопки и элементы управления существуют в консольном приложении, которые позволяют бизнес-аналитикам создавать связи между событиями на лету и определять правила, которые реагируют на эти связи.
Бизнес-аналитики могут вводить дополнительные определяющие детали через оператор SQL-запроса, прикрепленный к правилу или контексту события. Приложение CVE работает во многом как современное приложение для торговли акциями, которое управляющие паевыми инвестиционными фондами используют для управления рисками. Пример приложения и движка CVE можно увидеть в SILK. [2]
Большинство реализаций корпоративной сервисной шины (ESB) содержат средство, называемое « медиация ». Например, потоки медиации являются частью перехвата корпоративной сервисной шины WebSphere . Mule также поддерживает потоки медиации. Потоки медиации изменяют сообщения, которые передаются между существующими службами и клиентами, которые используют эти службы. Поток медиации выступает посредником или вмешивается для предоставления функций, таких как регистрация сообщений, преобразование данных и маршрутизация, обычно функции могут быть реализованы с использованием шаблона проектирования перехвата. [3]
По мере прохождения сообщений через ESB, ESB обогащает сообщения, предназначенные для канала, который отслеживает высокоуровневое бизнес-событие. То есть, для каждого сообщения ESB может запрашивать базу данных, чтобы получить дополнительную информацию о некотором объекте данных в сообщении. Например, на основе идентификатора клиента поток посредничества ESB может получить почтовый индекс, в котором находится клиент. Или на основе IP-адреса исходного запроса конечного пользователя поток посредничества ESB может искать, в какой стране, штате или округе находится этот IP-адрес.
Эти примеры представляют собой обогащение данных — концепцию добавления дополнительной ценности к существующим данным, основанную на намерении в конечном итоге инициировать высокоуровневое бизнес-событие.
Поток посредничества ESB — один из типов компонентов в архитектуре компонентов служб ( SCA ). Как и любой компонент SCA, программа получает доступ к потоку посредничества через экспорты, которые она предоставляет, а поток посредничества пересылает сообщения другим внешним службам через импорты. Специальные виды импорта и экспорта для JMS , называемые привязками JMS, позволяют разработчикам указывать конфигурацию привязки и писать код обработки данных. Поток посредничества состоит из ряда примитивов посредничества, которые манипулируют сообщениями по мере их прохождения через шину .
После того, как разработчики закодировали пользовательскую привязку для экспорта и импорта, они могут начать фокусироваться на компоненте потока посредничества. В редакторе сборок WebSphere Integration Developer это делается компонентом посредничества пользовательской привязки JMS, где каждая операция в интерфейсе компонента потока представлена запросом и ответом.
Фреймворк Service Data Objects (SDO) предоставляет унифицированный фреймворк для разработки приложений данных. С SDO разработчикам не нужно знать какой-либо конкретный API для доступа к данным и их использования. С помощью SDO разработчики просто работают с данными из нескольких источников данных, таких как реляционные базы данных, компоненты Entity EJB, страницы XML, веб-сервисы, архитектура компонентов сервисов и страницы JavaServer Pages.
Потоки посредничества полностью независимы от привязок, которые используются в импортах и экспортах. Фактически, цель преобразования в экземпляр SDO DataObject вне реализации потока заключается в том, что потоки посредничества затем могут быть построены без знания протокола и формата, с помощью которых сообщения отправляются в модуль посредничества и из него.
Условие запуска на уровне бизнеса позволяет архитектуре SOA 2.0 устанавливать решения для анализа клиентов в реальном времени , автоматизации маркетинга и лояльности клиентов, среди прочих функций. Бизнес-объекты моделируют реальные сущности в архитектуре, такие как клиенты, счета, кредиты и маршруты поездок. Когда состояние одного из этих объектов изменяется, и агент мониторинга замечает, что это изменение является значительным (по сравнению со списком критериев для мониторинга), создается событие и передается другим агентам мониторинга.
Например, обнаружение фактической бизнес-проблемы или возможности может привести к увеличению дохода. Если клиент отменяет заказ, дополнительные производственные мощности могут снизить рентабельность производственного цикла. Событие SOA 2.0 может уведомить отдел маркетинга о необходимости создания специальной кампании по продажам, которая перепродаст избыточные мощности, тем самым вернув себе первоначальную прибыльную себестоимость единицы продукции.
Автоматический мониторинг событий в операционных бизнес-процессах по мере выполнения процессов, чтобы увидеть, нужно ли предпринимать какие-либо немедленные действия внутри или за пределами предприятия. Эти агенты мониторинга постоянно проверяют определенные бизнес-условия и изменения в бизнес-операциях. При необходимости агенты оповещают людей, дают рекомендации, отправляют сообщения в другие приложения или вызывают целые бизнес-процессы, когда происходят такие условия или изменения.
Запущенный бизнес-процесс должен напрямую поддерживать рост доходов за счет сдерживания затрат, реагирования на условия бизнеса или способности использовать новые рыночные возможности. Результирующие бизнес-процессы могут также измерять операционный прогресс в достижении целей, контролировать операционные расходы, сообщая только то, что необходимо, только тем, кому нужно знать, или сообщать о состоянии производительности ключевых процессов ключевым лицам, принимающим решения.
Например, вы можете создать событие CRM из сообщения «брошенная корзина» (анализируя транзакцию, идентификатор клиента и время), используя другие фильтры для извлечения стоимости товаров в корзине и используя возможности корреляции системы для добавления причинных индикаторов, таких как наличие проблем с производительностью на торговом сайте. Ваше событие CRM может также включать стоимость клиента или рейтинг из базы данных клиентов...
Другой пример: на основе типов полученных независимых сервисных вызовов платформа SOA 2.0 может идентифицировать дефект продукта, выявляя базовую схему отдельных жалоб, а затем отправляя предупреждение инженерам или производителю о возможном дефекте.
Одним из механизмов, который можно использовать из большинства реализаций SOA 1.0 Enterprise Service Bus, является возможность публикации/подписки . При реализации функциональности ESB в виде сообщений Pub/Sub не требуется никаких дополнительных знаний о системных событиях для создания шаблонов сообщений SOA 2.0. После того, как предприятие реализовало множество функций Publish, аналитики промежуточного ПО SOA могут приступить к задаче разработки стратегии, какие из доступных сообщений Publish могут быть собраны в уникальный шаблон для обнаружения триггера, обогащенного SOA 2.0.
Механика Causal Vector Engine (CVE) реализована просто, с расширяемым представлением конструкций SQL , записанных в хранимых процедурах . [4] Если A вызывает B , и причинно-следственная связь должна возникнуть в течение N транзакций, то предложение SQL ORDER BY timestamp создает набор результатов , который увеличивает счетчик всех транзакций, произошедших в течение определенного периода времени, N транзакций , соответствующих B вхождению A. Создание дополнительных хранимых процедур выполняется с помощью консольного приложения CVE или с использованием любого стандартного набора инструментов разработчика баз данных. [5]
Алгоритмы домена, такие как доменная логика лихорадки/гриппа/инфекции в цитируемой ссылке, используются для получения кода SQL, который применяет выбранные бизнес-правила к варианту использования. Использование CVE в средах SOA повышает гибкость бизнеса, поскольку применение принципов SOA 2.0 выявляет бизнес-возможности, которые в противном случае были бы упущены или выявлены гораздо позже. [6]
Функциональная магнитно-резонансная томография (фМРТ) с использованием анализа причинности по Грейнджеру (GCA) обнаруживает причинно-следственные связи между областями мозга. Результаты одного из тестов продемонстрировали положительную причинно-следственную связь между rFIC и дорсальной передней поясной корой (dACC). [7]
Аналитическая система Oracle CVE использует набор теоретических моделей, каждая из которых оценивает некоторые или все данные. Когда бизнес-аналитик настраивает причинные факторы, он/она указывает критерии, указывающие, какие модели должны учитывать какой причинный фактор. [8]