Thursday, October 25, 2012

The Architecture of Integration - Part 2

Many months ago, I had mused on developing a new architecture of integration. Unlike the old models, whose focus was simply on ensuring connectivity and transfer of information from one context to another, in the new model, the focus was more on an expanded context that assimilates and re-formulates the information.

How should one go about it? To start with, I think the context can be re-formulated as the mental model the user has. Each user has a different mental model, and instead of trying to force fit the software's mental model to the user, I think the user should define the mental model as part of the profile.

So, lets say, I, user A, am someone who likes looking at numbers associated with a news feed or a task list. So, if I am reading a piece of news on robbery, I can access information by hovering over a word on number of robberies near where I live, or number of robberies in this area over time, or any other statistical measure associated with it. I may want to get details on robbery prevention program in my area.

Another scenario could be, someone sent me an email asking for approval to buy new laptops for the department along with specs. I could look at the model selected and be presented with information on its approval rating at amazon, and other retailers, recommendation on the CPU, known failure rates and information on if better processors are due in 2 months and I should hold back on the purchase.

The same email containing identical set of specs if sent to the support team would present a completely different set of information, such as if the monitors will need to be hdmi enabled, or if they need to buy DVI-HDMI converters. The finance department, on the other hand would be able to determine the budget approval tied to this purchase and procurement would know if tendering rules were followed for procurement. 

To achieve this, I think, what is needed is that each user's context needs to be tied to their enterprise profile. This way the "Context Mapper" only needs to know that it needs to embellish the information presented with new information. Each system does not need to know how to parse each information and which system to go to fetch additional information. Also, the information is fetched at runtime so the container software does not need to know anything about me except my unique identity. Users can manage their profiles in an organization as their perspectives change from technical to more general management, and they are able to interpret new perspectives and are willing to unlearn other ones.

Taken in other contexts, this can be extended to many application domains where the same raw information needs to be presented in different ways to different people for it to make sense out of it.

If only, this could now be extended to facebook, where I could know "Like" balance sheet with my friends when I post my "Likes".