|  12.06.2006, 13:40 | #41 | 
| Участник | Цитата: 
		
			Сообщение от EVGL
			
			 С помощью класса ClassFactory. Пример: InventDimGlobal, SysGlobalCache. Так в двухуровневой среде будет только экземляров, сколько двухуровневых клиентов. А в трехкровневой будет столько экземпляров, сколько AOT'ов в кластере. Или я чего-то не понимаю? | 
|  | 
|  12.06.2006, 13:44 | #42 | 
| Banned | 
			
			Верно. Но с точки зрения прикладного программирования это несущественно.
		 | 
|  | 
|  12.06.2006, 13:53 | #43 | 
| Участник | 
			
			боюсь, что для целей тестирования существенно. batiskaf_new, разберитесь как стандартный функционал тестирования производительности управляет и контролирует клиентские сессии, как он раздает задания. Скорее всего, вам нужно будет повторить его поведение, если у вас нет возможности подождать 4ку. Разберитесь как объекты в Аксапте запоминают свое состояние между сессиями (методика работы с LastValue и методы pack/unpack) | 
|  | 
|  12.06.2006, 14:22 | #44 | 
| Участник | 
			
			Давайте разбираться вместе. Мне нужно на front-end клиенте запустить инстанс своего класса, ссылку на который я получу из своего процесса через бизнес коннектор. Через эту дверку я буду говорить с аксаптой, узнавать подробности о том или инном объекте. Объект этот должен быть синглотонм, чтобы работать с одним и тем же инстансом объекта как через бизнесс коннектор, так и внутри Ахапта кода. То есть тестирование предполагается напротив одного конечного клиента, это не Load Testing. Сохранять что то в Аксапте мне кажется не нужно, мой процесс будет опрашивать разные объекты и все что нужно будет сохранять у себя. | 
|  | 
|  12.06.2006, 17:21 | #45 | 
| Участник | |
|  | |
| За это сообщение автора поблагодарили: batiskaf_new (1). | |
|  12.06.2006, 17:29 | #46 | 
| Участник | 
			
			Мерси за синглтон. А еще если просветите на предмет objectOnServer. Если мой класс будет заниматься объектами GUI то это значит что он только клиентский, и тогда в коде можно будети использовать только один кеш (infolog.globalCache()) ? Стоп! Ничего не понятно с сессиями. Я сделал синглтон, в Аксапте написал диалог, который сохраняет значение поля класса, и через бизнесс коннектор сделал тоже самое, экземпляры оказались разные... Код через коннектор: Цитата: 
		
			Dim app As Axapta2 Dim obj1 As AxaptaCOMConnector.IAxaptaObject Set app = CreateObject("AxaptaCOMConnector.Axapta2") app.Logon configuration:="C:\Program Files\Microsoft Business Solutions\Axapta 3.0 SP3 Demo\Axapta Client\Bin\axconfig.axc" Set obj1 = app.CallStaticClassMethod("Class1", "instance") obj1.Call "f1", "VB" Цитата: 
		
			void clicked() { Class1 obj1 = Class1::instance(); obj1.f1("fuck"); super(); } Цитата: 
		
			public void f1(str name) { _name = name; } Последний раз редактировалось batiskaf_new; 12.06.2006 в 17:59. | 
|  | 
|  12.06.2006, 18:43 | #47 | 
| Banned | 
			
			А это уже то, о чем mazzy говорил: SysGlobalCache привязан к сессии, а AxaptaCOMConnector открывает новую сессию. Это обсуждение начинает утомлять. Если вы твердо решили изобретать велосипед, то сделать можно так: сохраняйте все события в памяти, в время от времени сбрасывайте на диск или в таблицу, как это делает Code Profiler в Аксапта. А потом анализируйте результат извне или опять в Аксапте. Хотя извне на кнопки программно нажимать - занятие, заранее обреченное на неудачу. COMConnector не для этого создан. | 
|  | |
| За это сообщение автора поблагодарили: batiskaf_new (1). | |
|  12.06.2006, 19:07 | #48 | 
| Участник | 
			
			Я догадываюсь что Logon открывает новую сессию. Проблема в том, что об этом в документации ничего не написано! Собственно я сейчас проверяю методом тыка все варианты взаимодействия с Аксаптой из моего процесса, и с какими ограничениями я могу столкнуться, варианты исследования GUI объектов из моего процесса. Все это позже скажется на способе интеграции. Конечно было бы проще заказать у кого то готовый модуль с требуемым сервисом, но судя по всему таким извратом мало кто хочет заниматься, так что прийдется самому. | 
|  | 
|  12.06.2006, 19:11 | #49 | 
| Участник | Цитата: 
		
			Сообщение от batiskaf_new
			
			 Конечно было бы проще заказать у кого то готовый модуль с требуемым сервисом, но судя по всему таким извратом мало кто хочет заниматься | 
|  | |
| За это сообщение автора поблагодарили: batiskaf_new (1). | |
|  13.06.2006, 09:58 | #50 | 
| Участник | 
			
			************ отредактировано модератором: коммерческие предложения и реклама только в разделе рынок ************* И еще технический вопрос, можно ли получить из любого объекта Аксапты некий хеш, по которому позже можно восстановить сам объект, типа как это делалось в Java? | 
|  | 
|  13.06.2006, 10:03 | #51 | 
| Участник | 
			
			если имеете ввиду серилизацию, то вместо нее - паковка (интерфейс SysSavable, методы pack, unpack статический метод create кое-где есть но кое-где и нет)
		 | 
|  | 
|  13.06.2006, 10:31 | #52 | 
| Участник | Цитата: 
		
			Сообщение от belugin
			
			 если имеете ввиду серилизацию, то вместо нее - паковка (интерфейс SysSavable, методы pack, unpack статический метод create кое-где есть но кое-где и нет) | 
|  | 
|  13.06.2006, 10:35 | #53 | 
| Участник | 
			
			неа. причем это не хэш (хэш может быть неуникальный) и в жабе вроде такого нет. Создавайте свой Map идентификатор -> объект
		 | 
|  | |
| За это сообщение автора поблагодарили: batiskaf_new (1). | |
|  13.06.2006, 11:38 | #54 | 
| Banned | Цитата: 
		
			Сообщение от batiskaf_new
			
			 Да не совсем сериализация. Мне нужен дескриптор объекта, по которому можно быстро получить сам объект. То есть объект продолжает жить, я же получаю число, из которого позже я смогу найти тот же самый экземпляр. Операция эта может быть не гарантированной, то есть если экземпляр почил к тому времени - значит так тому и быть.   Используйте системный класс ObjectIdent. Пример работы с ним можно найти в \Classes\Info. | 
|  | 
|  13.06.2006, 11:41 | #55 | 
| Участник | 
			
			ObjectIdent - это слабая ссылка что ли?
		 | 
|  | 
|  13.06.2006, 11:50 | #56 | 
| Banned | Цитата: 
		
			Сообщение от belugin
			
			 ObjectIdent - это слабая ссылка что ли? | 
|  | 
|  18.06.2006, 14:53 | #57 | 
| Участник | 
			
			Всем привет, давно не виделись. Как в Аксапте на Х++ можно запустить некий автоматический код, в неявном виде. Для наглядности, к примеру в С++ это делалось следующим образом: static struct _SomeRegistration { _SomeRegistration() { RegisterAgent(); } ~_SomeRegistration() { UnregisterAgent(); } } _registrator; В итоге, запускается некий код инициализаций, все эти подготовки не нужно запускать из main или какого то централизованного места. Как с этим обстоят дела в аксапте? | 
|  | 
|  19.06.2006, 09:40 | #58 | 
| Участник | 
			
			я думаю, никак. а зачем?  тут как в жабе - можно просто в конструктор класса прописать код инициализации. | 
|  | 
|  19.06.2006, 10:11 | #59 | 
| Участник | Цитата: 
		
			Сообщение от belugin
			
			 я думаю, никак. а зачем?  Цитата: 
		
			Сообщение от belugin
			
			 тут как в жабе - можно просто в конструктор класса прописать код инициализации. static struct _SomeRegistration { //Constructor of _SomeRegistration structure _SomeRegistration() { RegisterAgent(); } //Desctructor of _SomeRegistration structure ~_SomeRegistration() { UnregisterAgent(); } } _registrator; // При создании автоматического объекта _registrator вызывается его конструктор Вызов дуструктора мне не нужен, это для симметричности написано, мне главное конструктор. Если в Х++ таких средств нет, то возможно нечто подобное получится сделать другими средствами, например вставить какой то MenuItem оброботчиком которого будет мой класс, экземпляр которого создаст система во время старта Аксапты, и в конструкторе экземпляра я проделаю все что нужно? Что нибудь такое нужно. | 
|  | 
|  19.06.2006, 10:17 | #60 | 
| Участник | 
			
			*вы не сможете создать объект без запуска конструктора *посмотрите на erpkb "запуск и остановка". | 
|  | 
| Теги | 
| crm2011 | 
|  | 
| 
 |