
Захватывает для заявки заданное количество ресурсов определенного типа (заданных указанным объектом ResourcePool). Объект ResourcePool может быть задан как графически, путем соединения его порта с портом access этого объекта Seize, так и с помощью параметра Объект ResourcePool (в случае одновременого использования обоих способов будут захватываться ресурсы объекта, указанного в параметре).
При захвате ресурса заявка мгновенно покидает этот объект. Освободить ресурс можно с помощью объекта Release. Все захваченные ресурсы должны быть освобождены до того, как заявка будет уничтожена с помощью объекта Sink.
Захваченные ресурсы добавляются в поле заявки LinkedList<ResourceUnit> resourceUnits. Доступ к этому списку открыт, но несмотря на это изменять его содержимое не рекомендуется.
Объект содержит очередь Queue, в которой заявки ожидают, пока запрашиваемые ресурсы не станут доступными. Вначале ресурсы запрашиваются для первой заявки из очереди, и пока эта заявка не захватит ресурсы (или не покинет объект по какой-либо другой причине), ресурсы для последующих заявок не выделяются (даже если они и могли бы быть выделены). Обратите внимание, что если заявкам нужно захватить несколько невзаисмосвязанных ресурсов, то, возможно, лучше использовать несколько объектов Seize.
При необходимости поведение встроенной очереди Queue может быть настроено на Вашу конкретную задачу с помощью таймаутов, вытеснения, приоритетов и т.д.
Если заявка планирует захватить ресурс на какое-то определенное время, а затем освободить его, то попробуйте использовать для этой задачи объект Service, аналогичный последовательности объектов [Seize, Delay, Release].
int size() - возвращает количество заявок, находящихся в данный момент в очереди queue.
T get( int index ) - возвращает заявку, находящуюся в очереди в позиции с номером index (ближайшая к выходу из очереди позиция имеет номер 0).
T remove( T entity ) - извлекает заявку entity из очереди и возвращает ее. Если такой заявки в очереди обнаружено не будет, метод вернет null.