isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Meyer - KMZ" <>
Subject What is Apache Isis? Answer by analogy
Date Sun, 08 Sep 2013 11:35:28 GMT
Folks: Our website is rather "dry" when it comes to describing "What 
is Isis". I want to add a section somewhere (possibly starting with my 
own blog, with something like the following). Any suggestions for 
improvement / correcting mistakes are welcome!

I was trying to describe Isis to some scientist colleagues the other 
night with mixed success. A little later (in the shower, as is so often 
the case), I realised quite a neat analogy: LaTeX [1]

In brief: To write a document (e.g. a PhD thesis) using LaTeX, all you 
(typically) have to do is write the words of the content. There is a 
syntax for "programming" mathematical formula and including 
graphics, etc.
As the author, you care only about "sectioning" - the proper use of 
"chapter", "section", "subsection" tags, you don't worry about "styling" 
(bold, 20pt, courier, etc).

Once you have your content, the final (styled) document is generated 
using your sources and styling rules (your chosen style templates).

The result is a beautifully typeset document. Table of contents, index, 
gloassary, bibliography, these all come for free if you obey some 
simple rules and include the right "syntax" in your document "text".

The alternative is Word (or any other WYSIWYG word processor) - 
you have complete control, but you can waste a lot of time with 
fiddling the layout and the formatting. Not to mention the painful user 
inteface workflow for defining and referencing bookmarks, references, 
cross-references, etc.

Isis is a bit like LaTeX but for application development. You create 
POJO's that are internally self-consistent (they enforce their own 
rules) and Isis renders them to the user (and the repository, etc). 
(With annotations you get "Word-like" control).
For any property (e.g. Name) methods like "getName" and "setName" 
support standard CRUD behaviour.
But Isis goes way beyond CRUD by providing an extra metalanguage 
for things like validation "validateName", visibility "visibleName", 
editability "disableName" and many others (choicesName, 
defaultName, etc).
All the required logic is in the POJO itself.

The alternative is a GUI framework where you manually create 
buttons, labels and fields. You probably even have to place (x,y 
location) and size (length) them. Then you have code that binds them 
to class properties... Think Visual Basic or Delphi[2]. Then have the 
option of putting (validation, for example) all over the place (e.g. in 
the GUI componet event handler, and the database interface code, or 
in a Controller class) - talk about a maintenance nightmare!

So what is Isis?
Isis is a framework that lets developers write self-contained code to 
represent a (business) case. Isis examines that code, with its implied 
rules, and automatically renders a UI and handles persistence - at 
runtime. It can also expose the same business case to other services 
while preserving all the encoded business rules (via a REST 
interface), provide Authentication (login control) and Authorisation (is 
this user allowed to do that?).


View raw message