Concepts for configuration management system of custom clients
To understand a successful and secured configuration management system, we need to answer the following questions:
What are configurations?
Scenarios in which configurations are used?
How are configurations changed?
Where are configurations stored?
Who can change configurations?
What is a configuration Agent?
What properties can a configuration agent have?
What are configurations?
Configurations are a set of key value pairs which are required to control certain behavior in a software.
Scenarios in which configurations are used?
Configurations are used in a wide range of scenarios starting from setting a default screen for a specific user, restricting the user by making certain links invisible to him, asking for logs from an application running on a mobile device in the field, changing the server to which the device is syncing etc. Basically to change any value on a device remotely or by user intervention, configurations are required.
How are configurations changed?
Methods of changing configuration can vary from the most simple form of changing the configuration by providing a setting page on the application where the user can set the properties according to his liking to complex cases of sending the configuration from the server to the application so that the behavior of the application can be controlled remotely without even sometimes the knowledge of the end user. NetWeaver Mobile client has the concept of configuration agents which contain a key value pair and once this reaches the client during sync it is processed and the values of configurations are changed accordingly.
Where are configurations stored?
Some configuration can be stored on the file system, the more secured ones will go in to the database, and the configuration management logic on a custom client should be such that a value of a configuration from a file is always over ridden by the value from the database, meaning the client should behave according to the value from the database even if there is a different value for the same configuration property in the configuration file, this will ensure that no unauthorized changes to the behavior of the client can be made by editing the configuration file. The configuration values present in database should be possible to change only from server or if they are not so important then from the settings page of the client.
Who can change configurations?
Some configurations are simple ones and deals with the user settings these can be changed by the user himself. The others might deal with authorization for example the same application has a different page available for the manager while the employee gets a different page, or certain links are visible/invisible for certain users, these types of configurations can be managed only by the administrator via the server.
What is a configuration Agent?
NetWeaver Data Orchestration Engine (DOE) has a special way of sending down configuration keys and their values with some more properties which define the nature of the key and the way it should be processed. So its basically a message containing a configuration key value pair with a few more properties to define the way this configuration property will be handled on client.
What properties can a configuration agent have?
The configuration agent on the NetWeaver Mobile client has properties like process automatically, expiry date, last date, whether it is supposed to set a property or read back some information from the client in which case it is refer to as get property and finally the value. Each of these properties are explained below.
Process automatically: If this is selected then the configuration agent is automatically processed on the device.
Last Date for Process Automatically: Through this a date can be specified, on or after this date the configuration will be automatically processed if the end user has not processed it by then.
Expiry date: If an expiry date is specified then the configuration will be ignored if the end user has not processed it till then.
Set Property: A Configuration agent with set property as true when processed on client will set the value to the database of the client for the specified key.
Get Property: A Configuration agent with get property as true when processed on client will make client read the value of the key specified in the agent from its local database and create a message containing the value to be synced and send to the server. Thus administrator can use this to know about a value of a configuration in a database of a device.
I hope this can help a custom client developer to design his configuration management system, and also provide a few ideas for making it secured and flexible.