Выбрать главу

Выполнение Транзакции SAP состоит из двух фаз: фаза он-лайн и фаза внесения обновлений. Транзакция не считается завершенной, пока все логически взаимосвязанные операции не будут успешно выполнены. Кроме того, в случае, если транзакция SAP не будет успешно завершена, все обновления баз данных, внесенные во время выполнения промежуточных шагов, будут отменены.

Логическая Единица Работы в SAP

SAP дает определение Логической Единицы работы (LUW), ориентированной на приложения, в которых может содержаться несколько динамических программ и соответствующих изменений в базах данных. Таким образом, одна LUW в системе SAP может включать в себя несколько LUW на уровне баз данных, но никогда наоборот. LUW на уровне баз данных в SAP ничем не отличаются от принципа работы таких стандартных баз данных, как Oracle, Informix и т. п.

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

Причина, почему необходимо задать общую LUW в системе SAP заключается в том, что различные динамические программы в рамках отдельной транзакции SAP могут управляться различными процессами (см. раздел «Диспетчер и рабочие процессы»), в то время как в системах управления базами данных (DBMS), напротив, логической единицей работы управляет только один процесс. Кроме того, транзакции SAP позволяют осуществлять как синхронное (то есть в режиме реального времени), так и асинхронное внесение данных (которое используется для экономии времени работы с системой), даже с разных компьютеров в рамках одной транзакции SAP.

Диспетчер и рабочие процессы

Исполняющая система R/3 следит за многими функциями — такими, как управление памятью, управление полномочиями и т. д., то есть тем, что обычно осуществляет операционная система. Но система SAP сама осуществляет эти функции, чтобы обеспечить мобильность и контроль над производительностью системы. Исполняющая система R/3 написана на языке C/C++, в то время как SAP 4.0 и более поздние версии модулей приложений SAP были написаны на АВАР или АВАР/4.

Сервер приложений состоит из диспетчера и нескольких рабочих процессов. Исполняющая система R/3 работает как группа сотрудничающих параллельных процессов. Диспетчер — это процесс, который выступает в роли системы мониторинга транзакций; он назначает задачи для других процессов, координирует и контролирует их исполнение. Каждый режим работы в SAP имеет своего диспетчера, который, в свою очередь, может управлять многими рабочими процессами. Диспетчер обеспечивает оптимизацию и сбалансированность нагрузки системы, причем сбалансированность нагрузки поддерживается с помощью обработчика запросов, получающего запрос на доступ от презентационной компоненты. На рис. 7.1 схематически представлены диспетчер и рабочие процессы.

Рис. 7.1. Диспетчер SAP и рабочие процессы.

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

Каждый рабочий процесс состоит из обработчика задач, который по требованию активирует процессор АВАР/4, интерпретатор диалога или интерфейс для баз данных. Он также отвечает за загрузку и очистку информации о пользователе в начале и в конце каждой стадии диалога; это действие называется «развертка» (roll-in) и «свертка» (roll-out) соответственно.

Когда рабочему процессу нужны данные, находящиеся на различных стадиях диалога с пользователем, эти данные сохраняются в кэше (области памяти, доступной для разных программ). В версиях, предшествующих SAP 3.0, где для обращения к памяти рабочего процесса использовался указатель на память вместо копирования памяти, рабочие процессы имели лишь два типа кэша: «область развертки» (roll area) и «страничная область» (paging area). Область развертки сохраняла информацию о пользователе и контролировала такую информацию, как права доступа к данным на всем протяжении диалога с пользователем, в то время как страничная область содержала копии данных, имеющих отношение к приложениям, например, внутренние базы данных.

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

Диалоговый процесс

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

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

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

Пакетный процесс

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

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

Процесс обновления

Транзакция SAP может добавить или изменить данные в базе данных двумя способами:

• Синхронно, то есть напрямую, в режиме реального времени

• Асинхронно, то есть не напрямую.

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

Ради оптимизации ресурсов и эффективности работы системы регистровая запись делится на два компонента, в зависимости от важности вносимых изменений: