Design Builder Core

A set of utilities and examples to help design and generate a modular data model using XML schema language.

License

License

GroupId

GroupId

io.fares.design.builder
ArtifactId

ArtifactId

design-builder-core
Last Version

Last Version

0.1.4
Release Date

Release Date

Type

Type

jar
Description

Description

Design Builder Core
A set of utilities and examples to help design and generate a modular data model using XML schema language.

Download design-builder-core

How to add to project

<!-- https://jarcasting.com/artifacts/io.fares.design.builder/design-builder-core/ -->
<dependency>
    <groupId>io.fares.design.builder</groupId>
    <artifactId>design-builder-core</artifactId>
    <version>0.1.4</version>
</dependency>
// https://jarcasting.com/artifacts/io.fares.design.builder/design-builder-core/
implementation 'io.fares.design.builder:design-builder-core:0.1.4'
// https://jarcasting.com/artifacts/io.fares.design.builder/design-builder-core/
implementation ("io.fares.design.builder:design-builder-core:0.1.4")
'io.fares.design.builder:design-builder-core:jar:0.1.4'
<dependency org="io.fares.design.builder" name="design-builder-core" rev="0.1.4">
  <artifact name="design-builder-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.fares.design.builder', module='design-builder-core', version='0.1.4')
)
libraryDependencies += "io.fares.design.builder" % "design-builder-core" % "0.1.4"
[io.fares.design.builder/design-builder-core "0.1.4"]

Dependencies

compile (6)

Group / Artifact Type Version
org.slf4j : slf4j-api jar 1.7.5
org.apache.maven : maven-plugin-api Optional jar 3.3.9
xml-resolver : xml-resolver jar 1.2
xerces : xercesImpl jar 2.11.0
in.jlibs : jlibs-xml-crawler jar 2.2.1
io.github.lukehutch : fast-classpath-scanner jar 2.8.2

test (6)

Group / Artifact Type Version
junit : junit jar 4.12
org.slf4j : slf4j-simple jar 1.7.5
org.eclipse.aether : aether-connector-basic jar 1.0.2.v20150114
org.eclipse.aether : aether-transport-wagon jar 1.0.2.v20150114
org.eclipse.aether : aether-transport-file jar 1.0.2.v20150114
org.eclipse.aether : aether-transport-http jar 1.0.2.v20150114

Project Modules

There are no modules declared in this project.

Design Builder

Overview

While working as an enterprise or information architect, did you ever wondered how to actually break down and distribute a information model after investing uncounted hours researching and documenting? We looked for a practical answer for a long time without much luck.

Our mission was to take the information model from business architecture to physical application component with a mandatory requirement to allow us to evolve the business process yet be able to maintain physical information assets and system interfaces.

The following diagram attempts to outline this approach:

Design Model Context

Model driven architecture and model driven design you say, sure ... there are solutions from major vendors you may add, absolutely! We thought so as well but after spending obscene amounts of time and money on a number of tools we could not make any of them work in practice. One was too abstract, the other no proper model version control, a third strutted a broken deppendency model and multiple others had more useful marketing material than the actual software itself.

Model Components

Lets break down the components of how such a model typically looks like.

Model Components

Mapping Design to Physical Model

There are many options available to design the actual data model and service contracts. We use XML Schema and OxygenXML one of the best XML authoring tools around to build data models. This gives us very powerful design capabilites and supports the packaging of the design assets and later code generation. During the design process we simply create schema models aligned to business capabilities and then use standard source control and maven release and dependency management functions to package and distribute our physical model contracts, fine grained service versioning and mutli service version support included.

Model Mapping

Design Builder Plugin

So what's with this plugin? Simple, this plugin will support the design tool and packaging process to turn a XML Schema based data model into distributable components.

Design Catalog

Generates a catalog file that can be used with XML schema design tools to locate work in progress.

Dependency Collection and Packaging

Flatten plugin will process all imports and includes recursively and place all files into a single target directory.

Limitations

the catalog generator currently only supports system suffix catalogs

TODO

  • needs better unit tests
  • implement mojo that will generate catalog with classpath reference (see CXF catalog example)
io.fares.design.builder

Versions

Version
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.12
0.0.11
0.0.10
0.0.9