|
Although many excellent development frameworks
exist in the Java and Web space today, we believe that KnowledgeFrame
is quite unique in its focus on Live Meta-Data and Live Business Rules.
This focus allows KF to address the issues of development of complex enterprise
applications very effectively, shortening the development cycles and addressing
perhaps the most frequent cause of project failures – miscommunication between
the business user community and the development team.
Meta-Data and Business Rules are so important because this
is what the business users and system analysts think about, and because that’s
how business requirements tend to be expressed. It is very rare for project
specifications to translate directly to meaningful algorithms and data patterns,
but it is quite common to hear requirements like "this type of invoice must contain the following data"
or "shipping date must be always at least 3 days after order date".
Meta-Data
By building the solution architecture around meta-data
and business rules, KF allows the analysts and users to inspect the definitions
very early in the projects, when the system is still very flexible and changes
do not yet require expensive roll-back of sunken effort.
KF also allows the analysts to be continuously involved throughout
the lifetime of the project, and be able to review the compliance of the implementation
with the system goals and high-level design, helping to avoid the "handover to coding"
syndrome and gaps between design and implementation.
Perhaps even more important, the ability to quickly visualize
business objects in screens and reports allows the developers to communicate
effectively with business users via live prototypes, instead of abstract conceptual
diagrams, which many business users find very challenging to validate.
In one situation, KF was used to validate a data model, which had
been more than 2 years in development, and which had been formally signed off.
It took a one-week interactive workshop for business users to recognize discrepancies
between the data model and the business requirements, and invalidate that data model.
In the following 2 weeks, quick KF meta-data changes were used to iteratively evolve the
model into something that could be used as a basis of the subsequent implementation, with
changes sometimes performed live during the workshop.
Live Meta-Data
KF makes one important distinction in its insistence that the meta-data
has to be "live". The term "live" refers to the fact that meta-data lives
and is accessible in the runtime environment of the application, and any application component
can refer to it (and, in certain scenarios, even change it) at any point of time.
KF specification contains extensive definitions about how meta-data is represented at runtime,
while allowing complete flexibility to how the meta-data is created, updated or referenced.
There is another twist on the term "live", which says that "meta-data
lives with individual objects". This means that while common meta-data can be defined
for a whole application class – e.g. a Business Object – individual instances of that class
can override some meta-data values.
Both definitions of "live" meta-data have several benefits
to the application development:
- Meta-Data based Business Objects can be built either statically
(by coding meta-data values in Java, and compiling them with the rest of the application),
or dynamically, constructed at runtime from values provided by various tools, repositories
and protocols. That allows productive code-centric application development, and also
dynamic flexible service-oriented applications, where data access must be integrated
live with a constantly changing definitions at central or business partner site.
- Development of standard components – screens, reports, Web
Services interfaces etc. – becomes significantly more productive. Instead of custom-coding
each screen and report, a common user interface “painter” can read the meta-data in Business
Object classes, and paint complete functional screens on the fly.
- Declarative business rules (or business rules with declarative "signatures",
but complex custom-coded "bodies") are invoked automatically in event handlers predefined
by the framework, thus providing a classification system for business rules which can be
easily traced (audited, debugged) against the runtime behavior. This approach helps with
a major problem that has been plaguing rule-based systems (expert systems, or
earlier "artificial intelligence" systems) for years – very difficult testing and debugging.
- Flexible applications can use “smart data” to adapt to local
conditions. Imagine an Order Entry application for sales of pharmaceutical products in
multiple countries. Not only does each country have a different way of calculating sales tax
and import duties, but each country also have a different set of regulatory requirements, for
different products – who is allowed to order certain types of medication, what government
reporting must be done on each shipment, and many other things. For 5 customer categories,
10 product categories and 20 countries, we may have up to 1,000 alternatives for data entry
and processing – way beyond what can be handled through the deeply-nested IF / ELSE statements.
And if some of the conditions can change frequently, and the system has to comply quickly, any
hard-coded solution to this problem will fail. However, meta-data which lives with the Business
Object can be populated at the time when the object is built, and then interpreted by the user
interface "painter" and by meta-data-aware business logic.
|
|
|
|