≡ Menu

First Look – Ideate


Ideate is an Application Framework from a company called Consilience International that was started about 2 years ago by a couple of process folks looking to do something that was more suitable for highly evolvable, dynamic environments where runtime adaption was important. These kinds of dynamic applications are increasingly a focus for companies. Consilience’s view is that dynamic applications need a dynamic architecture, an application architecture with the flexibility of a linked network with the capability of reusable services.

Companies tend to focus on “premature optimization” by building the “optimal design” into a static structure. The alternative is to externalize all relationships so that they can be reconfigured on the fly. Ideate is designed to loosely couple everything and put everything in the cloud as “data”: Data, metadata, reference data, transaction data, services rules, policies, interfaces, program logic etc. Ideate aims to deliver an optimal amount of business relevance and policy precision.

There’s no compiled code, everything is declarative and the software allows people to define systems with everything from user interfaces to search to object create/read/update/delete etc. Standard interface components can allow access to any kind of “thing” such as cases or transactions or people. Access rights control which things you can see and the whole system is web based. A dynamic schema can be generated – a read-time schema – to allow standard reporting tools to be used. Any change to an object is logged and can be accessed also. Reviews and comments are also widely supported, allowing comments on a field for instance. Documents can also be managed as things.

Design time and run time are both treated as objects in the system, allowing sysadmins for instance to manage the definition of objects in the browser using the same tools as a user uses to manage data about customers. As a designer you essentially see a different set of resources – application resources like user interfaces, tasks, reports, entities. The web-based IDE shows the user interfaces, tasks, and other entities through a graph of the relationship. Each thing has a set of information about it – so a task has an assigned person or role, what happens in terms of user interface and what happens after the task for instance. There is a robust mechanism for approving changes – someone can ask, for instance, for a new value in an attribute and have this ripple through the system, get displayed to approvers and approved, changing the behavior of the system.

They are using JBoss Drools as a rules engine and creating an abstraction layer above it. They most use a simple point and click interface for managing rules but also support more robust functionality such as a policy represented by a decision table containing many rules. These rules can see all the declarative elements and use them in both conditions and actions. The decision tables can have multiple columns and rows, the usual conditions and support functions. They currently focus on batch application of rules across instances using MapReduce. This process keeps a complete history of how this was done and users can see which rules fired etc. Large numbers of rules are manageable using the Drools external spreadsheet capability but these rules are then being managed outside the web-based environment. Because everything in the system links to a resource and all the UI components simply edit or call the resources a policy resource (decision table) could be used anywhere.

This kind of declarative approach to building systems has always appealed to me but it has been hard to find an environment that was not super-geeky and heavyweight. Ideate’s web-based approach is interesting and they already have customer implementations and test sites on several continents.


Comments on this entry are closed.