AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.12.2012, 12:44   #1  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Задвоение экземпляров Workflow
Столкнулся со странной ситуацией, при запуске утверждения, например закупки, происходит создание 2-х (3-х, 4-х) абсолютно одинаковых экземпляров Workflow.
Кто нибудь сталкивался с подобным? Это можно как то победить?
Старый 04.12.2012, 12:47   #2  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А у вас корректно сделана проверка на возможность запуска Workflow по документу? Может, просто пользователь несколько раз нажимает на отправку?
__________________
Ivanhoe as is..
Старый 04.12.2012, 12:52   #3  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Исключено....после нажатия на кнопку, пользователю выдается еще одна форма, где он должен добавить комментарий, и нажать на еще одну кнопку. Более того, я на момент нажатия вешал перебор 100000 записей LedgerTrans. чтобы имитировать "тормоза системы" и в момент этого несколько раз нажимал на кнопку. Запустился только один экземпляр.
Старый 04.12.2012, 13:14   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А параллельно разные люди не могли запустить несколько раз? Если запись не перечитывается в классе создания экземпляра Workflow, то проверка на статус может все равно не отработать.
__________________
Ivanhoe as is..
Старый 04.12.2012, 13:27   #5  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
возможно....сейчас попробую с имитировать...
Старый 04.12.2012, 13:57   #6  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Сейчас посмотрел, но не запуск из под разных пользователей, а нашел пример, где по одной закупке запустилось 4 экземпляра Workflow, из под одного пользователя, с интервалом в 4-5 секунд
Старый 05.12.2012, 09:39   #7  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Оказалось, что разные пользователи могут параллельно запустить несколько экземпляров, но эта проблема решаемая, а вот что делать с несколькими экземплярами из под одного пользователя....?
Старый 05.12.2012, 10:21   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Sergo4 Посмотреть сообщение
Оказалось, что разные пользователи могут параллельно запустить несколько экземпляров, но эта проблема решаемая, а вот что делать с несколькими экземплярами из под одного пользователя....?
Было починено в SP1 RU7 (речь ведь о AX 2009, насколько я понимаю ?)
__________________
-ТСЯ или -ТЬСЯ ?
Старый 05.12.2012, 11:32   #9  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Цитата:
Сообщение от Vadik Посмотреть сообщение
Было починено в SP1 RU7 (речь ведь о AX 2009, насколько я понимаю ?)
Да, о AX 2009, спасибо за информацию.
А запуск нескольких экземпляров из под одного пользователя не починили в каком нибудь сервис паке?
Старый 05.12.2012, 12:03   #10  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Sergo4 Посмотреть сообщение
Да, о AX 2009, спасибо за информацию.
А запуск нескольких экземпляров из под одного пользователя не починили в каком нибудь сервис паке?
У нас такого не возникало. Возможно, починили
__________________
-ТСЯ или -ТЬСЯ ?
Старый 05.12.2012, 13:52   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Vadik Посмотреть сообщение
Было починено в SP1 RU7 (речь ведь о AX 2009, насколько я понимаю ?)
Можно ссылку? Я видел выход нескольких HF для конкретных стандартных документов. Так они сводились к buffer.reread() перед вызовом .canSubmit().
__________________
Ivanhoe as is..
Старый 05.12.2012, 14:54   #12  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Можно ссылку?
Оно ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 05.12.2012, 15:03   #13  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Именно! Это касается конкретно одного документа - Заявки на покупку и решено именно reread() перед непосредственно отправкой. Т.е. даже если в интерфейсе кнопочка у пользователя доступна, то отругается на попытке заново запустить WF (по статусу).
__________________
Ivanhoe as is..
Старый 05.12.2012, 17:26   #14  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Именно! Это касается конкретно одного документа - Заявки на покупку и решено именно reread() перед непосредственно отправкой. Т.е. даже если в интерфейсе кнопочка у пользователя доступна, то отругается на попытке заново запустить WF (по статусу).
А вы не могли бы указать в каком классе должно вызываться reread()? У меня просто нет доступа на прочтение указанной ссылки...
Старый 06.12.2012, 15:24   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Говорим про заявки на покупку - так?
Класс PurchReqWorkflow.

Метод 1:
X++:
void submit()
{
    Object                      purchReqTable_ds;
    NoYes                       activatingFromWeb;
    boolean                     canSubmit;
    ;

    canSubmit = PurchReqWorkflow::canSubmit(purchReqTable);

    if(canSubmit)
    {...
И собственно сама проверка на возможность запуска:
X++:
public static boolean canSubmit(PurchReqTable purchReqTable)
{
    PurchReqLine        purchReqLine;
    boolean             canSubmit           = true;
    PurchReqParameters  purchReqParameters  = PurchReqParameters::find();
    VendTable           vendtable;
    ;

    purchReqTable.reread();

    if (purchReqParameters.HeaderBusinessJustification)
    {
        if (PurchReqBusJustification::find(purchReqTable.TableId, purchReqTable.RecId).BusinessJustification == '')
        {
            canSubmit = checkFailed("@SYS110605");
        }
    }

    if(!(purchReqTable.State == PurchReqWorkflowState::NotSubmitted ||
            purchReqTable.State == PurchReqWorkflowState::Returned ||
            purchReqTable.State == PurchReqWorkflowState::ChangeRequest))
    {
        throw error("@SYP4572");
    }
...
__________________
Ivanhoe as is..
Старый 06.12.2012, 17:27   #16  
Sergo4 is offline
Sergo4
Участник
 
49 / 15 (1) ++
Регистрация: 01.02.2011
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Говорим про заявки на покупку - так?
Класс PurchReqWorkflow.

Метод 1:
X++:
void submit()
{
    Object                      purchReqTable_ds;
    NoYes                       activatingFromWeb;
    boolean                     canSubmit;
    ;

    canSubmit = PurchReqWorkflow::canSubmit(purchReqTable);

    if(canSubmit)
    {...
И собственно сама проверка на возможность запуска:
X++:
public static boolean canSubmit(PurchReqTable purchReqTable)
{
    PurchReqLine        purchReqLine;
    boolean             canSubmit           = true;
    PurchReqParameters  purchReqParameters  = PurchReqParameters::find();
    VendTable           vendtable;
    ;

    purchReqTable.reread();

    if (purchReqParameters.HeaderBusinessJustification)
    {
        if (PurchReqBusJustification::find(purchReqTable.TableId, purchReqTable.RecId).BusinessJustification == '')
        {
            canSubmit = checkFailed("@SYS110605");
        }
    }

    if(!(purchReqTable.State == PurchReqWorkflowState::NotSubmitted ||
            purchReqTable.State == PurchReqWorkflowState::Returned ||
            purchReqTable.State == PurchReqWorkflowState::ChangeRequest))
    {
        throw error("@SYP4572");
    }
...
Да, огромное спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Microsoft Dynamics AX 2012: Workflow Basic Settings Form Has Missing Text Boxes Blog bot DAX Blogs 0 24.05.2012 01:13
workflowax: What is a workflow owner used for? Blog bot DAX Blogs 0 01.06.2010 15:05
axaptapedia: Workflow Blog bot DAX Blogs 0 28.06.2009 03:06
Solutions Monkey: Using Microsoft Dynamics Ax 2009 Workflow controls in EP Blog bot DAX Blogs 0 30.07.2008 10:05
Arijit Basu: AX 2009 Workflows: A Quick overview Blog bot DAX Blogs 0 19.06.2008 02:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:02.