Проблеммы:
1. Создал свой активный объект в котором есть два порта (входной,
выходной) и стейтчарт. Входной порт имеет очередь.
Соеденил входной порт с Source, но сообщения в него не попадают, а
остаются в очереди выходного порта Source.
Входной порт - это Port без доп. кода.
2. Вторая проблемма связана со стейтчартом.
Он работает аналогично примеру(собственно хотелось
воспроизвести хотя бы его) из usermanual55 пункт 7.1.7.3.
Но при том, что существует 1-я проблемма, в начальный момент
времени, каким-то образом, срабатывает переход input.size() > 0.
Если же попробовать переслать, то что вызвало срабатывание
этого перехода,например в Sink, то получим сообщение "/ zero".
Виктор Глейм — 18.03.08
1. Обычные порты нельзя соединять с блоками Enterprise Library, потому как
в библиотеки порты обмениваются сообщениями несколько более
сложным способом, чем в общем случае. Для стыковки блоков,
созданных пользователем, и блоков библиотеки нужно использовать
Enter и Exit.
2. При запуске модели все блоки Enterprise Library обмениваются
служебными сообщениями для "наладки связи", поэтому этот
переход и срабатывает, когда в порт поступает служебное
сообщение от Source.
Александр — 18.03.08
Спасибо за ответы!
1. Но странно, что об этом нигде не написано. Я потратил 2 дня,
чтобы проверить различные варианты работы порта.
Сбивает с толку то, что порт нормально работает, если его
соединить с каким-либо компонентом из библиотеки внутри
активного объекта.
Виктор Глейм — 19.03.08
Александр, если в вашей модели используется только блок Source, то
его можно смело заменить на таймер, генерирующий сообщения.
Александр — 20.03.08
Для моей задачи таймер должен срабатывать через 0 единиц времени,
и нужно будет дублировать функциональность Source'а для ограничения
количества сообщений, которое может меняться, плюс нужно
задавать свойства сущности. Поэтому, мне проще оставить Source.
Если конкретней, в начальный момент времени создается список
задач, для этого я в Source проставляю время между заявками равное 0,
и изменяю макс. количество заявок, а в обработчик событий "на
новую сущность" добавил процедуру записи свойств, ну и
выходной порт имеет очередь.
Виктор Глейм — 21.03.08
Если заявки создаются только в нулевой момент, тогда вам тем
более следует использовать таймер. Во всяком случае, это избавит
от необходимости искать обходные пути, пытаясь соединить блок
Enterprise Library с вашими блоками.