Pages: 1
Как запомнить в партии заявок ее размер (batchQ AnyLodic 5)?
Подскажите, как лучше записать в параметр сообщения размер сформированной партии заявок на выходе блока batchQ библиотеки Enterprise Library в AnyLogic 5.4.1.

Проблема в следующем:

Формирую на выходе batchQ партии заявок (класс сообщения BatchD). Число составляющих партию заявок меняю по ходу эксперимента кодом посредством управления параметром batchQ.size. Мне надо записать это число в параметр (назвал его quantity) сформированной партии (сообщения BatchD), чтобы далее обрабатывать ее с учетом этого «размера». Думается, ситуация достаточно типичная.

Если включаю код
((BatchD)entity).quantity=size;
в параметр onExit блока batchQ, то в процессе эксперимента (компиляция завершается успешно) возникает исключение: «Exception during step: java.lang.ClassException».

Получается, что на событие onExit в batchQ экземпляр выходного сообщения еще не сформирован. Странно.

Мне приходится по onExit в batchQ запоминать batchQ.size в переменной

currentSize = size,

а потом на событие onEnter в добавляемой за batchQ очереди формировать quantity пришедшей заявки:

((BatchD)entity).quantity = currentSize.

Это работает, но … полного удовлетворения нет. Дополнительная переменная, очередь (если следующий блок не имеет onEnter) .

Обойтись без переменной и использовать на onEnter очереди batchQ.size - нельзя, т.к. size может измениться за те несколько шагов, что имеют место между onExit batchQ и onEnter очереди.

Как-то лучше можно сделать?
В поле "onExit" объекта "Batch" экземпляр выходного сообщения доступен через локальную переменную batch (в этот момент сообщения, формирующие партию уже не доступны через локальную переменную entity). Поэтому код, который сохраняет значение текущего размера партии должен быть следующим:

batch.quantity = self.batchSize

В вашем случае код заработает, если партия являются объектом класса "BatchD", который имеет поле "quantity".

К сожалению, в настоящее время поддержка AnyLogic 5 больше не осуществляется. Ответ на ваш вопрос был составлен в соответствии с возможностями и особенностями объекта "Batch" в AnyLogic 6. Надеюсь, эта информация поможет решить вашу проблему.
Edited: Tatiana Gomzina - 05.05.2013 12:57:52
Спсаибо. Попробовал. В AnyLogic 5 у меня это не получилось - не проходит компиляция.
Pages: 1
Users browsing this topic (2 guests, 0 registered, 0 hidden)