Content
An OpenWMS.org microservice implementation with Java technology is structured into source packages. Some generic and often used packages exist in all microservices with a common sense. In the example below the structure underneath the common package is also applied to any other domain package like core, tms or wms.
Figure 6. Java package organisation
Beside these packages exist dozens of others specific to every microservice. The Transportation service for example has also a separation into functional packages, like transports or routes. The packages and conventions shown here should be followed for every OpenWMS.org microservice implementation when possible.
| Package | Responsibility |
|---|---|
| org.openwms | Top level product package |
| core | All types that belong to the CORE domain |
| common | All types that belong to the COMMON domain |
| tms | All types that belong to the TMS domain |
| wms | All types that belong to the WMS domain |
| api | Types that are relevant for client applications or API consumers and that are cut off into a separate build artifact |
| app | Types and configuration artifacts that are responsible for the microservice lifecyle |
| commands | Contains all command types and handlers, processors of commands |
| config | Contains configuration classes responsible for the microservice external configuration, most often Spring Boot managed classes mapped to properties files |
| events | All event types used service internally and externally. External events must put under api.events |
| impl | The internal implementation details of the microservice API |