Возвращение к работе-2007
Управление транзакциями при интеграции систем - одна из важнейших задач.
С прошедшими праздниками! Каникулы были долгими, но все-таки возвращаемся к работе.
Для начала хотелось бы предложить перевод статьи «Исследование архитектуры workflow-систем», в котором на достаточно базовом уровне рассказывается об основных понятиях workflow (под ним понимается система управления бизнес-процессами с участием людей, в отличие от BPM-систем, которые в первую очередь понимаются как системы автоматизации бизнес-процессов, в которых люди могут и не участвовать). Если есть замечания по переводу – высказывайтесь в комментариях.
В качестве основной темы хотелось бы затронуть вопросы интеграции приложений, как на SOA-платформе, так и без нее. Вернее, один «интеграционный» вопрос – транзакции. Транзакция, как определяет ее Wikipedia, - это группа последовательных операций, которая представляет из себя логическую единицу работы с данными. Транзакция может быть выполнена целиком либо успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта.
Транзакции существуют на разных уровнях. Например, транзакции SQL-сервера (если упрощенно, то это операции изменения данных в базе данных, когда одновременно меняются несколько таблиц). Или распределенные транзакции между базами данных. Или распределенные транзакции между приложениями.
Вот с последними-то обычно большие проблемы. Приведу пример: в ERP-системе возникает заявка на выделение средств. Для того, чтобы ее согласовать, используется внешняя workflow-система. В процессе согласования в ERP-системе и СЭД создаются дополнительные объекты – заявка привязывается к бюджетам, формируется спецификация, создаются документы на оплату, а исходные изображения счетов, хранящиеся в электронном архиве, привязываются к заявке в ERP-системе и т.д. Но при прерывании процесса согласования вся транзакция должна прерваться, т.е. – должны удалиться документы на оплату, привязка к бюджетам, должны «откатиться» изменения объектов СЭД и т.д.
Для того, чтобы это было возможно, и СЭД (электронный архив, workflow-подсистема), и ERP-система должны поддерживать транзакции (а если используется интеграционные приложения промежуточного слоя типа MicrosoftBizTalk, то и они; впрочем, BizTalk транзакции поддерживает). Более того, должны существовать единые протоколы поддержки транзакций, чтобы интеграция могла происходить проще. В настоящее время это возможно лишь если приложения разработаны на одной поддерживающей транзакции платформе (все – на COM+, все – на CORBA или все - на EJB).
Однако, очевидно, невозможно все построить на одной технологии – рынок выдвигает свои законы. Хорошим выходом из этой ситуации могли бы стать веб-сервисы (они не требуют единой платформы для построения приложений, а лишь публикуют интерфейсы, контракты, по которым с ними могут взаимодействовать клиенты), но поддержка транзакций не входит в состав требований к веб-сервису. В SOA-подходе эта проблема зафиксирована (см. статью «SOA: подходы к реализации»), и остается надеяться, что новая технология, которая будет являться реализацией SOA, будет достаточно хорошо распространена и будет удобна для всех разработчиков и поставщиков платформ, будет содержать в себе единую спецификацию поддержки транзакций.
Сейчас же можно лишь посоветовать строить процессы так, чтобы число транзакций, возникающих на стыке бизнес-приложений, было минимально.
Комментарии 0