What characterizes an enterprise application? Is it the platform it is deployed on? Is it the number of LOCs? Is is the number and complexity of integrations with other systems, where a more complex system is more "enterprisy" than a less complex one?
Well, if you asked me, I would say that an enterprise application is an implementation of one or more business processes. In this context, I consider a business process to be a series of tasks that needs to be performed in a certain order, by certain people in order to achieve a certain result that usually provides business value. Even an extremely simple application can be an enterprise application if it helps its users to do business.
In today's world, business processes change rapidly. In order to remain useful, the enterprise systems also need to keep up. For complex business processes implemented in some programming language (e.g. Java), this can be difficult to achieve. This is where BPM (Business Process Management) engines come into the picture.
Simply put, a BPM engine brings business people (who work with business processes) and software engineers (who work with code) together. The processes can be defined graphically in BPMN and executed inside an enterprise application.
One BPM engine that is feature rich but yet easy to use is Activiti. It is written in 100% Java and plugs seamlessly into any Java application - including Vaadin applications. Likewise, as it turns out, it is very easy to create a Vaadin front-end on top of an existing Activiti-based application.
I have written an article that hopefully will help you to get your first BPM-based Vaadin application up and running in only a few hours. Check it out!