BlockSkill Editor/en
Define resource requirements for the edited block here. These are described by listing the required skills that a resource must have, in order to be useful for the block. The actual resource choice, allocation, reservation and freeing is done at execution time, by the built-in resource manager. The resource manager will fetch an appropriate resource-element from the inventory as present at execution time, reserve it, and allocate for use in the block for the time of the block's execution. Other blocks which ask for a similar skill will either get another resource (if available), or have to wait until that resource is released.
Of course, direct resource allocation by name or id is a subset of the above general mechanism: simply define a numeric or symbolic ID-skill (such as deviceName or deviceID), and specify the skill-requirement to be "deviceName equal someConstant" or "deviceID equal someConstant".
Also, virtual resources (such as database locks or other synchronization means) can be defined in such a way.
The following picture shows a block, which requires a device capable of measuring voltage in the range -100V .. + 100V with an error of not more than 5%.
when executed, the built-in resource manager will allocate such a device from the inventory or wait until one becomes available. An error is reported if no such resources exists at all (i.e. if the resource manager would wait "forever").
The set of required resources which the action requires for its operation is defined in this editor. This set is not described by an explicit list of required resources, but instead by a list of skills which the allocated resource(s) must have. This gives expecco the flexibility to dynamically choose among a set of available resources, and decide at execution time, which device or operator is chosen.