The core system features include a server for running the services on, mechanisms for adding the services to the server, mechanisms for linking services with each other, and mechanisms for allowing the services to communicate with each other. It is even possible to wrap legacy code and invoke it through Reflection. The AI packages then provide some additional algorithms, functions and base services, with the configurable framework and control loops already implemented. The idea is again a plug-in process, of adding a new algorithm or class, to run it in the framework that already exists. You would typically use the algorithms to cluster or associate services and the base packages provide some well-known algorithms, text-based in particular.
To write a new module, extend the base classes, so as to keep the framework features and allow the new functionality to be used. The modules page provides some external modules that you can add to your system. Examples of the API code is also provided. There are quite a lot of methods to implement if you want to extend everything, but if not relevant to your module, they can take default values and the example code shows this. So it would be a matter of adding a module and then testing it through the GUI interface, to make sure that your own classes have been read properly. Advise would be available if there are any problems.
The following image is a view of a network organising some services, using the default permanent and dynamic linking mechanisms. A Behaviour Mediator service has also been loaded and the mediator GUI can be used to show alternative views of the data. Still a work in progress, but configurable and able to display useful output.
The system also provides an implementation of the standard autonomous framework, including a MAPE control loop, policy scripts and a BPEL-style execution engine. The execution engine can execute a script as is, but you would be expected to write actual implementations of the MAPE components yourself. At the moment, a limited amount of monitoring is provided however, which can be accessed through the GUI.
A BPEL-style execution script can be used to control a process that can be changed by changing to a different script. It is like an external programming language that you can use to dynamically change how the program works, as an administrator of the service. The default framework ignores this however and passes through the rest of the system without calling anything. Structures are also in place for adding password security to messages, service-level agreements and contracts, and some form of conversations or behaviours, similar to what agent-based systems might do. The other AI or problem-solving features are now also quite advanced. The sourceforge page gives more details on the scientific features.