01.05.2009, 21:05 | #1 |
Участник
|
aEremenko: Пакетная обработка в AX 2009
Источник: http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx
============== В отличие от предыдущих версий, пакетная обработка в AX 2009 базируется на сервере, и не требует запуска клиентского приложения AX. Между тем, для обратной совместимости оставлена возможность использовать клиентские пакетные обработчики, основанные на тех же принципах, что и в версиях 3.0 и 4.0. Из-за этого возникает путаница. Для того, чтобы настроить серверный пакетный обработчик, необходимо создать пакетную группу, и задать ее для запуска на сервере. Для самого сервера приложений опция ‘Сервер обработки пакетных заданий’ должна быть включена. Выбор серверного или клиентского метода запуска регулируется свойством ‘RunOn’ для класса, базирующегося на RunBaseBatch. Если свойство установлено в ‘Server’, используется серверный пакетный обработчик, автоматически запускающий задание для выбранной группы. Рекомендуется использовать этот путь. Если значение ‘RunOn’ установлено в ‘Client’, то для выполнения пакета необходимо запустить клиента AX и периодическую процедуру обработки, как и в предыдущих версиях. Самое интересное начинается при ‘RunOn’, установленном в ‘CalledFrom’. Задание ставится в очередь на обработку в любом случае: при выбранной опции ‘Пакетная обработка’ – как клиентское, в обратном случае – как серверное. В общем, оставлять для такого класса значение ‘CalledFrom’, - значит с большой вероятностью иметь проблемы в будущем. Данная статья подготовлена с помощью Windows Live Writer. Источник: http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
13.04.2010, 16:56 | #2 |
Участник
|
Всем привет! Есть проблема, может кто сталкивался или что подскажет. Суть в следующем.
Настраиваем пакетную обработку на сервере в AX 2009. Руководствуемся сведениями, взятыми с http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx (Пакетная обработка в AX 2009) В отличие от предыдущих версий, пакетная обработка в AX 2009 базируется на сервере, и не требует запуска клиентского приложения AX. Между тем, для обратной совместимости оставлена возможность использовать клиентские пакетные обработчики, основанные на тех же принципах, что и в версиях 3.0 и 4.0. Настраиваем серверный пакетный обработчик, создаем пакетную группу, и задаем ее для запуска на сервере. Для самого сервера приложений включаем опцию ‘Сервер обработки пакетных заданий’. Запускаем разноску журнала типа Проводка из Управление запасами -> Журналы -> Проводки по номенклатуре. В свойствах запускаемого класса InventJournalPost установлено свойство RunOn в CalledFrom. На пункте меню, запускающем этот класс также свойство RunOn установлено в CalledFrom. В параметрах в диалоге разноски журнала на вкладке ‘Пакет’ ставим галочку 'Пакетная обработка', выбираем группу пакетов, которую мы создали ранее для запуска на сервере, указываем время запуска задания в форме, вызываемой на кнопке “Повторение”. Задание отправляется в очередь журнала пакетной обработки, когда наступает время запуска задание начинает обрабатываться, затем обработка прекращается и появляется сообщение об ошибке: Код: Олицетворенный на сервере (RunAs) сеанс попытался вызвать метод, который доступен только на клиенте. (S)\Data Dictionary\Tables\SysDataBaseLog\Methods\createIdent - line 8 (S)\Data Dictionary\Tables\SysDataBaseLog\Methods\insert - line 22 (S)\Classes\Application\logUpdate - line 29 (S)\Classes\xRecord\update (S)\Classes\JournalCheckPost\updateJournalTablePosted - line 7 (S)\Classes\JournalCheckPost\runPostEnd - line 6 (S)\Classes\JournalCheckPostLedger\runPostEnd - line 7 (S)\Classes\JournalCheckPost\run - line 29 (S)\Classes\InventJournalCheckPost_Movement\run - line 9 (S)\Classes\BatchRun\runJobStatic - line 62 i = winAPI::getTickCount(); В описании метода getTickCount находим что этот метод клиентский: X++: client static int getTickCount() { int ticks; ; ticks = System.Environment::get_TickCount(); return ticks; } на которых настроено ведение журнала базы данных. Может есть какие-то мысли как решить эту проблему? Microsoft Dinamix AX 2009 SP1. Kernel version 5.0.1000.52. Последний раз редактировалось Mikky; 13.04.2010 в 17:01. |
|
13.04.2010, 17:20 | #3 |
Участник
|
Аксапта некастомизированная? Не могу найти вызов \Data Dictionary\Tables\SysDataBaseLog\Methods\createIdent
Вообще, есть \Classes\WinAPIServer\getTickCount |
|
13.04.2010, 17:51 | #4 |
Участник
|
Сенькс, проблема решена.
Код действительно был самописный. Думал штатный, упустил это. Поправил. Завтра попробую оттестить пакетчик. |
|
28.09.2010, 15:36 | #5 |
Участник
|
Цитата:
Пробуй с выключенным маркером - не выполняется. Из своих наблюдений: Только при включенном параметре "Сервер обработки пакетных заданий" у задания поменяется статус с "ожидания" на выполнение, обработав такое задание, периодическая процедура обработки "проставит" в поле "прогресс" значение 100 и дальше пакетный сервер поменяет статус задание на "выполнено". Последний раз редактировалось propeller; 28.09.2010 в 17:21. |
|
Теги |
ax2009, runbase, runbasebatch, пакетная обработка |
|
|