DETAILS: ADOxxWEB API
This building block enables web-based interaction with your ADOxx implementation. The implementation of this building block is done in Java and web-technologies. It allows you to execute AdoScript commands through the ADOxx WebService and create a custom web-application using this interface. The communication protocol is either SOAP or ReST.
HOW DOES IT WORK
The idea of implementing this building block is to communicate with the ADOxx tool through web-based APIs. This interaction can be performed using SOAP and RESTful services. The implementation of these services trigger AdoScript commands and retrieve information back from the ADOxx tool.
FEATURES AND FUNCTIONALITY
Characteristics of the ADOxxWEB API building block:
- The ADOxxWEB API is meta-model independent. I.e. one can add this building block to any application library. Further configuration and meta-model dependent functionality can be added by the developer.
- The interaction with the web service is done with SOAP and REST protocols.
The architecture below shows you the components of the ADOxxWEB API and their relations.
The components of the architecture are described briefly below from the bottom-up:
This represents the database (DB) that is used by the client. It is the same DB that the rich-client also connects to, running on a Microsoft SQL Database Runtime Engine.
A basic web-service is made available by the platform that is capable to execute AdoScript code remotely. Using this interface, you can execute commands, update models, retrieve model content, graphics, etc., through AdoScript commands. The interface can be enabled in an interactive mode (within the Modelling tool) or without a user interface.
Load Balancing and Restart Web Service (LBRSWS) & Remote Activity Monitoring (RAM):
These 2 components are part of the server environment of ADOxx. The LBRSWS and RAM in combination are an aplication that enables load-balancing and restart capabilties, including threading issues and caching. Its functionality is to give these ADOWS instances more stability. This is achieved through watcher functionality that monitors all aspects of the operations of the ADOWS, restarting when necessary any stalled or non-functioning ADOWS instances:
- Check of ADOWS instances: The periodicity of these checks are dependent on the configuration of the LBRS web-service.
- Scheduling: Another function that the service provides is to give the ability of the connected web application to split time consuming tasks from shorter running tasks. Bungled in with this function is the ability to further split tasks by user type and tool.
- Distributed setup: The third major function is to enable the ADOWS instances to be spread over one or more servers. This is achieved through the use of SOAP/Web technology and the Remote ADOWS Monitor. The RAM takes care of the ADOWS processes that are running, monitoring them and restarting them if necessary.
These 2 components are maintained by the ADOxx.org Team, based on community feedback. Releases are scheduled in accordance with platform releases of ADOxx.
On top of the LBRSWS and RAM components, a functional implementation of a generic API is realized. This API enables interaction with the web-services in Java for the development of business logic. The API is implemented generically, meaning that it works with any library and metamodel. Further extensions are possible to wrap method/modelling tool specific functionality on this level. Currently two different interaction protocols for the development of web applications are supported, SOAP and ReST.
The implementation of this component is provided as open-source through the ADOxx.org SVN Repository (https://www.adoxx.org/svn/devtools/ADOxxAPIService/, further details on how to use the source code are available in the Extend section).
Further development of this component follows the open-source paradigm, maintained by the ADOxx.org team.
On this level, applications that use either the API or the ADOxx Web-Service directly are positioned. As this is project-driven, we do not suggest any technology or platform to develop tools here. Example implementations are provided as cases for community members.