A few words about the conceptual design of openwms.org. Openwms.org is built as a modularized application through all layers. Not only the service part on the backend consists of several lose-coupled modules, also the user interface is designed to be most flexible as possible. A plugable and extensible application was one of the major requirements we defined ourselves. This means you start with a very small framework and choose the plugins (in our term modules) you want to have in your project. At least it is required that the module you've implemented (or one of these that come with openwms.org) follows one defined interface, then it is able to be loaded from the core application.
Openwms.org is a client-server application with a frontend and a backend part. The frontend runs on the client machine, the backend in a server environment. Probably there is a third tier involved responsible for the data storage, but this can also be combined with the backend tier. For the client application (user interface) we have decided to use a technology which belongs to the group of Rich Internet Applications (RIA). Basically the client invokes a request to the server to initially download the user interface application. Afterwards the application is split onto two tiers.
Most of the interaction between user and application is performed on the client tier. E.g. form validation, data formatting and sorting - all these things can be handled without any server interaction. Accessing the server application is only necessary to fetch or manipulate data, but thats done behind the scenes asynchronously. This feature is one of the big differences between traditional web applications and rich client web applications and targets the usability of the frontend application. Another benefit of this approach is sharing the load between client and server. Many operations (like sorting a table) don't have to be done server-side, they can easily be performed on the client without sending a request to the server (no network latency) to increase the response time.
Until now a client must initiate a server operation. That means, refreshing out-dated data is something that must be triggered by an user, but this is the same like traditional web apps with plain HTML frontends and JSF do. The most important difference is that RIA can avoid this circumstance, where we are experimenting on (keyword : server push with Gravity).
So far, you read about modularization and distribution to more than one tier. Lets dig into the details to explain what is shipped with the core framework. As mentioned the naked openwms.org framework is quite small to be extensible. Thats why we packaged only things that are really essential in every project. A little bit of security management (Users, Roles and Grants) and module management (think about plugins). It captures really the basics that each enterprise application shall come with. In terms of modularization we need a frontend part to support this functionality and a backend application that offers the responsible services.
What figure 2 shows is the core openwms.org framework with no other services and functionalities - nothing more, nothing less. At the beginning we built-in a lot of stuff regarding warehouse management systems but we saw that a smaller framework can be re-used out of the scope of WMS software. Thats why we decided to include the basic stuff only.
Nevertheless, security management is the beginning but you expect more and the name openwms.org assumes that there is more regarding your business. We have included a module that deals with the essential things you should already be familiar with like a Transport Unit or a Location. We expect that it doesn't matter if you design a manual or an automatic warehouse, these items you should know from your domain experience so far.
A second module that is shipped with the distribution cares about automatic warehouses. We expect that each automatic warehouse deals with Transport Units and Locations and uses Transport Orders to ship a Transport Unit from a Location A to Location B. Don't forget, it's your choice to use these modules or not. Probably you have to implement completely different requirements and do not care about warehouses then except this module.
Future releases will also provide a module that fulfills the requirements of a standard warehouse management system, like handling customer orders or processing a goods receiving. Keep in mind it's up to you how you extend the framework!
A simple answer is, because the world is too flexible and projects have completely different demands. That's why openwms.org provides a solid base and a model to extend. Another benefit we've figured out during the design phase is that a core framework could be useful in other projects as well :-)
How often did you hear and trusted the term: "Our application is modularized!" and at the end you've got a huge monolithic monster application. We demonstrate how real modularization works. First of all use the proper technology - OSGi for Java applications. Then think about modularization granularity of the application. That's the way we do.
As mentioned the frontend (user interface) is built as modular application. We wanted to have (and already have!) a core application that can load, run and unload plugins (Flex Modules) on demand, without the need to re-install, re-deploy or re-build the application. Openwms.org can do this! Have a look at the User Documentation about how it works.
The service tier provides the same functionality using OSGi. When you click together your application there must be a service at the backend layer as well which fulfills the request from the rich frontend part. E.g. you load the TMS application be sure that you have deployed the appropriate services that response to the request. Easy to understand, isn't it?
Probably you've played around with modules and services which are shipped with openwms.org, then feel free to use the framework for your own stuff like a project management tool, a visualization or just for simple data processing. Feel free to try out and send us your feedback for improvements.
We know that the technologies we have chosen are the right ones for your business, please try it out!