CodeGen Documentation
CodeGen Documentation

Customization File

 

Harmony Core Customization File

 

Various aspects of a Harmony Core environment can be customized by crating a customization file, which is a JSON file named HarmonyCoreCustomization.json. CodeGen looks for this file in the current directory during code generation, but as an alternative you may place the file in the same location as the CodeGen templates that you are using.

 

The customization file must contain at minimum an empty JSON object:

 

          {

          }

 

You can then customize various aspects of your Harmony Core environment by adding specific named properties to the object. Examples of doing so can be found below.

 

Customizing Relations

To customize the relation names produced by the <HARMONYCORE_RELATION_NAME> and <HARMONYCORE_FROM_RELATION_NAME> expansion tokens you must add a property named CustomRelationNames to the JSON object. The property must define an array of objects, each of which provides a custom name for a specific relationship. For example:

 

{

  "CustomRelations": [

    {

      "FromStructure": "CUSTOMERS",

      "FromKey": "CUSTOMER_NUMBER",

      "ToStructure": "ORDERS",

      "ToKey": "CUSTOMER_NUMBER",

      "RelationName": "CustomerOrders",

      "RelationType": "D",

      "ValidationMode": "None",

      "CustomValidatorName": "",

      "BackRelation": "ORDERS-CUSTOMERS-CUSTOMER_NUMBER-CUSTOMER_NUMBER"

    },

    {

      "FromStructure": "CUSTOMERS",

      "FromKey": "FAVORITE_ITEM",

      "ToStructure": "ITEMS",

      "ToKey": "ITEM_NUMBER",

      "RelationName": "CustomerFavoriteItem",

      "RelationType": "C",

      "ValidationMode": "ValuePresent",

      "CustomValidatorName": "",

      "BackRelation": "ITEMS-CUSTOMERS-ITEM_NUMBER-FAVORITE_ITEM"

    },

    {

      "FromStructure": "CUSTOMERS",

      "FromKey": "CUSTOMER_NUMBER",

      "ToStructure": "CUSTOMER_NOTES",

      "ToKey": "CUSTOMER_NUMBER",

      "RelationName": "CustomerNotes",

      "RelationType": "D",

      "ValidationMode": "None",

      "CustomValidatorName": "",

      "BackRelation": "CUSTOMER_NOTES-CUSTOMERS-CUSTOMER_NUMBER-CUSTOMER_NUMBER"

    }

  ]

}

 

You may add any number of objects to the array to customize any number of relations. Structure and key names must be specified exactly as defined in the repository and must be in upper case.

 

 FromStructure Property

 

This property should be set to the name of the FROM STRUCTURE in the repository for the relation being customized, and is used for identifying the repository relation to be customized.

 

 FromKey Property

 

This property should be set to the name of the FROM KEY in the repository for the relation being customized, and is used for identifying the repository relation to be customized.

 

 ToStructure Property

 

This property should be set to the name of the TO STRUCTURE in the repository for the relation being customized, and is used for identifying the repository relation to be customized.

 

 ToKey Property

 

This property should be set to the name of the TO KEY in the repository for the relation being customized, and is used for identifying the repository relation to be customized.

 

 RelationName Property

 

This property can be used to customize the name of the navigation property that is added to data model classes to expose the relation. By default the navigation property will be named REL_<ToStructureName>, but when overridden will be set to REL_<RelationName>.

 

 RelationType Property

 

This property can be used to override the Harmony Core relation type for the relationship, in the event that CodeGen identifies an incorrect relation type. The relation types are:

 

Type

Name

Description

A

Many to One to Many

Many records in the "from" file are associated with a single record in the "to" file and vice versa.

B

One to One to One

Each record in the "from” file is associated with one record in the "to” file and vice versa.

C

One to One

Each record in the "from” file is associated with one record in the "to” file, but there is no reverse relationship.

D

One to Many to One

Each record in the "from” file is associated with one or more records in the "to” file and vice versa.

E

One to Many

Each record in the "from" file is associated with one or more records in the "to" file, but there is no reverse relationship.

 

 RequiresMatch Property (DEPRECATED)

 

This property was previously used to define whether a relation required validation. When set to true validation would always be attempted. When set to false validation would only be attempted when a non-space (alpha) or non-zero (decimal) value was present in the source field. This mechanism proved to be insufficient to correctly perform validation in several possible scenarios, and has been replaced by the ValidationMode property (see below).

 

If RequiresMatch=true is found in a customization file and ValidationMode is not present, the ValidationMode is set to Always.

 

If RequiresMatch=false is found in a customization file and ValidationMode is not present, the ValidationMode is set to None.

 

We recommend removing all instances of RequiresMatch and replacement with an appropriate ValidationMode property.

 

 ValidationMode Property

 

This property defines what validation is performed when processing inbound data and when the ENABLE_RELATIONS_VALIDATION setting is enabled. Possible values for this property are:

 

Value

Meaning

None

No validation should ever be performed.

ValuePresent

Validation should be performed only if a non-blank (alpha) or non-zero (numeric) value is present in the source field.

Always

Validation should always be performed, regardless of the value in the source field.

CustomCode

Validation will be performed by custom code named in the CustomValidatioName property

 

 CustomValidatorName Property

 

This property will be used to name a custom validation mechanism that will be used to validate relation data. This mechanism has not yet been defined.

 

 BackRelation Property

 

TBD.

 

 

 


Copyright © 2021  Synergex International, Inc.