KAIROS can be customized. It's delivered with more than one thousand objects and these objects can be viewed or updated here:



When "Manage objects" is selected, a window appears like the one after:



An object has mainly an id (an internal identifier in the OrientDB database), a name, a type and a repository origin.


The KAIROS engine knows nothing about Oracle, Postgres, the system under they run, .... All this semantic is included in objects which are customizable.


A user can address a new domain not known by KAIROS by adding new objects. Doing this, he will be able to draw new charts without the need to extend the KAIROS engine.


Some objects like CHARTS or MENUS are very easy to create or update, some of them (ANALYZERS, LIVEOBJECTS) are more complex and can require advanced skills in programming languages.


The list of object types is the following (in the alphabetic order):

  • aggregators
  • analyzers
  • charts
  • choices
  • colors
  • functions
  • gcharts
  • liveobjects
  • menus
  • queries
  • templates
  • wallpapers


An object can be downloaded on the user workstation or conversely uploaded from the user workstation to the KAIROS repository. Most of the time (except for wallpapers), an object can be edited in place, for one of them (gchart) there is a graphical editing function.


To download or edit an object, it must be selected first.


An exemple if I want to edit the "$hour aggregator":



Editing objects


Pushing "Edit object" makes appear the following window:



Editable objects are written in PYTHON syntax.


They have all the same structure with a dictionary object = { ....}. This dictionary looks like a JSON structure describing the object properties.


Sometimes (above is an example), but not always, there are methods  (here we have "fhour" and "__hash__") attached to the object.


The editor is a "VI" editor with most of the capabilities of a standard VI editor.


At the end, when editing is over, the user can press the "Save" button to record updates within KAIROS.


We have then the following within Kairos:


We have edited "$hour" coming from the "kairos_system_system" repository but the update has been stored under "kairos_user_examples".


There are several rules to keep in mind:


a) Objects in system repositories cannot be updated. This is a protection against corruption. If the update is not good, there is a risk to have problems within Kairos. In such a case, you can remove the wrong object and find again the default behaviour.


b) Updated objects are stored in the current repository (here kairos_user_examples). In this example, only user "examples" can benefit of his update. Other users will not be impacted by the update done by "examples" user. To share updates, users must use the role capability of KAIROS in order to share repositories.


c) There is no "Create object" option. To create a new object, a user must choose an object in the list, update its "id" and save the result.


d) Before to get an object in the system repository, KAIROS always search an object with the same name and the type in the user repository. The customized version has priority over the system version.


e) Most of the time customized objects are available immediately excepts menus. For menus, when a menu is customized, it will be available if the window attached to the explorer is closed and then opened (menus are loaded within KAIROS when an explorer is opened)


About graphical editing


Graphical editing is reserved for objects with type "gchart". An exemple:



Pushing "Graphical edit" on this object shoud lead to:




This is an example of a definition of a chart. There are objects with relationships and for each object a set of attributes. 


The KAIROS user can update attributes, add new objects, copy and paste whole structures, ...


All charts within KAIROS should be built with this editor. All charts delivered with the tool (objects in the system repository) have been built with this graphical editor.


At the end of the editing session, the user can "save" the result (a gchart object stored in the repository) and/or "generate" other objects (one chart and several queries). 


More explanations will be given in ad hoc papers.