Together Platform – Solutions in Java

License Apache-2.0 Maven Central Javadocs Build Status Coverage Status

logo_250x250 Resources: (GitHub)
# TP-CM
# TP-CORE

Together Platform is a high modular Java based Open Source Project under Apache License 2.0. The Vision is to create a full meta Enterprise Content Management System (EMCS). The Idea behind the project is not a large set on functionality, rather we explore techniques to increase quality. Specially in long time projects is maintenance a difficult goal. The result of this initiative like Source Code, Documentation and binary Artifacts will be published in this Blog. Everyone who want to contribute this work is invited to send an E-Mail from the contact form.

Basic Technology: Programming Language: Java SE 11 (Compiler), Java EE 8 (Specification of the Runtime Environment), Maven 3 (Buildlogic)

  • JSR 340 Servlet API 3.1 – Apache Tomcat 8
  • JSR 344 JSF 2.2 – Java Server Faces : Primefaces / OmniFaces
  • JSR 365 CDI 2.0 – DISABLED : use Spring 5.0 for Dependency Injection
  • JSR 338 JPA 2.1 – Java Persistence API – Hibernate 4.3
  • JSR 380 BeanValidation 2.0 – Reference Implementation by Hibernate Validator
  • JSR 343 JMS 2.0 – Java Message Service
  • JSR 339 JaxRs 2.0 – Java Restful Web-Services with Jersy

JUnit / Mockito / JGiven / Logback / SLF4J / Velocity Template Engine / Spring Security

Architecture

The decision for chosen Architecture is based on the following three points:

  • understandable – keep it simple and design an easy and clear concept
    which everybody can understand
  • usability – have always in mind that the things should be done in an
    efficient way and don’t repeat yourself or reinvent the wheel
  • error tolerance – support the developer to avoid or make less mistakes
    during the implementation

The Layer Architecture allows a higher encapsulation of the system parts and works similar MVC. The difference is, that a layer has more restrictions. This means in concrete, that a lower level can not call Objects from a higher level. The basic package path for all modules is: org.europa.together.. This convention allows a global definition for the spring and hibernate configuration, because the scanning for annotation is defined by layer and not by module.Layer Architecture for together Platform

Layer Description
0: Domain Includes all Data Objects (Entities) with Validation for Persistence.
package org.europa.together.domain
@Entity
1: Application  Implementation of the Application Logic e.g. Data Access Objects (DAO).
package org.europa.together.application
@Repository
2: Business Interfaces for the WebServices and Service Layer.

package org.europa.together.business
@Component

3: Service  RESTful WebService.
package org.europa.together.service
@Service
 4: Orchestration  Services that use the Interfaces and Services to
control the view.
package org.europa.together.view
@Controller
@ManagedBean : for JSF Managed Beans
 5: Presentation (GUI)  JSF Templates or Angular who calls the Services.

Modules

This Section describes the available Modules for Infrastructure Platform. The sources are hosted at GitHub and released Artifacts are available in Maven Central. A short brief documentation is published on the Wiki Pages of the Source Repository. All Artifacts following the Semantic Versioning. See here the list of released modules on Maven Central.

TP-CM : Configuration Management – This Repository contains maven build resources, docker files and database scripts. The parent POM can be included as follow to your projects:

<parent>
    <groupId>io.github.together</groupId>
    <artifactId>build-workflow</artifactId>
    <version>1.1.1</version>
</parent>

TP-CORE :  Library with basic functions for other modules. CORE has no dependencies to other together Platform Artifacts.

<dependency>
    <groupId>io.github.together.modules</groupId>
    <artifactId>core</artifactId>
    <version>2.0</version>
</dependency>