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.
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.