Development

Current state

Currently, our open source part consists of the following modules:

  1. org.unidata.mdm.system - contains base types and interfaces
    • ModuleService - the module metadata and discovery service

    • PipelineService - the service, managing execution pipelines

    • ExecutionService - pipeline execution and processing service

    • RuntimePropertiesService - runtime properties, which can be read and modyfied cluster wide

  2. org.unidata.mdm.core - contains security and utility services
    • SecurityService - login, logout, token (in)validation support service

    • EventService - a service for cluster wide event sending and subscription

    • AuditService - audit service

    • UPathService - a simple “UPath notation on DataRecord” interpreter

  3. org.unidata.mdm.search - contains search services and interfaces
    • SearchService - search services facade with access to mapping, indexing and search

  4. org.unidata.mdm.meta - contains meta model creation, modification, query and management services
    • MetaModelService - a service responsible for persisting and query of meta model entities

    • MetaDraftService - a service, allowing one to save a metamodel draft and to apply it to current metamodel after a number of modifications

  5. org.unidata.mdm.data - contains services around data and relations between data records
    • DataRecordService - data management facade service

    • DataStorageService - storage metadata management service

    • RecordValidationService - checks a DataRecord for validity

Development environment setup

  • Database.
    • Create DB manually from psql or PG Admin.
      • DB name: unidata

      • owner: postgres

  • Install Elasticsearch (versions above 5.6.x will not work, we are in progress migrating our search subsystem to the lastest ES).

  • Install russian/english morphology plugin, if you’re going to index and search, using this feature:

    $ bin/elasticsearch-plugin install http://dl.bintray.com/content/imotov/elasticsearch-plugins/org/elasticsearch/elasticsearch-analysis-morphology/5.6.7/elasticsearch-analysis-morphology-5.6.7.zip
    
  • Install Apache Tomcat 9.0.x using your favorite method.

  • Add to unidata backend application configuration(unidata-backend.xml), if you going to add custom mudules:

    <Resources className="org.apache.catalina.webresources.StandardRoot">
       <JarResources className="org.apache.catalina.webresources.DirResourceSet"
                     base="/home/alex/Develop/Soft/apache-tomcat-9.0.10/modules"
                     webAppMount="/WEB-INF/lib"/>
    </Resources>
    
  • UniData uses gradle to build itself.
    • Go to org.unidata.mdm.war and build WAR (and its dependencies) with ./gradle clean war

    • Deploy the artifact to tomcat 9.0.x using your favorite method