Регистрация

Кубик Расписание не отрабатывает задржку

Ответы на вопросы по workflow

Модератор: Модераторы форума

Real ГУРУ
Аватара пользователя
Сообщения: 1100
Зарегистрирован: 12 мар 2010, 10:56
Откуда: Москва (Самара)

Кубик Расписание не отрабатывает задржку

Сообщение Сергей Осипов » 05 июн 2012, 17:06

Кубик расписание установлен на однократной срабатывание, по относительному времени на 30мин.
На Расписание процесс приходит с кубика Сценарий а с Расписания обратно на Сценарий.
Циклическое исполнение Сценария с задержкой по сути.

Так кубик Сценарий не выдерживает 30мин а сразу же пропускает процесс далее, тратя лишь доли секунды на свою обработку.

Задействовал throw new KeepActiveException(DateTime.Now.AddMinutes(1));
через эксепшн отрабатывает задержка корректно но через кубик часто сбоит, уходя в непрерывный цикл.
Что то на уровне подсистемы WF сбоит видимо...

Было у кого? Решали как-то?
ОАО АК "АЛРОСА" (2011-2012гг: ЗАО "Вебзавод"; 2008-2010гг: ООО "Программные технологии")

Гуру
Аватара пользователя
Сообщения: 559
Зарегистрирован: 16 сен 2009, 17:17
Откуда: И всё-таки она порвалась

Re: Кубик Расписание не отрабатывает задржку

Сообщение nubobap » 05 июн 2012, 17:34

Сергей Осипов писал(а):Кубик расписание установлен на однократной срабатывание, по относительному времени на 30мин.
На Расписание процесс приходит с кубика Сценарий а с Расписания обратно на Сценарий.
Циклическое исполнение Сценария с задержкой по сути.

Так кубик Сценарий не выдерживает 30мин а сразу же пропускает процесс далее, тратя лишь доли секунды на свою обработку.

Задействовал throw new KeepActiveException(DateTime.Now.AddMinutes(1));
через эксепшн отрабатывает задержка корректно но через кубик часто сбоит, уходя в непрерывный цикл.
Что то на уровне подсистемы WF сбоит видимо...

Было у кого? Решали как-то?


Может, я ошибаюсь,(что врядли :) ) но если стоит однокраный режим, то и работать он будет один раз и в следующий раз при активации кубика ждать ничего не будет- сразу проскочит.
Если кубик "Расписание" активируется несколько раз и каждый раз нужна задержка, то нужно выставлять переодическое срабатывание.
Запомните, наша цель - Человек!
Целься....
ПЛИ!

Real ГУРУ
Аватара пользователя
Сообщения: 1100
Зарегистрирован: 12 мар 2010, 10:56
Откуда: Москва (Самара)

Сообщение Сергей Осипов » 05 июн 2012, 19:33

Да нет - при каждом заходе он будет выдерживать паузу.
Всегда его так использовал.
ОАО АК "АЛРОСА" (2011-2012гг: ЗАО "Вебзавод"; 2008-2010гг: ООО "Программные технологии")

Гуру
Аватара пользователя
Сообщения: 559
Зарегистрирован: 16 сен 2009, 17:17
Откуда: И всё-таки она порвалась

Сообщение nubobap » 06 июн 2012, 01:02

Сергей Осипов писал(а):Да нет - при каждом заходе он будет выдерживать паузу.
Всегда его так использовал.


Сто болтов, на курсах 2 года назад это(что нужно переодическое) говорили... 8)
У себя в БП я так делаю все работает - попробуйте может поможет...
Последний раз редактировалось nubobap 06 июн 2012, 10:55, всего редактировалось 1 раз.
Запомните, наша цель - Человек!
Целься....
ПЛИ!

Эксперт
Сообщения: 206
Зарегистрирован: 23 окт 2010, 14:25

Сообщение iromaten » 06 июн 2012, 08:33

Сергей Осипов писал(а):Да нет - при каждом заходе он будет выдерживать паузу.
Всегда его так использовал.


Это вообще очень странно. По всей видимости, не только у меня сегодня необычный день. =)
Проверьте пожалуйста как работает то, что вы всегда делали? Может работает так же без ожидания? А может у Вас вообще раньше через кубик "сигнал" проходил всего раз за бизнес-процесс, поэтому Вас устраивало %)
А вообще, по логике, "Однократное" срабатывание, наверное, по одной очень удивительной причине называется однократным, как Вам кажется?

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

Real ГУРУ
Аватара пользователя
Сообщения: 1100
Зарегистрирован: 12 мар 2010, 10:56
Откуда: Москва (Самара)

Сообщение Сергей Осипов » 06 июн 2012, 10:22

Ну сегодня посмотрю на домашнем ДВ - в его стабильной работе я по крайней мере уверен :)
Может действительно туплю :?
ОАО АК "АЛРОСА" (2011-2012гг: ЗАО "Вебзавод"; 2008-2010гг: ООО "Программные технологии")

Гуру
Сообщения: 334
Зарегистрирован: 18 авг 2010, 00:27

Сообщение revolver » 06 июн 2012, 15:08

не понял что может не работать в кубике? если нужно возвращаться в кубик и делать задержку то однократное срабатывание ставить не нужно.
со сценарием вообще все хорошо
throw new KeepActiveException(DateTime.Now.AddMinutes(delay));
работает четко

Гуру
Сообщения: 334
Зарегистрирован: 18 авг 2010, 00:27

Re:

Сообщение revolver » 16 ноя 2017, 18:18

revolver писал(а):не понял что может не работать в кубике? если нужно возвращаться в кубик и делать задержку то однократное срабатывание ставить не нужно.
со сценарием вообще все хорошо
throw new KeepActiveException(DateTime.Now.AddMinutes(delay));
работает четко

кстати, вдруг кому пригодится

скрипт для кубика, если надо сделать задержку. расписание к сожалению как функция полный булшит.
Код: Выделить всё
using System;
using System.Xml;
using DocsVision.Workflow.Objects;
using DocsVision.Workflow.Runtime;
using DocsVision.Workflow.Gates;
using DocsVision.Platform.HelperAPI;
namespace DVScriptHost
{
   class DVScript
   {
       public void Execute (ProcessInfo process, PassState passInfo)
       {
         //переменная для д.в.
         string varname = "start_dt";
         //задержка
         int delay  =2;     
         ProcessVariable vr =  process.GetVariableByName(varname) as ProcessVariable;
         if (vr!=null)   
         {           
            if (vr.IsNull==true)
            {
               vr.Value = DateTime.Now.AddMinutes(delay);
               process.LogMessage("повторная задержка с "+DateTime.Now.ToString());
               throw new KeepActiveException(DateTime.Now.AddMinutes(delay));
               return;
            } else
            {               
               DateTime dt = (DateTime)vr.Value;
               if (dt<DateTime.Now )
               {
                  process.LogMessage("время достигнуто"+ dt.ToString());
                  vr.Value = null;
                  return;
               }
            }
           
         } else
         {           
            process.LogMessage("задержка с "+DateTime.Now.ToString()+" до "+DateTime.Now.AddMinutes(delay).ToString());
            process.Variables.CreateVariable(varname,VarTypeEnum.DateTime,new Guid("00000000-0000-0000-0000-000000000000"),5,DateTime.Now.AddMinutes(delay));
            throw new KeepActiveException(DateTime.Now.AddMinutes(delay));
            return;
         }
         return;         
        }
    }
}   

Вернуться в Бизнес-процессы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3