Product Search is a simple web application that allows users to search some kind of products over multiple services and mesh-up results in a live and reactive interface. This application has typical Web 2.0 technology features like:
- Asynchronous interactions.
- Live and reactive interface.
- Complex user interaction.
- Non-stop monitoring.
- Data mesh-up.
So, it’s a good case study to test how JaCa-Web is good in design and develop of this king of Web applications.
More precisely, Product Search is a possible solution of a particular scenario where we imagine the existence of N services that offer product lists with features and prices, codified in some standard machine-readable format. Each service lets users download an agent (typically programmed by the service supplier) that allow product searching on that service; each agent communicates with the corresponding service using its own protocol, possibly different from the protocols of the other agents in the system.
The client-side in this sample Web application needs to search all services for a product that satisfies a set of user-defined parameters and has a price inferior to a certain user-defined threshold. The client also needs to periodically monitor services so as to search for new offerings of the same product. A new offering satisfying the constraints should be visualised only when its price is more convenient than the currently best price. The client may finish its search and monitoring activities when some user-defined conditions are met: a certain amount of time is elapsed, a good enough product is found or the user interrupts the search with a click on a proper button in the page displayed by the browser. Finally, if such an interruption took place, by pressing another button it must be possible to let the search continue from the point where it was blocked.
The main value in this case is having a small set of high-level abstractions that make it possible to keep a certain degree of modularisation, separation of concerns, and encapsulation in designing and programming applications, despite of the complexities given by aspects such as concurrency, asynchronous interactions, openness/dynamism, distribution.
To have a try of this example, please visit its web page here . To have a look of some results, also try to search keywords like “auto” or “macchina” (there are two services with products like cars or other king of machine).
Work in progress…