Технология
управления информацией
и организации документооборота

Версия 2.5

Все права на технологию Optimizer ä принадлежат компании Гарант-Парк-Интернет
Торговая марка компании - Metric ä

Москва, 2002


Optimizer поставляется в виде двух основных программных компонент.

q  <prefix>_mso25_se. DLL – клон ядра Optimizer. Поставляется в скомпилированном виде.

q  Gp_<Prefix>_mso25_se. DLL – WebClass-обертка для вызова ядра. Поставляется в исходном виде.

Для расширения возможностей проекта, созданного на базе Optimizer есть два подхода:

q  Создание обработчиков собственных команд.

q  Создание обработчиков специализированных действий.

Для этого разработчик должен обладать следующей квалификацией:

q  Знание Visual Basic 6.0.

q  Владение созданием IIS приложений с помощью технологии WebClasses VB 6.0 (http://msdn. microsoft. com/library/default. asp? url=/library/en-us/vbcon98/html/vbcondevelopingiisapplications. asp)

q  Знание SQL 2000

q  Знание HTML

Обработка собственных команд

WebClass-приложение Optimizer состоит из следующих классов:

q  Admin. dsr – используется для публикатора

q  Config. dsr – используется для конфигуратора

q  Client. dsr – используется для клиентской части

q  Mail. dsr – используется для формирования почтовых шаблонов

В зависимости от того, для какой части системы вносятся изменения, правится соответствующий класс.

Рассмотрим более подробно клиентский класс (Client. dsr). Он состоит из следующих WebItems:

НЕ нашли? Не то? Что вы ищете?

q  Attach – используется для работы с присоединенными документами

q  Service – используется для работы с сервисами (форум, регистрация и т. д.)

q  Default – используется для всех остальных операций

Предположим, что нам необходимо разработать новую команду, которая будет выполнять какие-то операции. Для примера она будет кодировать содержимое.

Для этого необходимо модифицировать функцию ModuleTags (теги обработки модуля).

Обычно код функции выглядит так:

Public Function ModuleTags(ByRef sTagName$, ByRef sTagContents$) As Boolean

If moService Is Nothing Then

ModuleTags = moConfig. ModuleTags(sTagName, sTagContents, mlTagIndex)

Else

ModuleTags = moService. ModuleTags(sTagName, sTagContents, mlTagIndex)

End If

End Function

При этом функция обрабатывает теги вида <gp@имя команды> (общие теги) и теги вида <gp@mso@имя_команды> (теги Optimizer).

Чтобы избежать конфликта имен команд, собственные команды должны иметь собственный префикс. Например, my. Тогда в шаблонах необходимо будет использовать их в виде <gp@my@имя_команды>.

Добавим теперь в функцию ModuleTags обработку команды Encode с префиксом my.

Public Function ModuleTags(ByRef sTagName$, ByRef sTagContents$) As Boolean

If moService Is Nothing Then

ModuleTags = moConfig. ModuleTags(sTagName, sTagContents, mlTagIndex)

Else

ModuleTags = moService. ModuleTags(sTagName, sTagContents, mlTagIndex)

End If

If Not ModuleTags Then

' Теги еще не обработаны, значит, это, возможно, наша команда

' При обработке префикс GP@ был уже вырезан из переменной sTagName

Dim sPrefix$

sPrefix = "MY@"

If Left(sTagName, Len(sPrefix)) = sPrefix Then

' Это команда для нашего модуля

sTagName = Mid(sTagName, Len(sPrefix) + 1)

ModuleTags = True

Select Case sTagName

Case "ENCODE"

sTagContents = MyEncode(sTagContents)

Case Else

sTagContents = ""

End Select

End If

End If

End Function

Этот тег будет обрабатываться во всех шаблонах модуля.

Обработка собственных действий

Для создания обработчика специализированных действий, в рамках нужного WebClass проекта, создаем новый WebItem.

Например, добавляем WebItem Special.

В свойствах необходимо обязательно установить следующие свойства WebItem:

q  ReScanReplacements = True

q  TagPrefix = GP@

Далее создаются обработчики двух событий:

Private Sub Special_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)

If ModuleTags(TagName, TagContents) Then Exit Sub

End Sub

Private Sub Special_Respond()

Dim sTmpl$

' В BeginRequest на проверке авторизации мог произойти

' Redirect и тогда дальше работать не нужно

If mbRedirect Then Exit Sub

' Здесь можно написать свой код.

' Имя шаблона можно получить или через функцию GetTemplate,

' или по своим собственным правилам

sTmpl = moConfig. GetTemplate

If mbDebugTreeCheck Then

Response. Write moUtils. DebugTreeShow(sTmpl, Me, Server, Request)

Else

Special. WriteTemplate sTmpl

End If

End Sub

Функция GetTemplate определяет имя шаблона по следующим правилам:

Берем имя ASP-файла без расширения и возвращаем путь к файлу Application(“TMPL_PATH”)/show/<имя ASP-файла без расширения>.htm