Согласование в Lotusnotes 6.0.3

Тема в разделе "Lotus - Программирование", создана пользователем -, 20 мар 2006.

Статус темы:
Закрыта.
  1. Гость

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

    Пример схемы:
    сотрудник->руководитель отдела->руководитель службы т.д.

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

    1. На втором этапе переменная Soglasov принимает одно из трех значений
    2. Иначе в зависимости от этапа и значения Soglasov формируется формула поиска сотрудника
    3. Поиск сотрудников по выбранной форме
    4. Предоставление пользователю выбора из найденных сотрудников
    5. В зависимости от этапа устанавливаются значения ДатыЭтап, ИмениЭтап и НотесИмениЭтап, а также документ переводится в новый статус
    6. Изменяется история документа
    7. Высылается сообщение выбранному сотруднику
    7. Документ сохраняется и закрывается

    При 10 этапах и 3-х ветках согласования на 2 и 5 шаге алгоритма код сильно раздувается.
    Пример 2 шага:
    Код (Text):
        Case "6": Print "6"
    ' Если Soglasov="Не соответствует", то ФЭС
    If doc.Soglasov(0) = "Не соответствует" Then
    formula={Form = "Permission" & Visible!="0" & Rule="Сотрудник ФЭС"}
    End If
    ' Если Soglasov="Руководителю", то Инсп.
    If doc.Soglasov(0) = "Рукводителю" Then
    formula={Form = "Permission" & Visible!="0" & Rule="Инспектор"}    
    End If
    ' Если Soglasov="Сотруднику" , то Инсп.
    If doc.Soglasov(0) = "Сотруднику" Then
    formula={Form = "Permission" & Visible!="0" & Rule="Инспектор"}
    End If
    Пример 5-го шага:
    Код (Text):
     
    Case "6": Print "6"
    doc.B3OKDate = doc.SogDate_Ok
    doc.Boss3Name_Ok = doc.SogName_Ok
    doc.Boss3NameNotes_Ok = doc.SogNotesName_Ok
    If doc.Soglasov(0) = "Не соответствует" Then doc.Status = "4"
    If doc.Soglasov(0) = "Руководителю" Then doc.Status = "8"  
    If doc.Soglasov(0) = "Сотруднику" Then    doc.Status = "8"
    И так по каждому из 10 этапов...
    Вот ищу способы оптимизировать. Может быть, у кого есть предложения.
    Может быть, кто-нибудь делал согласование на Lotus Notes совсем по-другому и мой подход в корне неверный...?
    Была бы признательна за любую интересную идею.
     
  2. Domino6

    Domino6 Гость

    Разбивка действий на отдельный части (документы наборы полей и т.п.)
    Обработка каждой фазы маршрута отдельно.

    Для каждой фазы есть
    Название
    Описание
    Участники
    Тип маршрутизации(паралельно последовательно)
    Действия после (на "Да" на "Нет")
    Срок

    Общий код обработки в документе хранится текущеее и вычисляется следующее действие
     
  3. Гость

    Для: Domino6
    Спасибо.

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

Поделиться этой страницей