Отзовитесь... специалисты по WorkFlow

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Насчет второго вопроса - сам вопрос не понятен.
Первый вопрос - думаю, что это какой-то полутранзакционный механизм. Есть событие - и процесс пошел. И идет до отмены. Конечно, это неверно. Так что у тебя есть повод написать в теххелп.
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Вопрос - как реализовать функцию Дочитать в WorkFlow
проблема в том что в начале работы мне нужно прочитать достаточно большой объем информации в массив
- виды ускорили выборку - но все равно медленно

как реализовать следующую весчь
сначала запросом вывести первые 50 значений в массив, а потом если юзер будет крутить полосу прокрутки - дочитывать инфу в массив, причем дочитывать не всю а еще порцию еще допустим 50 значений???

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

у меня работа 1й раз на клиенте открывается 20 секунд (на 10й раз конечно всего пару секунд) как скрыть это обстоятельство не нервируя юзера как размазать эту задержку - чтобы время пролетело незаметно

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

А напрямую запрос тоже долго выполняется? Может, там сортировка какая-нить в запросе тормозит?
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

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

сортировка наполовину вынесена в сам запрос - половина в WorkFlow

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Я имел в виду - не проверял ли ты на чем именно тормозит: На раскладке в массивы или на выполнении запроса? Если убрать сортировку в запросе будет быстрее?
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Вопрос Как запретить неоднократный запуск работы по одному объекту

Есть объект, Есть Работа, Есть кнопка запускающая работу по объекту
Как сделать так чтобы работа могла быть запущена в одно время только с одного рабочего места?

или более гибко
как сделать так чтобы первый запущенный сеанс был доступен на редактирование а все остальные только на просмотр?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

При старте работы можно установить значение служебного атрибута, при завершении (закрытии окна) удалить его. В действии, запускающем работу установить соответствующие условия отбора для a_Object или же поставить свойства контролов формы в зависимость от наличия значения атрибута.
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

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

- первый стартует и ставит - допустим 10 - работа запущена
- работа сразу переводит атрибут в 11 - работа для всех кроме первого на чтение

пойдет?
или между первым стартом и установкой на чтение - может влезть еще кто-то?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Вот, например:

В шаблоне заводим дополнительный документ-объект. Если он существует, считаем, что режим только для чтения, если нет, то можно редактировать.

В действии по запуску работы:
1. Значение атрибута уже установлено.
Запускаем работу с двумя параметрами (можно продублировать один и тот же объект)
2. Значение атрибута не установлено
Устанавливаем значение атрибута и запускаем работу с одним параметром.

При завершении работы, запущенной с одним параметром, удаляем значение атрибута.

P.S. Документы в шаблоне сортируются по описанию и чтобы достичь однозначности в присвоении значений разным документам работы лучше к описанию добавить порядковый номер.
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

вместо числа буду хранить ID или ФИО юзера первым захватившего работу - остальным буду писать - сори - но работа уже в обработке у такого-то вы можете только посмотреть и выйти :wink:

Спасибо

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

>Disillusioned

слушай я вот тут все сижу и думаю над этим вопросом :wink:
ведь было бы вполне логично в какихто глобальных системных переменных хранить информацию о том кто в настоящее время использует то или иное действие ту или иную работу

мне даже кажется что должна быть какя-то системная таблица типа
id юзера-id работы/действия

ничего не знаешь по этому поводу?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Не приходилось сталкиваться.
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

по поводу системных переменных..
есть возможность увидеть в БД, есть ли какие либо работы (с какими либо признаками) по текущему объекту.
такая информация пригодилась бы при попытке запуска работы?
то есть хранить атрибут даже не надо, можно на лету обращаться в БД и смотреть..
запрос непростой, но работает быстро, так как смотрит на небольшие таблицы. мы это оформили в виде ХП, поэтому вам, Александр, как любителю ХП, должно понравиться ;-)

Код: Выделить всё

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE lsdbo.custom_proc_get_active_maps_desc
@@obj_id numeric
as
select maps.description 
from 
lsdbo.wf_maps_view maps 
where id in 
( 
SELECT DISTINCT lsdbo.wf_mail_v.map_id   
FROM  lsdbo.wf_attachments_view
,lsdbo.wf_mail_docs_v
,lsdbo.wf_mail_v   
WHERE  
lsdbo.wf_attachments_view.id = lsdbo.wf_mail_docs_v.attachment_id 
and   
lsdbo.wf_mail_docs_v.mail_id = lsdbo.wf_mail_v.id  
and 
lsdbo.wf_mail_v.map_id is not NULL  
and   
lsdbo.wf_attachments_view.app_id = 'P'
and   
lsdbo.wf_attachments_view.object_id = 'OBJ'
and 
lsdbo.wf_attachments_view.doc_id = @@obj_id
and 
maps.state = 'B' 
And 
maps.id not in 
(
select pos.map_id from 
lsdbo.wf_map_cur_pos_v pos
,lsdbo.wf_map_nodes_view nodes 
where pos.map_object_id = nodes.map_object_id 
and 
nodes.text = 'Окончание работы'
)
)
order by maps.cd
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
на вход подается ИД объекта, например вот так:

Код: Выделить всё

lsdbo.custom_proc_get_active_maps_desc 100000944800071
причем процедура берет только те карты, которые НЕ завершены, в том числе и те, которые находятся на завершающем этапе, который у нас почти всегда называется "Окончание работы". то есть если даже этот этап еще не выполнен, и карта является НЕ завершенной, то запрос ее не выдает.
может быть, пригодится?..
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

постойте постойте - не вешайте трубку :wink: :wink:
это же именно то что я и хочу :wink:
вот еще-бы вытащить id пользователя запустившего работу - это можно здесь же?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

кстати техподдержка мне тоже выложила запросец на эту тему

Код: Выделить всё

Этот запрос выводит список работ, в которых используется объект с Id = <ID>:
--------
select *
  from lsdbo.wf_Maps
  where id in (select m.map_id
      from lsdbo.wf_Attachments a, lsdbo.wf_Mail_Docs md, lsdbo.wf_Mail m
      where a.doc_id = <ID> and a.object_id = 'OBJ' and
        md.attachment_id = a.id and m.id = md.mail_id)
щас буду разбираться

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить