Форумы Интермех
 ° Начало ° Ответить ° Статистика ° Регистрация ° Поиск ° RSS ° Wiki °

Форумы Интермех / Внедрение систем / Процессы в серч
Автор Сообщение
_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 26 Авг 2008 18:33:28


Написали маршрут, в котором руководитель, начальник отдела и т.д. после подписания в своей должности (используя почту) при нажатии кнопки "отправить дальше" на форме должен выбирать следующего согласующего документ (выбор происходит из списка пользователей). Список в серча таков, что можно ткнуть и мимо (например ниже последнего), либо вобще забыть выбрать сотрудника и тогда документ не отправляется дальше по маршруту, а сваливается обратно разработчику с сообщением о том что не выбран, например начальник отдела. Но разработчик не может его выбрать, т.к. его должен выбрать рук.группы. И если повторно отправить, либо вновь инициировать новый процесс с теми же документами, то процесс либо теряется где-то в серче неизвестно где, либо обратно сваливается с тем же предупреждением, т.к. некоторые подписи уже есть и процесс минует всех тех кто подписал.
Кто подскажет как сделать чтобы в случае, если не выбран следующий исполнитель, выдавалось сообщение об этом и документ оставался тут же в почте для дальнейшей отправки. Уже вставляли в маршрут всякие условия, исхищрялись по-разному, но ничего не помогает. Хотя бы тогда подписи бы слетали чтоли.

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 27 Авг 2008 09:31:52


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

По-моему должно работать…

Xabalov
Участник
ОАО "ЗМЗ" г.Заволжье Нижегородская обл.

Дата: 27 Авг 2008 16:32:02


Хотел бы уточнить. Создать Сценарий и в нем написать программку на языке VBScript. Для этого вам понадобятся описание переменных маршрутизатора и примеры скриптов. Эти 2 док-та написаны Интермехом. Ну и знание самого языка.
С его помощью можно творить чудеса!

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 27 Авг 2008 17:15:47


Переменные созданы, в них сохраняем следующего исполнителя. Но в скрипте эти переменные проверить не волучается, т.к. на них выдаются ошибки. Даже если просто выполнить в маршруте какой-либо скрипт, то он вываливается в почте в ветку "входящие" и его необходимо запустить нажав кнопку "Отправить дальше" (если скрипт выполняется на стороне пользователя). А если на сервере, то документ просто возвращается отправителю в начало маршрута. Пробовали вставлять в маршруте условия, чтобы письмо оставалось во входящих, все равно происходит возврат обратно. Почему изначально, если не указан получатель, документ не остается здесь же во входящих с обычным сообщением об ошибке по msgbox. Может обратиться к разработчикам и они это предусмотрят.

Иринка
Участник
ФГУП ПСЗ Челяб.обл.

Дата: 27 Авг 2008 18:12:58


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

теоретически это все понятно, так и пытались сделать, но когда начинаешь реализовывать, то почему-то ничего не получается, хотя вроде и с VB дружим

Цитата: Xabalov
Для этого вам понадобятся описание переменных маршрутизатора и примеры скриптов. Эти 2 док-та написаны Интермехом.
а где можно взять "эти 2 док-та" или как они хотя бы называются

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 28 Авг 2008 10:01:05


Вот вариант реализации проверки "а не забыл ли или не выбрал ли пустую строку пользователь в списке пользователей":
http://rapidshare.com/files/140706003/Test1.wft.html
Решение не идеальное, но вроде работает.

Описание системных переменных маршрутизатора и примеры сценариев маршрутизатора начиная с Search 9 приведены в Руководстве администратора на стр. 251 и 253 соответственно. Так что если у Вас Search 9 или 10 упомянутые выше "2 документа" Интермеха можно не искать...

Если все же эти "2 документа" нужны, то Вам надо в Интермех обратиться.

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 28 Авг 2008 10:09:12


"Может обратиться к разработчикам и они это предусмотрят"

Присоединяюсь: было бы здорово, если бы Интермех реализовал для всех списков свойство "Обработка", как уже сделано для списка "Выбор Архива", со значениями "Ввести обязательно", "Ввести необязательно". Эта доработка сильно облегчила бы жизнь и избавила бы процессы от лишних этапов.

Олег
Участник
Intermech, Минск

Дата: 28 Авг 2008 10:51:00 ° Поправил: Олег


Специально для этих целей компонент формы "Дерево пользователей" имеет свойство "Обработка". Если его выставить в "Ввести обязательно", то форму не даст закрыть, пока значение не заполнено. Почему не использовать дерево вместо списка пользователей?

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

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 28 Авг 2008 11:09:29


"Почему не использовать дерево вместо списка пользователей?"
Места меньше на форме занимает, пользователям, по моему, проще и привычней: они видят результат выбора (в дереве пользователей выбранный элемент можно полосами прокрутки "прокрутить" за видимые пределы элемента)...

Действительно, только у элемента "Список пользователей" отсутствует свойство "Обработка", у всех остальных элементов формы, связанных со вводом данных, такое свойство есть...

Чем вызвана такая дискриминация элемента "Список пользователей"???

Xabalov
Участник
ОАО "ЗМЗ" г.Заволжье Нижегородская обл.

Дата: 28 Авг 2008 12:36:22


Иринке:
Могу прислать. Куда?

Олег
Участник
Intermech, Минск

Дата: 28 Авг 2008 14:35:31


Цитата: Коновалов Михаил
Чем вызвана такая дискриминация элемента "Список пользователей"???

Почему на УАЗике отсутствуют ремни безопасности? Не предусмотрено заводом-изготовителем...

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 28 Авг 2008 16:25:19


Всем спасибо за помощь. Посмотрели маршрут http://rapidshare.com/files/140706003/Test1.wft.html
Немножко непонятны манипуляции с выходной переменной в скрипте и что это за значение получается в случае если не выбран пользователь, какие-то они в коде странные. Попытались подстроить код для деревьев. Тип выходной переменной уже должен быть не 'текстовым', а 'списком пользователей'.
Дерево формируем не отдельными пользователями, а группой (например "технологи"), это намного лучше при дальнейшем добавлении или удалении в серче сотрудников. Если никто в дереве не выбран, то выдается ошибка, а если выбрана ветка с названием группы "технологи", то рассылается всем с предложением о принятии задачи (не очень то это хорошо). Хотелось бы узнать чему в этом случае равна выходная переменная, чтобы проанализировать в коде скрипта.


И все-таки просим разработчиков в новых версиях серча или сервиспаках добавить свойство "Обработка" в список пользователей.

Иринка
Участник
ФГУП ПСЗ Челяб.обл.

Дата: 28 Авг 2008 16:32:29


Цитата: Xabalov
Иринке:
Могу прислать. Куда?
если можно то, на e-mail smishinka_@mail.ru и заранее спасибо

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 28 Авг 2008 17:33:28


"Хотелось бы узнать чему в этом случае равна выходная переменная, чтобы проанализировать в коде скрипта" так в сценарии пропишите MsgBox Имя_выходной_переменной_дерева и смотрите, что покажет в разных ситуациях.

Именно так я и получил то самое странное значение для списка пользователей, в случае, когда пользователь не выбран.

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 28 Авг 2008 19:15:21


"Именно так я и получил то самое странное значение для списка пользователей, в случае, когда пользователь не выбран."


раньше так и пробовали, но что-то последние разы на MsgBox при выполнении маршрута в почте выдавались ошибки попробуем еще разок.

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 29 Авг 2008 10:47:36


Почти все получилось. Наша родительская ветка "Технологи" в дереве имеет код "245=1". Теперь после проверки выбора данной ветки, действие остается у конструктора, пока он не выберет технолога-контролера. Установили в свойствах сценария выполняться на сервере, т.к. MSGBOX с сообщением об ошибке работает только на стороне клиента, и при этом в почте придеться выполнить сценарий (в котором находится MSGBOX) вручную, нажав кнопку "Отправить дальше". Это не годится, но если сценарий выполняется на сервере, то пользователю будет непонятно почему действие осталось в почте, т.к. никаких MSGBOX'ов об ошибке не выдается. Как изменить название действия текущего процесса, которое находится у пользователя в почте. Попробовали изменить, но получилось каряво, изменилось описание действия, а не само действие, а потом в редакторе маршрутов итого хуже изменилось название самого процесса. Еще пробовали изменить системные переменные таким образом SYS_STEPNAME.asString="Выберите технолога-контролера" и SYS_STEPTEXT.asString="Выберите технолога-контролера" не помогает. Может не правильно пишем?
Или как сделать, чтобы MSGBOX вываливался на экране автоматически на стороне клиента.

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 29 Авг 2008 11:25:47 ° Поправил: Коновалов Михаил


Мы сделали так: сценарий выполняется на сервере и ищет различные мелкие ошибки пользователей (типа забыл выбрать проверяющего), если ошибки найдены, то изменяется название процесса (в нем указываем, что не так в общих чертах), в тексте сообщения указывается развернутое описание ошибки и процесс возвращается пользователю для исправления ошибок.

Когда пользователь исправит все ошибки, процессу возвращается исходное название и он (процесс) идет дальше.

Изменение названия процесса. Сценарий работает только, если выполняется сервером (практически цитата из Руководства администратора):
Set Proc = Activity.Owner
Proc.Name = Новое_название

Текст в закладке "Сообщение" процесса:
Activity.Message.Text = Нужный_текст

Вернуть процесс:
Activity.ExecResult = -1

У Вас какая версия Search?

Иринка
Участник
ФГУП ПСЗ Челяб.обл.

Дата: 1 Сен 2008 17:10:51


Цитата: Коновалов Михаил
У Вас какая версия Search?
у нас Search9 sp4

Xabalov
Участник
ОАО "ЗМЗ" г.Заволжье Нижегородская обл.

Дата: 2 Сен 2008 10:10:10


Скрипт выполняется на сервере.
Все найденные ошибки складываем в переменную и выводим как в msgbox так и в текст сообщения. На память.
if s <> "" then
Activity.Message.Text = s
'Вывод сообщения о неправильных прикреплениях в окно пользователю.
'Работает если в Search.ini в секции Common добавлена строка WFAllowServerScriptUI=1
msgbox(s)
end if

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 2 Сен 2008 16:20:01


Цитата: Xabalov
Скрипт выполняется на сервере.
Все найденные ошибки складываем в переменную и выводим как в msgbox так и в текст сообщения. На память.
if s <> "" then
Activity.Message.Text = s
'Вывод сообщения о неправильных прикреплениях в окно пользователю.
'Работает если в Search.ini в секции Common добавлена строка WFAllowServerScriptUI=1
msgbox(s)
end if

т.е. в данном примере (если установить WFAllowServerScriptUI=1) скрипт выполняется на сервере, а msgbox выдается у пользователя?

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 2 Сен 2008 16:20:55 ° Поправил: _EvgEn_


Цитата: Коновалов Михаил
Мы сделали так: сценарий выполняется на сервере и ищет различные мелкие ошибки пользователей (типа забыл выбрать проверяющего), если ошибки найдены, то изменяется название процесса (в нем указываем, что не так в общих чертах), в тексте сообщения указывается развернутое описание ошибки и процесс возвращается пользователю для исправления ошибок.

Когда пользователь исправит все ошибки, процессу возвращается исходное название и он (процесс) идет дальше.

Изменение названия процесса. Сценарий работает только, если выполняется сервером (практически цитата из Руководства администратора):
Set Proc = Activity.Owner
Proc.Name = Новое_название

Текст в закладке "Сообщение" процесса:
Activity.Message.Text = Нужный_текст

Вернуть процесс:
Activity.ExecResult = -1

а можно изменить название действия куда возвращается процесс, а не название процесса?

Коновалов Михаил
Участник
ОАО РИРВ (СПб)

Дата: 2 Сен 2008 16:39:30


_EvgEn_ Я не знаю...

Из описания следйует, что SYS_STEPNAME отвечает за название действия, а когда и как оно может меняться.... мы не пробовали.

_EvgEn_
Участник
ФГУП ПСЗ, Челябинская область

Дата: 2 Сен 2008 18:27:31


Цитата: Коновалов Михаил
Из описания следйует, что SYS_STEPNAME отвечает за название действия, а когда и как оно может меняться.... мы не пробовали.

аха, описание об этом и говорит, только меняется название процесса. а еще пробовали менять SYS_STEPTEXT, так вообще никакого эффекта Пробовали писать Activity.Name= "...", вот тут то и меняется название действия, только в качестве действия определяется текущий сценарий.

Ну, ладно, в итоге на прошлой неделе сделали маршрут с использованием деревьев с проверкой на выбор группы пользователей и использованием кода возврата отправителю:

Activity.Message.Text = Нужный_текст
Activity.ExecResult = -1

Всем спасибо, попробовали все что предлагали, будем нарабатывать опыт дальше.

Ваш ответ

Bold Style  Italic Style  Underlined Style  Image Link  Insert URL 
...



Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 

На форуме сейчас: гостей - 1
пользователей - 0
Наибольшее количество посетителей: 87 [1 Янв 2017 02:23:26]
гостей - 87 / пользователей - 0


miniВВ © 2001-2021