When a Scene in ARENA is loaded, its current state is fetched from a data store service that tracks the persisted state of the Scene. In this section, we detail some features of this essential ARENA service.
Figure 3. Scene objects are first loaded from a data store service and then updated over PubSub.
persist: true to the top level MQTT message for any
create action and the object will be saved.
A client then can make a HTTP request to the URL the server this service is running on to retrieve a list of
initially loaded objects upon entering any scene.
update message contains an explicit
persist: false, then the
data therein will not be saved in persistence.
ttl (int seconds) to the top level MQTT message for any
create action with
persist:true signals that the object
will be automatically deleted from persistence after set duration, as well as a corresponding
delete action message
sent over pubsub.
Templates are special scenes that can be instantiated in entirety in other scenes.
Templates are crafted in a scene name prefixed with the
@ symbol, e.g.
@myTemplate. The creation process is
exactly the same as any other scene with C(R)UD actions on pubsub, with the exception that
ttl values are not
enforced. That is to say, the objects do not expire inside @template scenes, but rather activated upon instantiation.
When a template is loaded, a parent container is first created in the target scene. This parent container follows the
object ID naming scheme:
Then every object inside the designated @template scene is replicated as descendants of the parent container. In this
way, the parent can be repositioned, rotated, or scaled to adjust the template all at once. The objects within
the template follow the naming scheme
To load an instance of a template, send message to your desired target scene:
data object should also contain
scale directives if intended not to all default
to 0 (or 1 for scale) values. You may also set a
parent to attach the entire parent container to another existing
object in the target scene.
After the template load, all objects behave as typical in any scene.
If a template scene is empty with no objects, or an instance ID already exists within a target scene, the template load will fail silently.
Implementation and Source
The persistence service listens on the pubsub message bus for ARENA objects to save to a mongodb store.
- ARENA-persist repository