Resources are usually stored in resource storage blocks, such as Resource Pool blocks. Resources need to be located, requested, and allocated to serve other entities. Locating resources is also essential for other resource operations, including scheduling, statistics collection, and preemption. For example, the resources of interest need to be identified so their statistics can be collected during simulation.
Simulation Studio primarily uses attribute-based rules to locate resource entities. An attribute rule is a Boolean expression that the attributes of the targeted resource entities must satisfy. Run-time resource information, such as resource state and seize/unseize status, is also used to locate and identify resource entities.
The resource needs or constraints of an entity that enters a Seize block (referred to as a controlling entity) can be specified as attribute rules in the Seize block. A Seize block provides an input resource entity port for each resource need or constraint. The input resource ports of a Seize block can be connected with resource storage blocks, such as a Resource Pool block. During a simulation run, the Seize block uses the links to its input resource ports to locate and request resource entities from resource storage blocks to satisfy the resource needs that are associated with its input resource ports.
It is also possible to locate resource entities by their object references. Resource entities can flow through an Entity Group Holder to form a resource entity group, which holds a group of references to these resource entities. The entity group and its subgroups can be queried later for locating and requesting the corresponding resource entity objects.
In some situations, it is also feasible to use multiple dedicated resource storage blocks for resources with specific characteristics. The resources are routed to the appropriate storage blocks by routing blocks, such as the Entity Filter and Switch blocks.