RunBase Framework в MS DAX 2012

Платформа RunBase обеспечивает стандартизированный подход к созданию процессов и пакетных заданий в Microsoft Dynamics AX. Фреймворк должен использоваться для каждой функции наподобие задания в приложении.

Описание

Среда RunBase использует инфраструктуру Dialog для запроса ввода данных (параметров) пользователем. Параметры являются переменными-членами класса и добавляются в диалоговое окно. Тип элемента управления, который используется в диалоговом окне, зависит от расширенного типа данных, который используется при добавлении элементов управления в диалоговое окно. Класс также использует платформу SysLastValue для сохранения данных об использовании и платформу Operation Progress для отображения хода выполнения операции.

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

RunBase

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

classDeclaration

Переменные класса добавляются в локальный макрос в виде «списка» переменных, чтобы их значения могли сохраняться средой SysLastValue. Список переменных имеет соответствующий номер версии для отслеживания различных версий списков, которые могут существовать. Номер версии обычно начинается с единицы и увеличивается каждый раз, когда изменяется число переменных в списке. Метод распаковки должен быть соответствующим образом изменен, чтобы обеспечить правильное назначение значений переменным и предотвратить возникновение ошибок трассировки стека, когда размер постоянных переменных не соответствует размеру локального списка макросов.

dialog

Вызывается из метода prompt() и возвращает класс запуска формы dialog, formRun. Элементы управления добавляются в диалоговое окно, а значения элементов управления задаются значениями соответствующих им переменных класса.

getFromDialog

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

initParmDefault

Вызывается, когда метод unPack возвращает false, т.е. данные об использовании не найдены. Переменные класса, которые находятся в списке макросов, должны быть инициализированы в методе initParmDefault.

new

Создает новый экземпляр класса. Вызывается при выполнении в пакете. Всегда вызывайте super() в новом методе. Новый метод не должен быть слишком медленным (он периодически вызывается для административных целей). Поскольку классы, наследуемые от RunBase, могут выполняться в журнале обработки пакетов, новый метод не должен иметь никаких аргументов. Причина этого заключается в том, что типы переменных объекта могут вызывать ошибки трассировки стека, когда система перечисляет все дочерние классы RunBase в процессе настройки пакетных журналов.

pack

Переменные класса сохраняются с помощью локального макроса. Вызывается, когда диалоговое окно закрывается нажатием «ОК».

run

Основной метод класса. Так же вызывается при пакетной обрабоке.

Если задание выполняет операцию, которая занимает значительное время, рекомендуется отобразить диалоговое окно хода выполнения. Платформа RunBase использует платформу Operation Progress для отображения хода выполнения операции. Чтобы отобразить текущий прогресс, необходимо добавить код в метод run() класса.

unpack

Переменные класса в локальном макросе восстанавливаются. Метод распаковки вызывается перед запуском. Так же вызывается при выполнении в пакете.

description

Возвращает описание (базового) класса и будет отображаться как описание в списке пакетов, и определяет заголовок диалогового окна. Метод описания должен иметь свойство RunAs, установленное в Called или эквивалентное поведение. Если класс определен как клиент или сервер, нужно определить метод как клиент-сервер.

construct

main

По умолчанию класс не является «исполняемым», то есть его нельзя открыть из главного меню или из формы с использованием пункта меню. Чтобы сделать класс «исполняемым», он должен иметь статический метод main (точку входа) с одним параметром Args. Когда класс выполняется, ядро вызывает статический метод main класса и передает ему объект Args. Основной метод вызывается интерактивно и не вызывается пакетным сервером. Объект Args содержит свойства, которые могут использоваться классом. С помощью пункта меню доступ к классу (заданию) можно получить из главного меню или из формы. Важно всегда устанавливать ключ безопасности новых пунктов меню.

RunBaseBatch

Класс RunBaseBatch расширяет класс RunBase и позволяет создавать классы (задания), которые могут быть добавлены в очередь пакета. Как только задание будет добавлено в очередь, оно будет выполнено пакетным сервером. Эта концепция известна как пакетная обработка.

Внимание! Чтение и запись файлов обычно происходит на уровне клиента. Поскольку задание выполняется пакетным сервером, используемый путь должен быть доступен для пакетного сервера или AOS в зависимости от того, на каком уровне выполняется задание. Ошибки трассировки стека будут возникать, если используется путь на уровне клиента, поскольку пакетный сервер и AOS не могут получить доступ к файловой системе клиента.

canGoBatch

Возвращает true если возможна пакетная обработка (т.е. можно указать когда запускать обработку и как часто ее запускать в автоматическом режиме). Возвращает false если пакетная обработка не возможна. Указывает, может ли класс выполняться в пакетном режиме. Каркас добавляет вкладку «Пакет» в диалоговое окно, если этот метод возвращает true. По умолчанию возвращает true.

showQueryValues

Класс RunBaseBatch поддерживает использование запроса для выбора базовых данных. Если класс использует запрос, а метод queryRun переопределяется, среда RunBase автоматически отображает диапазоны запросов и их значения в диалоговом окне. Нажав кнопку «Выбрать», пользователь может изменить запрос, установив или удалив значения запроса или добавив новые диапазоны. Можно расширить запрос, добавив отношения (объединения) к связанным таблицам и, наконец, изменив порядок сортировки.

queryRun

Метод возвращает QueryRun.

initQuery

В методе initQuery() происходит инициализация запроса.

initQueryRun

getFromDialog

RunBaseReport

Класс RunBaseReport является частью RunBase Framework. Его основная цель — предоставить пользовательский интерфейс до запуска отчета и упаковать бизнес-логику. Класс RunBaseReport решает проблему отсутствия наследования для отчетов в Dynamics AX. Но Dynamics AX поддерживает наследование для классов.

lastValueElementName

Метод LastValueElementName() возвращает имя отчета, который должен быть запущен. Фреймворк использует запрос из отчета

pack

Переопределение метода pack().

unpack

Переопределение метода unpack().

Перекрытие методов полей диалога

Предположим, что на форму дилога добавили два поля: useFilter(checkBox) и salesIdFilter(string).

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

Внимание! После добавления новых переменных в список #CurrentList необходимо изменить текущую версию.

Далее необходимо добавить поля в диалог.

Чтобы получить введенное пользователем значение, изменим метод getFromDialog()

lookup

Ниже представлен один из вариантов использования перекрытия метода lookup() элемента управления.

modified

Ниже представлен один из вариантов использования перекрытия метода modified() элемента управления.

Примечания

  1. RunBaseBatch
  2. RunBaseReport

См. также

 

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar



X

Ищешь разработчика 1С?
Оставь заявку на консультацию

X

Ищешь разработчика?