Использование базовых свойств архитектуры Exchange в процессах документооборота
Под системами документооборота часто подразумевают совершенно различные приложения - от планирования отпусков до согласования документов и программ контроля качества. К этой категории можно отнести практически любую последовательность действий, в которой используются документы. Отметим, что все приложения автоматизации документооборота имеют общую функцию: когда происходит определенное событие, они проверяют атрибут состояния элемента, после чего в соответствии с заданным алгоритмом выполняется изменение этого состояния. Управление процессом заключается в проверке состояния и изменении состояния. Таким образом, можно сформулировать основные требования к платформе для создания приложений, исполняющих процедуры документооборота.
Идеи, лежащие в основе архитектуры сервера Microsoft Exchange 2000, точно соответствуют требованиям к платформе для поддержки процессов документооборота. Для построения развитой системы документооборота необходимо определить, каким образом ядро (engine) системы документооборота может использовать архитектуру сервера Microsoft Exchange 2000, а также установить взаимодействие с объектами совместной обработки данных (Collaboration Data Objects, CDO) и объектами документооборота (Workflow). Кроме того, требуется освоить Exchange Workflow Designer для разработки схем документооборота в системе хранения данных Web Storage System.
Хранилище данных Web Storage System
Не следует рассматривать Exchange 2000 просто как очередную систему обеспечения передачи сообщений. Специалисты Microsoft объединили в этом продукте средства передачи сообщений, коллективной работы, базу данных и инструменты для работы с Web. Таким образом, сервер Exchange 2000 представляет собой расширяемую программную платформу для разработки приложений, использующих технологии Web. Одним из базовых компонентов Exchange 2000 является хранилище данных Web Storage System, которое обеспечивает хранение всевозможных видов данных и доступ к этим данным с различных клиентских систем по разнообразным протоколам доступа.
Необходимость хранения в Web Storage System разнообразных видов данных требует наличия расширяемого механизма описания и дополнения данных. Если обратиться к традиционной терминологии баз данных, элемент в папке Web Storage System соответствует строке таблицы, свойства элемента - полям (столбцам) таблицы. Особенность Web Storage System заключается в свободе выбора атрибутов элемента, отсутствии ограничения на соответствие заданным наборам полей, как если бы разные строки таблицы имели различные наборы столбцов. Т. е. сервер Exchange позволяет каждому элементу сопоставить произвольное число дополнительных атрибутов. Эти атрибуты могут иметь произвольный формат и применяться для решения различных задач. Для обозначения свойств элемента чаще всего используются термины «метаданные», «атрибуты» и «поля».
Говоря о типах элементов, которые могут храниться в Web Storage System, рядовые пользователи обычно имеют в виду сообщения электронной почты, назначенные встречи, документы. При этом дополнительные данные - автор, дата отправки, получатель, список получателей копий документа, являются для перечисленных элементов свойствами-описателями.
Интересно отметить, что разработчики прикладных программ видят в Web Storage Sys-tem коллекцию разнообразных элементов - «заполнителей», единственным назначением которых является хранение и предоставление информации о приложении, причем эти элементы скрыты от пользователя. Ядро системы документооборота сервера Exchan-ge 2000 для осуществления процессов документооборота использует в основном скрытые элементы. Разработчик приложения может добавить собственные свойства для обеспечения работы своей программы документооборота.
Помимо службы сообщений Event Service сервера Exchange Server 5.5, которая полностью поддерживается в Exchange 2000 для обеспечения обратной совместимости, Web Storage System предлагает собственную архитектуру событий. Эта архитектура поддерживает обработку синхронных, асинхронных и системных событий. События возникают, когда пользователи сохраняют или удаляют элементы в хранилище, а также при наступлении системных событий.
Разработчик может написать собственный программный код, «приемник» (sink) событий, для разработки которого использует Microsoft VBScript, Visual Basic (VB) или C++. Приемник события выполняется при возникновении события в некоторой папке. Процедура сохранения (скажем, store.exe) передает приемнику параметры, что позволяет установить причину события. Синхронно события происходят во время выполнения транзакции, благодаря чему обработчик события имеет возможность прервать операцию до завершения транзакции. Так, приемник события удаления может отменить удаление элемента и оставить его в Web Storage System.
При регистрации приемника в Exchange 2000 указывается, что программный код должен вызываться в рамках папки, дерева папок или же для всего хранилища Web Storage System. Процесс регистрации создает скрытый элемент и сохраняет его в корне папки. Процесс сохранения анализирует свойства события для определения параметров регистрации, включая программный идентификатор приемника, необходимость его вызова для всех вложенных папок и состояние включен/выключен.
Утилита Web System Storage Explorer (wssexplorer.exe), входящая в состав Exchange 2000 SDK, позволяет просматривать регистрационную информацию элементов и их свойства. Для просмотра элемента, изображенного на Экране 1, был использован адрес: http://laptop/public/MEC2000/day 3/eventregistration. Далее были установлены значения свойств http://schemas.microsoft.com/exchange/events/SinkClass, в card.sink и http://schemas.microsoft.com/exchange/events/EventMethod, в OnSyncSave. Теперь, когда пользователь попытается сохранить элемент в папке «Day 3», сервер Exchange 2000, прежде чем завершить транзакцию, будет выполнять процедуру card.sink.
То, что имена свойств содержат префикс «http://», не должно вызывать удивления. Такое соглашение об именовании просто позволяет обеспе-чить уникальность идентификации свойств. Для удобства каждому приложению предоставляется собственное пространство имен, которое применяется при именовании свойств объектов данного приложения. Exchange 2000 использует множество различных пространств имен; более подробную информацию об этом можно найти в Exchange 2000 SDK. Приложение автоматизации документооборота Exchange 2000 использует пространство имен http://schemas.microsoft.com/cdo/workflow. Для простоты изложения далее в этой статье название пространства имен я буду опускать, называя только свойства. При разработке приложения рекомендуется использовать пространство имен, содержащее имя домена, в котором установлен сервер. Это помогает поддерживать уникальность назначаемых свойствам имен.
Подсистема Web Storage System является одним из основополагающих компонентов Exchange 2000. Вместе с другими базовыми компонентами Exchange 2000 они обеспечивают разработчику надежное хранилище данных, позволяющее создавать сложные системы, например приложения управления производственными процессами и документооборотом.
Ядро системы документооборота (Workflow Engine)
Если папка Web Storage System отмечена как используемая системой документооборота (workflow-enabled), сервер Exchange 2000 создает два скрытых системных элемента. Эти элементы, служащие для регистрации событий, имеют свойство SinkClass со значением CdoWfEvt.EventSink, указывающее серверу на программный идентификатор библиотеки Workflow Event Sink (cdowfevt.dll). Exchange 2000 вызывает «приемник», когда пользователь пытается выполнить в папке операцию сохранения либо удаления элемента или же при наступлении запланированного события. «Приемник» передает уведомление о событии ядру системы документооборота (Workflow Engine, cdowf.dll). Exchange 2000 автоматически устанавливает файлы библиотек Workflow Event Sink и Workflow Engine. Хотя «приемник» и ядро документооборота устанавливаются автоматически, они остаются неактивными, пока администратор не выберет для папки атрибут workflow-enable. Как задать этот атрибут, описано в Exchange 2000 SDK.
Ядро документооборота является основой системы управления потоками документов и соответствующими процессами. Попробуем описать, что происходит при обращении к ядру со стороны Exchange 2000. В зависимости от вызвавшей обращение ситуации, состояния элементов и ассоциированных с элементом и ситуацией действий, ядро системы документооборота выполняет те или иные действия. Процесс документооборота определяет бизнес-логику процесса в терминах состояний, условий, действий и переходов (states, conditions, actions, transitions). Процессы документооборота реализованы в Exchange 2000 как скрытые элементы (определения процессов) в хранилище. Это позволяет сопоставлять каждому элементу бизнес-логики богатый набор атрибутов.
Свойство actiontable элемента определения процесса содержит таблицу действий, описанную в формате XML. Этот набор записей включает правила бизнес-логики, определяющие выполнение процессов документооборота, при этом каждая запись содержит 14 полей. Основными полями являются State, NewState, Condition и Action (состояние, новое состояние, условие и действие). Ядро документооборота сопоставляет описатель состояния в таблице действий и состояние элемента, вызвавшего событие. Найдя соответствие, ядро вызывает сценарий VBScript или программу, после чего выполняет «Действие».
Разработчик имеет возможность программировать ядро на выполнение сценария VBScript, а также с помощью объектов CDO Workflow определять детали процесса управления документооборотом. Например, можно создать и поддерживать дополнительные свойства элементов, извлекать информацию о пользователе, чьи действия вызвали то или иное событие, вести журнал аудита. Разработчик может указать сценарий VBScript, выполняемый ядром после выполнения действия Action. Этот сценарий реализует бизнес-логику процесса документооборота, сложность его определяется параметрами принятой модели документооборота. Без этого сценария заданные разработчиком системы документооборота смогут только изменять признак состояния элементов. Схема работы ядра может быть описана таким образом: «Если элемент находится в состоянии State и выполнено условие Condition, выполнить действие Action. Если Action представляет собой действие изменения состояния, изменить состояние State на NewState».
Папки процессов документооборота (Workflow-Enabled Folders)
Обычно папка, предназначенная для построения системы документооборота, содержит три скрытых элемента - два элемента регистрации событий и один элемент определения процессов. Для каждого элемента, создаваемого пользователем в такой папке, приемник события задает свойство определения процесса, содержащее указатель ресурса URL элемента процесса. Ядро системы документооборота Workflow Engine поддерживает специфичные для процесса документооборота свойства, например currentstate (текущее состояние элемента). На Экране 2 изображена папка документооборота при просмотре через Windows Explorer. На Экране 3 представлены свойства папки Incoming Call («поступившие вызовы») при просмотре через интерфейс Web Storage System Explorer.
Экран 2. Содержимое типичной папки, включенной в документооборот. |
Поскольку Exchange 2000 хранит элементы документооборота в папках, а разработчик имеет возможность задать репликацию папок на многие серверы, возникает естественный вопрос: каким образом обеспечивается синхронизация множественных экземпляров элемента документооборота? Ядро системы документооборота обрабатывает только исходные элементы на том сервере, на котором они были изначально созданы. Следует отметить, что в многосерверной конфигурации необходимо включить поддержку документооборота на всех серверах, содержащих реплики папок документооборота.
Экран 3. Свойства нового события в папке. |
Объекты маршрутизации сервера Exchange 5.5
Закономерен вопрос, каким образом объекты маршрутизации сервера Exchange 5.5 вписываются в модель документооборота Exchange 2000? Объекты маршрутизации были разработаны компанией Microsoft для использования службой обработки событий Exchange 5.5. Но эти объекты были ориентированы исключительно на поддержку MAPI-приложений маршрутизации электронной почты, так что объекты маршрутизации не могут задействовать возможности системы Web Storage System. Объекты CDO Workflow в Exchange 2000 не могут использоваться совместно ни с сервером Exchange 5.5, ни с объектами маршрутизации Exchange Server 5.5. Таким образом, совместное использование почтовых ящиков Exchange 5.5 с процессами документооборота Exchange 2000 оказывается невозможным. Поэтому, хотя Exchange 2000 и «понимает» объекты маршрутизации Exchange 5.5, все же целесообразно перейти от используемых в приложениях документооборота объектов на объекты CDO Workflow.
Для использования папки в системе документооборота необходимо создать элемент Web Storage System и указать соответствующие свойства и значения. Некоторые из настроек свойств являются весьма сложными. Что же требуется для создания и сопровождения элементов определения процессов документооборота и определения таблиц действий для этих элементов?
Конечно, к услугам разработчика имеются ADO и WWW Distributed Authoring and Versioning (WebDAV) для самостоятельного создания элементов, определяющих процессы документооборота, но зачем усложнять себе жизнь - Exchange Workflow Designer предоставляет все необходимые средства. Это графическая оболочка, позволяющая управлять регистрацией событий и созданием элементов управления процессами. Инструмент содержится в пакете Microsoft Office 2000 Developer 1.5, выполняется на клиентском компьютере, использует Internet Publishing Provider, входящий в состав Office 2000, и WebDAV для управления хранением элементов.
Экран 4. Exchange Workflow Designer. |
При запуске Exchange Workflow Designer необходимо указать URL папки Web Storage System. Инструмент считывает все имеющиеся элементы определения бизнес-процессов в папке и представляет все в удобном интерфейсе (см. Экран 4). Этот интерфейс позволяет задавать свойства: например, элемент обработки процессов по умолчанию для папки, ограниченный или привилегированный режим выполнения процессов. В ограниченном режиме ядро системы документооборота может обращаться только к элементу, который находится в состоянии перехода. Таким образом, программа не может создать новые экземпляры объекта COM. В привилегированном режиме можно создавать новые экземпляры объектов COM, что обеспечивает системе дополнительную функциональность. Например, можно заставить Exchange 2000 автоматически генерировать новый пользовательский объект в каталоге AD, для этого необходимо создать новые экземпляры объектов CDO или Active Directory Service Interfaces (ADSI).
Для определения собственных процессов документооборота требуется задать возможные состояния объектов и связать с ними действия, выполняемые системой, когда объект пребывает в одном из этих состояний. Разработчик должен задать условия, при наличии которых следует выполнить действия и определить сценарии, которые сервер Exchange будет выполнять. Определяя действие, программист может указать, что оно вызывает переход объекта в новое состояние. Можно оставить объект в прежнем состоянии; такой прием используется при построении схем параллельной маршрутизации.
Например, существует основанная на механизме документооборота система обработки вызовов, в которой пользователь сообщает об ошибке в службу технической поддержки. Введенному пользователем запросу присваивается состояние Call Received («принятый вызов»). Далее объект может перейти в состояние Call Closed или Call Escalated («вызов закрыт» или «вызов принят в обработку»).
В этой конфигурации были созданы два элемента действия, изменяющие состояние. Первое действие проверяет состояние определенного разработчиком свойства urn:linlithgow:com:count: имеет ли оно значение, большее 2. (Приложение обработки поступающих вызовов использует пространство имен urn:linlithgow:com.) При соблюдении этого условия, Exchange 2000 изменяет состояние элемента на Call Escalated. Для вызова следующего действия — изменения поля Flag for escalation — используется сценарий, увеличивающий на 1 значение свойства urn:linlithgow:com:count, без изменения состояния Call Received.
Чтобы лучше понять способ воздействия Exchange Workflow Designer на элементы и свойства, стоит воспользоваться им для построения процесса документооборота, связать созданный процесс с папкой, а затем создать элементы в этой папке. Наблюдать за этими элементами и их свойствами можно с помощью Web Storage System Explorer.
Клиентские приложения
Чтобы использовать систему документооборота на основе Exchange 2000 из клиентского приложения, клиент должен иметь возможность обновлять элементы в папке для инициации работы ядра системы документооборота. Офисные приложения, такие, как Word и Outlook, могут получать прямой доступ к папке. Например, если задан процесс документооборота, передающий документ между членами списка рассылки (DL, distribution list), клиенты могут запустить процесс документооборота, просто сохранив документ в папку, которая находится в области действия документооборота. Одно из преимуществ подхода к обеспечению поддержки документооборота Exchange 2000 заключается в том, что система позволяет разработчику надстраивать необходимые функции документооборота на уже существующих папках, элементах и структурах.
Чтобы наиболее полно использовать преимущества, предоставляемые системой документооборота Exchange 2000, необходимо обеспечить взаимодействие специфичных для бизнеса приложений, создаваемых на основе Web Storage System. С помощью форм Web Storage System можно создавать мощные Web-приложения и хранить их данные и настройки в хранилище Web Storage System. Когда пользователь изменяет значение поля в форме, приложение обновляет пользовательское свойство элемента, инициируя работу ядра документооборота. Далее на сервере может быть выполнен соответствующий сценарий обработки.
Последнее замечание
Архитектура Exchange 2000 позволяет легко реализовывать процессы документооборота и описывать его бизнес-процедуры. Если же планируется разработать нечто более сложное, чем обычное приложение документооборота, то для реализации описаний сложных бизнес-процессов придется вооружиться руководством по программированию на VBScript.
Кевин Лахс - главный консультант в подразделении Applied Microsoft Technologies Group компании Compaq. С ним можно связаться по адресу: kevin.laahs@compaq.com.