HCIS stands for heuristic container for Injection of services. Don't let the name throw you off balance, because it started out originally as generic pluggable health care information system :0) and turned out to be too generic for only one problem. The name HCIS however stuck and so its been like that from that point on. But its more than just that, so lets give it a little try. Heuristic literally means:
a commonsense rule (or set of rules) intended to increase the probability of solving some problem
It makes sense as HCIS attempts to introduce a programming paradigm for application developers that they can use to build sound, pluggable yet efficient, re-usable, Restful friendly application tiers / applications. Container because it forms and marshals out those services together in one "container", injection because it literally injects the problem solving architecture and approaches into application via services that it provides.
The attempt through the framework is to develop a very type safe event driven java application architectural framework which makes assembling an application both fun and breeze. The core ideologies of the framework are outlined below:
- Type-safety for configuration,
- Rely more on conventions.
- Be event driven.
- Be Simple and easy and most of all intuitive to follow in code, in architecture and in almost any thing that is HCIS. :)
- Use DI but with care that it doesn't trump the type-safety "law" so as to speak.
- De couple tiered architectures by driving each of the tiers independently using event programming model.
- Complement well with existing and highly scalable frameworks like Spring, Hibernate.
- Provide with the "meaningful" extensibility to "hearts" and "parts" of the framework.
Details
HCIS (pronounced as letter 'h' sis) has following core modules:
- http://code.google.com/p/hcis-core-engine/ - The engine is the heart of the hcis framework and is responsible for processing the events and notifying listeners and driving the application so as to speak. Check the link for more details.
- http://code.google.com/p/hcis-model/ - model 'module' provides with common modeling and namespacing mechanism for the hcis engine to process. A model represents a generic concept of what is a persistent entity in a database. Conceptually an entity is a model without an identifier. For its own purpose hcis-model attempts to provide the applications with common modeling standard or scheme by which they can structure their application intuitively. Several of the most commonly used models are available that fosters re-usability. Check the link for more details.
- http://code.google.com/p/hcis-dao/ - For longest times DAO pattern has solely focused on being glue code for business tier and being a direct dependency on which all upper tiers of the stack will build upon, this however will change with the introduction of hcis-dao module. HCIS-DAO is event driven and hence conceptually very different from current methodologies used to define a data access object. Being event driven also de-couples DAO and shields the actual "getter" logic from the calling tier, be it anything and makes it approachable problem from RESTful web services perspective.
- http://code.google.com/p/hcis-dto/ - A DTO has long been abused so as to speak when it comes to shuttling the data back and forth, variations like Value Object have been proposed, but all they do is propose a solution with minor subtleties; HCIS-DTO attempts to provide a completely new view of a DTO, that serves as a template and the "actual" event trigger that is used by event sources to trigger the events and feed them to engine to be propagated to appropriate listeners as it sees fit. Check the link for more details.
- http://code.google.com/p/hcis-event/ - Provides with core event and listener hierarchy for driver to work with and dispatch to. All HCIS components rely on event system to perform their tasks, hence forming a base of sorts for all data or process transfers.
- http://code.google.com/p/hcis-service/ - Exposes SOA architecture which when combined with Event Driven architecture fosters a new generation of SOA components enabling re-usability and maximum decoupling for efficient application design.
- http://code.google.com/p/hcis-context/ - Attempts to provide HCIS modules / sub-projects with a context to manage life cycle of participants or HCIS Entities for processing by the engine in a much better and organized fashion.
- http://code.google.com/p/hcis-sandbox/ - Serves as a dumping ground for all sample projects built on or for hcis and related technologies, mixed with external frameworks like Spring, Hibernate, Spring Web Flow, MVC, EJB 2/3 and JPA and or mixture of these frameworks based upon hcis architecture and conceptual flow.
- http://code.google.com/p/hcis-plugin/ - Provides with maven archetype plugin for quick web application development with template classes and package structure already available.
- http://code.google.com/p/hcis-js/ - Provides with an elegant client side framework which integrates and gels with HCIS framework, aiding in conceptual generation of events.