The ACM (Application Context Management) is about controlling how UBIK® satellites see data provided by the UBIK® environment via web service (or the web client).
This page describes how the ACM works and how to actually configure it using UBIK® Studio or UBIK® SmartStudio, including creating Application and Context, Scopes, View and View Items and publishing the Meta Definitions.
How the ACM works
Technically, the ACM can be explained separating the following topics:
- Application and Context
- Scopes
- View and View Items
- Meta Definitions
Application and Context
An Application is used to identify Contexts. A Context is used to identify a View and all relevant Scopes. UBIK® satellites use these two in order to identify the View that provides data for them, as well as the Scopes that decide what the data looks like. The Application's and Context's names have to be configured in the client's settings. One could say the Context is the central object in every ACM configuration, connecting all the details.
Scopes
Scopes define what a UBIK® object and its properties look like to a UBIK® satellite. Let's say we have a pump with a lot of properties (that can be used for automatic data processing), but these properties aren't of much use to a human user. In this case, if I publish such pump objects to the user's mobile client (aka. UBIK® satellite) via ACM, I probably want to give the user a more convenient, specialized version of these objects, containing only useful properties. With Scopes, one can define what an abstract content object should look like. One could say, they are post-processing filters for Meta Classes. Specifically, you can define which properties are visible, decide which classifications are published and configure rights (e.g. for writing a property value or creating instance objects for the Scope).
View and View Items
The View defines the hierarchical representation of all objects that should be available. The object's look & feel is described by Scopes, but the connection between those objects is described by the View. For example, if I have a root object Station A and as its child, I have an object Unit A.1, then the View describes that Unit A.1 is a child of Station A. Technically, the view uses View Items in order to describe the connection of objects. View Items are defined for a Meta Class, e.g. for the Meta Class Station, and can provide the children for specific instances of such a Meta Class. In our example, if we have a View Item responsible for getting the Unit-children of a Station, for Station A (which is an instance of the scope Station) it would retrieve Unit A.1. There are different types of View Items, depending on how the children should be resolved technically. The following types exist:
- Reference View Item (only 1 : N relations)
- Relation View Item (N : M relations possible)
- Query View Item (complex, custom child evaluation possible)
Reference View Items use a reference from each child to the parent in order to evaluate the children in a backward manner. Relation View Items use relations from parents to children, where each parent can have multiple children and vice-versa, every child can have multiple parents. Query View Items use a query to evaluate the children, but the parent object has to be the respective query object. A View can have multiple view items for the same Meta Class (target type) in order to make a complex structure possible.
Meta Definitions
Last but not least, the UBIK® satellites need to get Meta Definitions in order to interpret and use the content correctly. Meta Definitions describe (abstract) Meta Classes, Selective Lists, Units and rights as well as some information about the view structure, e.g. possible children of an element (in case the user wants to create a new object, like a picture for example). The Meta Definitions are a result of the Scopes and the View for a specific Context. The customizer (you) has to publish these Meta Definitions actively though, using the ACM Manager.
How to actually configure the ACM
There are two programs you can use to configure the ACM: UBIK® Studio and UBIK® SmartStudio.
UBIK® SmartStudio
With UBIK® SmartStudio, you can assemble the whole ACM graphically; the technical details are edited automatically by UBIK® SmartStudio, so it is significantly less work (you don't have to care about View Items at all, you just create Scopes and connect them, using drag & drop). On the other hand, only 1 : N connections can be created using UBIK® SmartStudio (at least for the alpha version at the time this article was created!). UBIK® SmartStudio tries to satisfy all common, major use cases in a comfortable manner, at the cost of detail functionality. The set of relevant features will be maintained in future versions.
- Open UBIK® SmartStudio.
- Create a new project or open an existing one.
- If necessary, design new Meta Classes (for objects to provide to the client) using the Inheritance Graph or connect to a UBIK® environment (database) and use the Meta Classes defined there.
- Open a new Application Graph worksheet.
- Create Application and Context objects and connect them.
- Use drag & drop to define Scopes for previously created Meta Classes (available in pickers on the left side).
- Connect the Scopes in order to define the hierarchy. Also connect at least one Scope to the Context as a child.
- If necessary, define queries for the root and infrastructure objects and connect them to the Context as input elements.
- Make sure the target UBIK® environment is connected.
- Perform the staging process for saving the new Application Graph to the UBIK® environment (database).
- Open the UBIK® environment page and select the ACM management sub-section.
- Publish the Meta Definitions.
- Restart the UBIK® web services.
- Test the results using any UBIK® satellite.
UBIK® Studio
UBIK® Studio provides a higher grade of technical detail and more possibilities. If you cannot satisfy your demands using UBIK® SmartStudio, e.g. if you need to create N : M connections, you can use UBIK® Studio.
- Start UBIK® Studio and connect to a database.
- If necessary, create new Meta Classes for objects to provide to the client.
- Create Application, Context and View instances using the bulk editor for the respective MetaClasses (Application, Context, View).
- Find out which different connections your ACM hierarchy should provide; more specifically, which parent meta classes should lead to which child meta classes, and what kind of View Items you need for that (depending on how the children should be evaluated technically).
- If necessary, modify the Meta Classes so they can describe their parents or children. The way to do this depends on the type of View Item you're going to use, e.g. for a Reference View Item, you'll have to create a Reference and add a respective Reference Meta Property to the Meta Class that describes the children, in order for the child instances to refer to their parents using this Reference. Make sure the target type is set correctly.
- Create and configure View Item instances (of the System Meta Class REFERENCEVIEWITEM, RELATIONVIEWITEM or QUERYVIEWITEM) for each level of the hierarchy and every parent & child type (Meta Class) using the bulk editor.
- Connect the View Items to the View (see Create a new View)
- Create Scopes as instances of the METACLASSSCOPE System Meta Class (or QUERYSCOPE for queries).
- Use the Relation editor to define MetaProperties for your Scopes. Using the Relation Data inspector, you can edit rights for each property.
- Connect the Context to the Application and add all necessary Scopes to the Context using relations (see Create a new MetaClassScope, point 6).
- Connect the root and infrastructure objects and/or queries to the Context.
- If necessary, manage the content objects to be delivered by the ACM (e.g., create or import the data and fill in reference property values).
- Open the ACM Manager and publish the Context's Meta Definitions.
- Restart the UBIK® web services.
- Test the results using any UBIK® satellite.