Уважаемые разработчики!
Возникла ситуация, подобной той, что описана в комментариях к
объекту SelectInputPriority.
Две очереди (1 и 2) соединяются в одну очередь (3). Одна из них (2) -
приоритетная.
В текущий момент входной порт очереди (3) заблокирован.
Хотелось бы чтобы при разблокировании входного порта очереди (3)
заявки в эту очередь
поступали сначала из очереди (2).
Что я только уже не делал. Различные комбинации элементов
SelectInputPriority, Hold. Динамически
соединял-разъединял порты. Использовал процедуры remove() и send() ...
Безрезультатно.
Как можно решить?
И еще один вопрос.
В руководстве по Enterprise Library указано, что в случае соединения
портов вида М:1 соединенные объекты
опрашиваются в цикле. Какой порядок просмотра объединенных
объектов в этом цикле?
С уважением, Алексей.
Виктор Глейм — 10.12.07
Алексей, проще всего сделать следующее. Поместить перед первой
очередью блок Hold, который бы открывался после того, как все заявки
покинут вторую очередь. Естественно, последняя заявка, прошедшая
через Hold должна вновь блокировать его. Можно сделать иначе,
поставив по блоку Hold перед каждой очередью, но результат,
очевидно, будет тем же.
Порядок опроса объектов не определен, но известно точно - он не
меняется от раза к разу во время исполнения модели.
Алексей — 10.12.07
Спасибо за ответ!
Но ведь если поставить ПЕРЕД первой очередью блок Hold, то перед
этим Hold нужен опять таки
какой-нибудь накопитель заявок (та же очередь)? То же касается
второй очереди.
Я пытался размеситить блоки Hold ПОСЛЕ очередей, но не получилось ...
:(
Конкретнее вот такая ситуация.
Есть очередь (1) и очередь (2). Первая обычная, вторая - приоритетная.
Заявки в каждую из очередей поступают из независимых блоков Source.
Порты output обеих очередей соединены с портом InputPickup блока Pickup.
Блок Pickup, в зависимости от логики модели, каждый раз требует
различное количество заявок в порт InputPickup.
Вот в этой ситуации необходимо, чтобы объект Pickup брал заявки
сначала из приоритетной очереди (2), а затем, если этого количества
недостаточно, брал недостающее количество заявок из очереди (1).
С уважением, Алексей.
Виктор Глейм — 11.12.07
Алексей, в таком случае, действительно, предложенный мной ранее
вариант не подходит.
Можно сделать два блока Pickup: первый будет подсоединен к
приоритетной очереди, а второй - к обычной. Два блока Pickup следует
разделить блоком SelectOutput, в котором будет определяться, нужно ли в
данном случае забирать заявки из обычной очереди или необходимое
количество уже забрано из приоритетной.
Алексей — 11.12.07
Большое спасибо, Виктор!
Все получилось.
С уважением, Алексей.