Capabilities bundle a set of predicate definitions. Capabilities are also able to bundle special built-ins and various properties. Further capabilities define a product description. The programming interface of capabilities is currently not in the public domain. But capabilities itself might be placed on the market by parties that will have access to this programming interface.
Capabilities that need activation can only be added with a valid activation. Activations can be performed over the internet via the predicate sys_activate_capability/2. If internet access is not available an install ID can be retrieved via sys_calc_install_id/2. This install ID can be sent to the supplier by E-mail, surface mail, phone etc.. who will in turn return a license text. This license text can then be deposited via the predicate sys_reg_license_text/2.
A capability can then be added via the predicate
sys_init_capability/1. Capabilities can also be removed at any
time via the predicate sys_fini_capability/1. It is recommended to
remove unused capabilities, since a capability migh have spawn a
thread which is shutdown by the removal. The currently tracked
capabilities can be retrieved via the predicate
The license for a capability might expire or be tempered with. To
validate it the predicate sys_check_license/1 can be called.
Calling the predicate only makes sense if the application cannot
wait for when the system automatically validates the license. The
predicate sys_check_licenses/0 allows updating the knowledge base
status. The predicate assumes that the licenses of the enlisted
capabilities have already been validated.
The following capability plug-in predicates are provided:
The properties act_status/1,
license_descr/1 and expiration_data/1 are only available when the
capability has been successful enlisted. The expiration_date/1 is
given in milliseconds since January 1, 1970 GMT. An undefined
expiration_date/1 is returned as the value 0.
The following Prolog flags for capability plug-ins are provided: