Hi Guys, we did in the past something similar to structure & deploy our Qi4j Apps. We are using the Term "Tower" that contains all relevant components to deliver a service to the client.
This components are : - (State Model) - Domain Model describes the possible states of a solution. It also exposes a DM API that is used by above layers. - (Behavioral Model) - Context, Roles - (Interaction Model) Service REST API. We are using here http://rest.li/ - Configuration & Bootstrapping (e.g. initial Data) - (Infrastructure) EntityStore + Index, Logging (Fluentd setup), Monitoring - (Deployment) Docker based approach to "bake" docker images - Gradle based approach to glue, structure & automate the above approach and steps The whole approach is like to peel an onion : Hardware > OS > Docker > App > Tower(s) > Qi4j Modules and layers It took as a while to bring all the stuff working together but now it is pretty robust and it is fun to use it.. I;m not sure Niclas if this goes to the direction you are thinking on - I mean in terms of simplifying and decreasing the entry level for future Qi4j hackers. We needed an approach to push Qi4j-based Apps to production in a robust, automated and easy way. Thank you. Cheers, Jiri 2015-04-24 5:16 GMT+02:00 Niclas Hedhman <[email protected]>: > Gang, > After the presentation in Romania, one of the feedbacks received was that > it is too hard to get going with Qi4j. Not only does it require quite a > steep learning curve to grasp Qi4j itself, but it is tedious to set up a > working build for a new project. > > So, I want to create something similar to Maven Archetypes, but with much > better understanding of Qi4j structures. > > I have created a branch for this; Gradle_archetype_toolchain > Name was set before I realize what I want to do, but Gradle will be the > first supported build system, but I think at least Maven should also be > supported, and possibly be able to create Eclipse Workspaces and IntelliJ > projects as well. > > Problem domain; > + Support Pre-packaged application structures, i.e. templating > + Support creation/removal of all Qi4j primary types, Application, Layer, > Module, Composites > + Support weaving in custom code, so generation can occur more than once. > + Support generation to many different build tools. > > Solution domain; > * Strong domain model, which is kept in an entity store and modified > interactively or via scripting > * Set of commands for manipulating the model > * The entire entity store can be used as a "template" for new projects > * Generators will use the model and generate the structures > * Commands are also used to start generation > > Example Use-case 1 > Developer Alex want to use Qi4j for a RESTful server application. He isues > the 'create-project' command and selects the 'rest-server' application > type, and the tool creates a operational skeleton application that serves a > 'Hello, Zest' response from http://localhost:8080/ > > > WDYT? > > Cheers > -- > Niclas Hedhman, Software Developer > http://zest.apache.org/qi4j <http://www.qi4j.org> - New Energy for Java >
