Quickstart with Example Usage

The application generated by the quickstart archetype can be extended to include modules that demonstrates the usage of the various modules within the Incode Platform. This builds on the (other) extension to embed Camel.

Project Structure

The diagram below shows the extended structure of the application and how these example modules fit in:

Slide3

where:

  • quickstart-example-dom provides a whole slew of additional domain classes that demonstrate the usage of the modules, and which are used in the integration tests of each module.

  • quickstart-example-appdefn provides additional app manifests that extends those provided base quickstart’s, including the example modules.

Including the Example Modules

To include the modules that demonstrate usage of the platform modules, just uncomment the blocks surrounded by these words:

Uncomment to include example modules demonstrating platform usage: START

and

Uncomment to include example modules demonstrating platform usage: END

The files that need updating are:

  • pom.xml

  • webapp/pom.xml

  • appdefn/src/main/java/domainapp/appdefn/DomainAppAppManifestWithFlywayEnabledForSqlServer.java

We recommend you load the application into an IDE to easily do this search-and-replace.

If you’ve included (uncommented) these example usage modules, then you will be able to run the application with an specific `AppManifest`s to demonstrate the usage of each. These are documented in the sections below.

There is also an "extended" manifest that will bootstrap all of the modules, namely org.incode.domainapp.example.app.DomainAppAppManifestWithExampleModulesAndFixtures.

If you bootstrap with this manifest, it will set up a (rather complex) custom home page that provides access to the demo fixtures for pretty much all of the modules.

Modules

The following subsections identify the app manifest to use in order to demonstrate the usage of individual modules.

Libraries

The table below outlines the app manifests to run to demonstrate usage of the library modules.

Table 1. Library example usage
Library App Manifest Notes

Base

(none)

Used throughout.

org.incode.domainapp.example.app.modules. ExampleDomDomDocumentAppManifest

As part of example usage of Document module.

org.incode.domainapp.example.app.modules. ExampleDomDomDocumentAppManifest

As part of example usage of Document module.

org.incode.domainapp.example.app.modules. ExampleDomDomDocumentAppManifest

As part of example usage of Document module.

org.incode.domainapp.example.app.modules. ExampleDomLibDocxAppManifest

org.incode.domainapp.example.app.modules. ExampleDomLibExcelAppManifest

org.incode.domainapp.example.app.modules. ExampleDomLibFakeDataAppManifest

(none)

Used in the integration tests of various modules.

org.incode.domainapp.example.app.modules. ExampleDomDomDocFragmentAppManifest

As part of example usage of DocFragment module.

(none)

Used in the integration tests of various modules.

(none)

org.incode.domainapp.example.app.modules. ExampleDomLibPolyAppManifest

Also used in the implementation of the Communications module (communication channels support).

org.incode.domainapp.example.app.modules. ExampleDomLibServletApiAppManifest

org.incode.domainapp.example.app.modules. ExampleDomLibStringInterpolatorAppManifest

Also used by the DocRendering-StringInterpolator library.

(none)

Used in the unit tests of various modules.

(none)

Also used by the DocRendering-XDocReport library.

Generic Subdomains

The table below outlines the app manifests to run to demonstrate usage of each of the generic subdomain modules.

Table 2. Generic subdomain example usage
Subdomain App Manifest Notes

org.incode.domainapp.example.app.modules. ExampleDomDomAliasAppManifest

org.incode.domainapp.example.app.modules. ExampleDomDomClassificationAppManifest

org.incode.domainapp.example.app.modules. ExampleDomDomCommChannelAppManifest

org.incode.domainapp.example.app.modules. ExampleDomDomCommunicationsAppManifest

Also uses (and therefore demonstrates use of) the Document module.

org.incode.domainapp.example.app.modules. ExampleDomDomCountryAppManifest

Also used in the implementation of the Communications module (communication channels support).

org.incode.domainapp.example.app.modules. ExampleDomDomDocFragmentAppManifest

Also uses (and therefore demonstrates use of) the FreeMarker library.

org.incode.domainapp.example.app.modules. ExampleDomDomDocumentAppManifest

Also uses (and therefore demonstrates use of) the "DocRendering" libraries for FreeMarker, StringInterpolator and XDocReport.

org.incode.domainapp.example.app.modules. ExampleDomDomNoteAppManifest

org.incode.domainapp.example.app.modules. ExampleDomDomSettingsAppManifest

org.incode.domainapp.example.app.modules. ExampleDomDomTagAppManifest

SPI Implementations

The table below outlines the app manifests to run to demonstrate usage of each of the spi implementation modules.

Table 3. SPI Implementation example usage
SPI Implementation App Manifest Notes

org.incode.domainapp.example.app.modules. ExampleDomSpiAuditAppManifest
or
domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see auditing.

org.incode.domainapp.example.app.modules. ExampleDomSpiCommandAppManifest
or
domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see commands.

org.incode.domainapp.example.app.modules. ExampleDomSpiPublishMqAppManifest
or
domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see publishing.

Also, see the extended embedded camel.

org.incode.domainapp.example.app.modules. ExampleDomSpiSecurityAppManifest
or
domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see security.

domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see session logger.

Wicket Components

The table below outlines the app manifests to run to demonstrate usage of each of the wicket component modules.

Table 4. Wicket Component example usage
Wicket Component App Manifest Notes

org.incode.domainapp.example.app.modules. ExampleDomWktExcelAppManifest

org.incode.domainapp.example.app.modules. ExampleDomWktFullCalendar2AppManifest

org.incode.domainapp.example.app.modules. ExampleDomWktGmap3AppManifest

org.incode.domainapp.example.app.modules. ExampleDomWktPdfJsAppManifest

org.incode.domainapp.example.app.modules. ExampleDomWktSummerNoteAppManifest

org.incode.domainapp.example.app.modules. ExampleDomWktWickedChartsAppManifest

MetaModel Facets

The table below outlines the app manifest to run to demonstrate usage of the metamodel facet modules.

Table 5. MetaModel Facets example usage
Metamodel facet App Manifest Notes

domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app.

Extensions

The table below outlines the app manifest to run to demonstrate usage of the extension modules.

Table 6. Extension example usage
Metamodel facet App Manifest Notes

domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see flywaydb.

domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see quartz.

domainapp.appdefn.DomainAppAppManifest

Configured in base quickstart app; see togglz.