Isis is great for rapid prototyping, because all you need to write in order to get an application up-and-running is the domain model objects.
By focussing just on the domain, you'll also find that you start to develop a ubiquitous language - a set of terms and concepts that the entire team (business and technologists alike) have a shared understanding.
Once you've sketched out your domain model, you can then either start-over using your preferred framework, or you might choose to take the domain model forward into more formal specification and testing.
The programming model defined by Isis deliberately minimizes the dependencies on the rest of the framework. In fact, the only hard dependency that the domain model classes have on Isis is through the
org.apache.isis.applib classes, mostly to pick up annotations such as
@Disabled. The idea is to make it easy to be able to write take a domain object prototyped and/or tested using Isis, but to deploy on some other framework's runtime.
If you are interested in taking this approach, note that there is one important interface that must be implemented by your own framework, namely
DomainObjectContainer. This interface represents the one-and-only "touchpoint" between the domain objects and the runtime. If you inspect the methods then you'll see it covers such concerns as persistence, and of raising warnings or errors.
Isis' own runtime injects an (implementation of this) interface into each and every domain object. You will likely need to do something similar within your own framework, (or come up with an equivalent mechanism, eg Service Locator pattern).
One of the original motivations for Isis itself was to be able automatically generate a user interface for a domain object model.
Isis provides two alternative user interface webapps:
REST (Representation State Transfer) is an architectural style for building highly scalable distributed systems, using the same principles as the World Wide Web. Many commercial web APIs (twitter, facebook, Amazon) are implemented as either pure REST APIs or some approximation therein.
The Restful Objects specification defines a means by a domain object model can be exposed as RESTful resources using JSON representations over HTTP. Isis' RestfulObjects viewer is an implementation of that spec, making any Isis domain object automatically available via REST.
There are two main use cases for deploying Isis as a RESTful web service are:
REST is designed to be machine-readable, and so is an excellent choice for synchronous data interchange scenarios.
As for the auto-generated webapps, the framework manages object persistence, either the JDO objectstore objectstore and the NoSQL objectstore. It is also perfectly possible to deploy the RESTful API alongside an auto-generated webapp; both work from the same domain object model.
All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.