• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Guest

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

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

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

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

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

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

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

Guest

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!