вторник, 14 августа 2007 г.

15. System Classes \ The Global Session Classes

(последнее обновление: 14.08.07)
(основной перевод: 10.08.07-14.08.07)


Класс Application

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

Вот пример использования объекта appl в X++:
appl.setDefaultCompany('DAT');
Метод setDefaultCompany изменяет текущую компанию для сеанса.

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

Класс Info

Класс Info выполняется на уровне клиента. Вам всегда доступен экземпляр этого класса под именем infolog, вы никогда не должны создавать свои собственные экземпляры этого класса.

Методы этого класса вызываются при открытии и закрытии формы, при изменении записи в источнике данных формы, а также при переходе клиента в режим ожидания (idle mode). Класс Info также обеспечивает визуализацию сообщений, посланных в подсистему отладочных сообщений Infolog. Когда возникает исключение или вызываются методы error, warning, info или checkFailed, сообщение помещается в очередь сообщений Infolog. Когда клиент входит в режим ожидания, он обрабатывает все сообщения и выводит их в форме Infolog. В классе Info вы сможете найти такие методы, как copy, cut, clear, add, import и export. Эти методы позволяют изменить очередь перед обработкой. Следующий пример демонстирует очередь:
container data;
print infolog.line(); //Prints 0
info("Post this information message to the Infolog queue");
warning("Post this warning message to the Infolog queue");
error("Post this error message to the Infolog queue");
print infolog.line(); //Prints 3
data = infolog.cut(2, 3); //From = 2, To = 3
print infolog.line(); //Prints 1
...
infolog.view(data);

Класс ClassFactory

Как видно из названия этого класса, ClassFactory - это "завод", "фабрика". Во время выполнения программы существуют два экземпляра этого класса и оба имеют одно и то же название classFactory. Несмотря на кажущуюся путаницу такой реализации, это мощная концепция. При вызове метода объекта classFactory из кода, работающего на клиенте, вызывается объект classFactory на уровне клиента, из кода на сервере - объект classFactory на уровне сервера. Таким образом, при вызове методов объекта classFactory никогда не происходит межуровненвых вызовов, понижающих прозводительность. Если объекты appl и infolog можно представить как "двоюродных братьев", находящихся на двух уровнях, то два объекта classFactory - "двойня".

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

Объекты classFactory вызываются во время выполнения для инициализации (создания экземпляров) форм, отчетов и некоторых системных диалогов, таких как "Поиск меток" (Label editor), "Запрос" (Query form) и "Сообщения компилятора" (Compiler Output form). Если нужно создать новый экземпляр формы или отчета, следует использовать "фабрику". Следующий код показывает, как правильно инициализировать форму:
Args args = new Args(formStr()); FormRun formRun = classFactory.formRunClass(args);
Инициализируя вся формы через одну и ту же "фабрику", можно замещать их и изменять во время выполнения. Это подробно рассматривается в главе 13 "Advanced MorphX Forms".

6 комментариев:

Анонимный комментирует...

Так щас заценим

Анонимный комментирует...

Это интересно. Вы мне не подскажете, где мне узнать больше об этом?
[url=http://mastervoda.ru/]трудовое право курсовая скачать бесплатно[/url]

Анонимный комментирует...

Быстро вы ответили...

Анонимный комментирует...

Эта тема просто бесподобна :) , мне очень нравится )))

Анонимный комментирует...

огромное спасибо что выложили в хорошем качестве.......я т

Анонимный комментирует...

Вот ведь создания какие,