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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.06.2010, 20:40   #1  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Пакетник в Dax-2009 как 4.0
Доброго времени суток!
Пытаюсь настроить пакетник в 2009 по-старому (с клиентом), стартует, пишет, что выбранный пакет в режиме "ожидание", но реально выбранный класс не отрабатывает. Под пакетник выделена отдельная машина с установленным клиентом. Класс с перекрытым методом runsImpersonated возвращающим false (выполнение на клиенте). Вопрос: кто-нибудь настраивал так пакетник в 2009, и что еще нужно сделать?
Старый 30.06.2010, 10:29   #2  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Может забыли... пакетные группы задания и обработчика заданий одинаковы? В каком состоянии находится признак "Частный"? Может дело в них?
Старый 30.06.2010, 12:30   #3  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Да, группа одна. Галку "частный" и ставил и снимал, ничего не меняется
Старый 30.06.2010, 13:58   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
насколько я помню, там все исходники есть - можно походить дебаггером
Старый 30.06.2010, 18:04   #5  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Поначалу у меня тоже пакетник на клиенте не хотел работать, но именно из-за метода runsImpersonated() в классе. А в остальном после предыдущей версии аксапты класс менять не пришлось.
Ну разве что свойство RunOn у класса выставил в значение "Client". До этого было Called from.
__________________
Дмитрий
Старый 30.06.2010, 18:39   #6  
dyal is offline
dyal
Участник
 
8 / 10 (1) +
Регистрация: 20.03.2008
Помимо метода runImpersonated посмотри ещё в Администрирование\Настройка\Конфигурация сервера выделен ли хотя бы один АОС как пакетный сервер.
Старый 01.07.2010, 13:32   #7  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Цитата:
Сообщение от dyal Посмотреть сообщение
Помимо метода runImpersonated посмотри ещё в Администрирование\Настройка\Конфигурация сервера выделен ли хотя бы один АОС как пакетный сервер.
Добрый день.
По-моему, если нужно запускать обработчик через клиентскую сессию, то вообще никаких AOS выделять для этого не надо (иначе, задания будет обрабатывать соответствующая служба, запущенная на указанном AOS). Или я ошибаюсь?
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491
Старый 01.07.2010, 15:01   #8  
zelibobis is offline
zelibobis
Участник
 
71 / 24 (1) +++
Регистрация: 15.10.2007
Адрес: Kiev
Цитата:
Сообщение от Sergey Petrov Посмотреть сообщение
Добрый день.
По-моему, если нужно запускать обработчик через клиентскую сессию, то вообще никаких AOS выделять для этого не надо (иначе, задания будет обрабатывать соответствующая служба, запущенная на указанном AOS). Или я ошибаюсь?
по-моему тоже
Старый 01.07.2010, 15:50   #9  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от Damn Посмотреть сообщение
Поначалу у меня тоже пакетник на клиенте не хотел работать, но именно из-за метода runsImpersonated() в классе. А в остальном после предыдущей версии аксапты класс менять не пришлось.
Ну разве что свойство RunOn у класса выставил в значение "Client". До этого было Called from.
А что значит "из-за метода runsImpersonated()"? Я его перекрыл, чтобы он возвращал false, иначе задача пакетного задания становится с признаком запуска на сервере. Свойство RunOn у меня тоже раньше было Called From, замена на Client не помогла
Старый 02.07.2010, 12:37   #10  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Sergey Petrov Посмотреть сообщение
Добрый день.
По-моему, если нужно запускать обработчик через клиентскую сессию, то вообще никаких AOS выделять для этого не надо (иначе, задания будет обрабатывать соответствующая служба, запущенная на указанном AOS). Или я ошибаюсь?
Пакетный обработчик при этом хоть и клиентский, но для того чтобы понять какие пакетные задания нужно обрабатывать он лезет в настройки аоса, к которому подключен. AOS должен быть настроен как сервер пакетной обработки и для него должны быть выбраны соответствующие группы пакетной обработки.
__________________
Дмитрий
Старый 02.07.2010, 13:53   #11  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Цитата:
Сообщение от Damn Посмотреть сообщение
Пакетный обработчик при этом хоть и клиентский, но для того чтобы понять какие пакетные задания нужно обрабатывать он лезет в настройки аоса, к которому подключен. AOS должен быть настроен как сервер пакетной обработки и для него должны быть выбраны соответствующие группы пакетной обработки.
Значит, если, к примеру, из двух AOS в кластере на данную пакетную группу настроен только один, то запускать пакетный обработчик нужно только из сессии DAX, которая обслуживается именно тем AOS, на который настроена пакетная группа? Что-то уж больно сложно.
По-моему, если в пакетной группе нет никаких AOS, то все задания, принадлежащие этой группе, должны быть только клиентскими и могут выполняться ТОЛЬКО КЛИЕНТОМ. Если же есть AOS, то задания могут быть как клиентские, так и серверные. Серверные будет обрабатывать AOS в обычном режиме, а клиенсткие будут выполняться исключительно через Основное > Периодические операции > Пакет > Обработка.
Кстати, в электронной документации по DAX написано: "Классы, используемые для пакетных задач, предназначены для работы на клиенте или сервере. Задачи, которые работают на сервере, могут запускаться автоматически как часть пакетных заданий, независимо от того, открыт ли клиент. Однако задачи, которые запускаются на клиенте, должны запускаться вручную с помощью формы Настроить пакетную обработку."
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491
Старый 02.07.2010, 14:31   #12  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Sergey Petrov Посмотреть сообщение
По-моему, если в пакетной группе нет никаких AOS, то все задания, принадлежащие этой группе, должны быть только клиентскими и могут выполняться ТОЛЬКО КЛИЕНТОМ.
Попробуйте создать новую пакетную группу, не присоединяйте её ни к одному аосу и поставьте в очередь какое-нибудь клиентское пакетное задание указав эту новую группу. Запустите "Основное > Периодические операции > Пакет > Обработка" на любом клиенте. У меня, например, при таких настройках пакетное задание остаётся в статусе "Ожидание".
__________________
Дмитрий
Старый 02.07.2010, 15:49   #13  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Цитата:
Сообщение от Damn Посмотреть сообщение
У меня, например, при таких настройках пакетное задание остаётся в статусе "Ожидание".
Посмотрите оригинальный код метода BatchRun.search():
X++:
...
select firstonly pessimisticLock
        RecId, BatchJobId, CreatedBy, ExecutedBy, SessionIdx, SessionLoginDateTime
        , StartDateTime, Status, RunType, GroupId, PrivateTask
        , ClassNumber, Company
        from batch
        where batch.GroupId == groupId
            && batch.Status == BatchStatus::Ready &&
            && batch.RunType == BatchRunType::Client
            && (batch.CreatedBy == userId ||
                (!privateBatch && batch.PrivateTask == privateBatch))
            && ('Admin'== userId || batch.Company == curext());
...
Когда Вы создаёте Ваше пакетное задание, то в batch.Status значение не BatchStatus::Ready, а BatchStatus::Waiting, насколько я понимаю. А потому на запуск никогда ничего не пойдёт, пока соответствующая задача не получит статус "Готово". Если я не прав, поправьте, пожалуйста.
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491
Старый 02.07.2010, 16:01   #14  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Я имел ввиду статус пакетного задания в таблице BatchJob (именно эта таблица называется "Пакетное задание"). Поле Status. Но это не имеет отношения к теме.
Вы создали пример, который я описал ? Клиентский пакетный обработчик схватил ваше задание с новой пакетной группой ?
__________________
Дмитрий
Старый 02.07.2010, 16:30   #15  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Предположительную причину, почему этого не происходит, я уже указал. Мы с этим столкнулись, когда разбирались, почему наши клиентские пакетники как-то криво отрабатывают (нам были нужны отчёты, запускаемые в Excel, а AOS очень криво работает с Excel).
Новых экспериментов не ставил, так как мы уже переписали пакетник под исполнение пакетных заданий в режиме клиента.
Кстати, почему и принял участие в данной ветке - интересно, как нужно ПРАВИЛЬНО настраивать клиентские пакетники, чтобы они работали. Без грубого вмешательства на уровне программного кода.
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491

Последний раз редактировалось Sergey Petrov; 02.07.2010 в 16:34.
Старый 02.07.2010, 16:53   #16  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от Damn Посмотреть сообщение
Попробуйте создать новую пакетную группу, не присоединяйте её ни к одному аосу и поставьте в очередь какое-нибудь клиентское пакетное задание указав эту новую группу. Запустите "Основное > Периодические операции > Пакет > Обработка" на любом клиенте. У меня, например, при таких настройках пакетное задание остаётся в статусе "Ожидание".
Да, у меня то же самое - висит в статусе ожидание
Старый 02.07.2010, 17:05   #17  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Sergey Petrov Посмотреть сообщение
как нужно ПРАВИЛЬНО настраивать клиентские пакетники, чтобы они работали. Без грубого вмешательства на уровне программного кода.

Собственно, правильный способ настройки я выше описал. АОС настраивается как пакетный сервер, соответствующие пакетные группы - настраиваются на него, клиентский пакетный обработчик подключается через этот АОС. Всё просто. И никакого вмешательства в плане программирования.
__________________
Дмитрий
За это сообщение автора поблагодарили: Shirmin Oleg (1), Sergey Petrov (1), d&m (1).
Старый 02.07.2010, 17:55   #18  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Дмитрий, решил проверить Ваш способ. Предварительно на тестовом приложении снёс все наши наработки. Чтобы ничего не мешало.

Что делал:
1. AOS определил как исполнитель пакетных заданий.
2. Создал пакетную группу, к которой подключил AOS.
3. Запустил на выполнение потомок RunBaseBatch с перекрытым методом runsImpersonated().
3.1. В параметрах повторения указал неограниченное время повторения, запуск через каждые 5 минут (это для примера, сам класс отрабатывает за пол-секунды).
3.2. Пакетное задание при этом встало в очередь (статус - "Ожидание" и в задании и в задаче).
4. Запустил пакетную обработку на клиентской сессии.
4.1. Поначалу всё так и оставалось - в статусе "Ожидание". Однако минуты через 2 задание запустилось. Статус задания стал "Выполнение", задачи - "Завершено".
4.2. Через некоторое время и задание и задача перешли в статус "Ожидание". При этом обработка выполнялась независимо от этого по расписанию (каждые 5 минут). То есть, обновление статуса задания и задачи через AOS как-то запаздывает (вместе с помещением записей в Журнал пакетных заданий). Но это не критично.

Вывод: Дмитрий, Вы правы - без программирования, но с натравленными на пакетную группу AOS можно работать. Если используется несколько AOS - на группу надо натравливать все используемые (чтобы не "ловить" сессию, подключённую к нужному AOS).
__________________
MS Dynamics AX 2009

Kernel 5.0.1600.4110
Application 5.0.1500.6491
За это сообщение автора поблагодарили: Poleax (1).
Старый 02.07.2010, 18:32   #19  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от Damn Посмотреть сообщение
АОС настраивается как пакетный сервер, клиентский пакетный обработчик подключается через этот АОС
Елки-палки!!! Я думал, что если обработчик клиентский, то АОС вообще не надо настраивать на группу... Заработало у меня, спасибо огромное!
Теги
ax2009, runsimpersonated, пакетное задание

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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