Страница 1 из 2

Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 09:07
gali
Не хочется изобретать велосипед. Возможно кто-то уже решал похожие задачи.

Суть: Работает шаблон служебных записок, который позволяет порождать их, направлять адресату (адресатам) и отслеживать получение ответа.
Весьма примитивный шаблон без наворотов: начало - переход на скрытую задачу (вынужденный этап для серверных действий) - переход на разветвитель по адресатам (здесь еще переход на ветку для иерархического типа служебных, но это атавизм, мы его сейчас игнорируем) - переход на задачу адресата - на объединитель - конец. С задачи адресата есть еще ветка получения визы, но она тоже сейчас не интересна.
Повторюсь: шаблон работает и до сих пор удовлетворял.
Однако, нет предела человеческим желаниям. Родилось (не буду показывать пальцем, у кого) желание следующее. Если документ адресован начальнику подразделения, получить его автоматически должен и его зам. Кто первый выполнит, того и тапки, т.е. второму выполнять уже не надо, но видеть задачу он должен. Задача осложняется тем фактом, что документ может быть направлен нескольким адресатам, как абсолютно независимый, собственно, поэтому используется разветвитель.
Вариант перехода к заму по истечении какого-то времени, или назначение замещения здесь не интересен.

Пожалуйста, поделитесь опытом или мыслями.

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 11:42
Disillusioned
Желание самое что ни на есть правильное. Особенно для пользователей, которые по долгу службы часто отсутствуют на рабочем месте.
Для моделирования данных о том кто-кого замещает нужна будет соответствующая объектная модель, где как минимум будут указаны коды пользователей основного и замещающего исполнителя. В шаблоне на задачу в качестве исполнителей вешаем две переменные типа "Пользователь" (можно как одиночные, так и массивы), одну для основного исполнителя(ей), другую для заместителя(ей). После того как выбрали основного исполнителя(ей) находим соответствующего заместителя(ей). Если никаких заместителей нет, то в переменную заместителя(ей) записываем значение переменной основного исполнителя(ей), благо что одно и то же сообщение пользователю дважды не приходит.

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 11:48
Старик Крупский
Можно попытаться сделать через повторы ветки, только мне кажется, что это тупиковый вариант. Проще, наверное, вот как. Есть, например, массив их трех колонок:
ИД начальника|ИД заместителя|Признак приема в работу

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

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 11:54
Старик Крупский
To Disillusioned:

Здесь используется разветвитель и все получат задачу равноправно. Объектная модель может (и должна) использоваться как способ хранения информации о том, кто начальник, а кто заместитель. А вот "кто первый - того и тапки" - вот где собака порылась!

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:05
Disillusioned
Не понял в чем проблема с "тапками". В Workflow вроде для того и есть возможность принимать задачу в работу... Видишь, что "Принять" недоступна, значит ты был не первый...

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:26
gali
Давайте, немного разжуем.
Как я для себя поняла: на первой задаче отобрали получателей - массив "Адресаты". Каким-то образом (пока неважно, каким), анализируя "Адресаты", получаем массив "Замы". Причем, зависимость такая: адресаты[1]->замы[1]. При этом допустимо наличие адресата в массиве замов (сам себе зам).
Делаем разветвление по исполнителям.
На задаче после разветвителя в качестве исполнителей прописываем "Адресаты" с приоритетом 0 и "Замы" с приоритетом 1.
Я правильно поняла?
И Вы утверждаете, что 1) задание прийдет одновременно всем из обоих массивов, 2) результат от выполнения зачтется от одного из пары адресат-зам?

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:29
gali
поправка по 1) не всем из обоих массивов, а всем, за исключением одинаковых, т.е. если я сам себе зам, то получу 1 задание, а не 2.
Так?

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:34
Disillusioned
Замов определяем во время разветвления.
Для основного исполнителя и его заместителя - одна и та же задача (исполнители - две переменные, которые в случае отсутствия замов будут иметь одинаковое значение).

В остальном, все верно...

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:46
gali
Disillusioned писал(а):Замов определяем во время разветвления.
не поняла этого уточнения. Я до сих пор в механизм разветвления не встревала. Для меня это как черный ящик: подсовываю массив исполнителей, а как там что, не знаю. Вы как предлагаете?
Если я подготовлю, например, на своей скрытой задаче два моих массива, это будет неправильно? в смысле, не сработает?

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 12:59
Disillusioned
"Разветвлять по исполнителям" здесь само собой не прокатит, так как в этом случае одна задача - один исполнитель...
Используем вариант "Повторять ветку..". Указываем число повторений равное числу пользователей в массиве. В действиях над переменными на переходе после разветвителя присваиваем локальным переменным user1 и user2 значения (user1 будет очередным значением из массива исполнителей, user2 определяем через SQL).

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 25 ноя 2008, 13:02
gali
ясно. спасибо. пробую

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 26 ноя 2008, 09:46
gali
еще раз огромное спасибо. работает. сейчас еще все нюансы проверю, но первое впечатление - то, что требовалось

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 27 ноя 2008, 18:22
gali
первое впечатление оказалось обманчивым. Собственно, задача была ПОЧТИ решена. Оставался пустяк (не скажу, сущий). У меня на ветке работает действие, которое создает новый объект с параметрами основного исполнителя. Если бы я не уперлась, а вынесла это действие на задачу раньше, то была бы счастлива. А так я получала объекты с нулевыми параметрами. До зарезу захотела узнать, в чем собака порылась. То, что я узнала ввергло меня в кому...

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 28 ноя 2008, 07:16
Anderyt
ну дак и что в итоге?? не работает? или уже вышла из комы? ;-)

Re: Как удовлетворить шефа (изыски в шаблонах workflow)

Добавлено: 28 ноя 2008, 08:48
gali
да... как сказать
очень не хочется употреблять обидные слова, ребята (это я про Лоцию), в принципе, хорошие, терпеливые...
в общем, как я поняла, настроить можно, слегка извернувшись, но работать это будет не долго.
Сейчас готовится обновление, в котором переделаны многие вещи. Я попыталась настроить в нем этот механизм. Чтобы он заработал, мне посоветовали такую трехэтажную структуру нагородить, что я только сейчас выкорабкиваюсь из комы