• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

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

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

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

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

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

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

При 10 этапах и 3-х ветках согласования на 2 и 5 шаге алгоритма код сильно раздувается.
Пример 2 шага:
Код:
	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-го шага:
Код:
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 совсем по-другому и мой подход в корне неверный...?
Была бы признательна за любую интересную идею.
 
D

Domino6

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

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

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

Guest

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

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