Naming Conventions

Naming conventions make programs more understandable by making them easier to read. In addition to the Java naming conventions, Pricefx has its own set of recommended naming conventions for logics and metadata.

Logic Names

Logic names should be written in CamelCase, with the first letter capitalized, for example:

  • PriceGrid

  • CustomerPriceList

Preferably, if the logic is tied to a certain object type, it should start with the type code as a prefix:

Logic type

Formula Nature

Prefix

Suffix

Example

Logic type

Formula Nature

Prefix

Suffix

Example

Agreements and Promotions Header

contractHeader

AP_

 

AP_Header

Agreements and Promotions Line Item

contract

AP_

 

AP_LineItem

Calculation Flow

calculationFlow

CF_



CF_RebateRecords

Calculated Field Set

null (default)

CFS_



CFS_ProductEnrichment

Contracts

 

CT_

 

CT_DefaultContractLogic

Configurator

null (default)

 

Configurator

SampleConfigurator

Data Load

paDataLoad

DL_



DL_ProductCost

Distributed Data Load

distPACalc

DLD_

 

DLD_RebateAllocation

Dashboard

null (default)

DB_

 

DB_Waterfall

Price List

null (default)

PL_

 

PL_National

Live Price Grid

null (default)

PG_

 

PG_Computers

Quotes

null (default)

Q_

 

Q_DefaultQuoteLogic

Rebates Agreements Header

rebateAgreementHeader

RM_

 

RM_Header

Rebate Agreements Line Item

rebateAgreement

RM_

 

RM_Rebate

Groovy Library

library



Lib

SharedLib

MonitoringLib

Note: In the long term, we would like the logics of the same Formula Nature to be stored in a subfolder. Default Formula Nature should be deprecated, so there will be no need for prefixes.

Element Names

Element names should be written in CamelCase, with the first letter capitalized, for example:

  • InvoicePrice

  • CustomerPrice

  • ResultPrice

  • MarginNew

Exception: This rule is not valid for logics serving as a custom HTTP API where the letter case of JSON fields needs to be matching the API interface specification.

The element name should be different to classes from java.lang or java.util because IDEA can then show more false alert inspections. So avoid element names like Map, List, etc.

During deployment, the Groovy logic element scripts get compiled into classes. During logic execution, the logic engine instantiates singleton objects from those classes. These objects then get bound to variables with the same name as the elements. Thus, to call a method callMethod()that is located inside an element ElementName:

ElementName.callMethod()

Pricefx Studio will make IntelliJ interpret this as a static call – even though it is not – and that will make the auto-completion work.

Unique Element Names Within Projects

Element names should also be unique within the entire project – across all logics and classes from java.lang or java.util packages. This is to enable the auto-completion and unit testing with TDD4C. Examples of too common names causing issues:

  • Library

  • Lib

  • Utils

  • Filter

  • Product

  • Customer

  • etc.

When running the logic locally, the element classes will belong to the default pages. The JVM requires classes within the same packages to be unique, so this will make the local compilation fail.

Library Elements

Groovy library element names should be suffixed with Utils, for example:

  • RoundingUtils

  • CacheUtils

  • DatamartUtils

  • DateUtils

  • MathUtils

Common Patterns

Across logics and entire projects, some patterns of element behavior tend to emerge. For these elements, here are some suggested naming conventions:

Suffix

For

Example Element Name

Example Label

Example Value

Suffix

For

Example Element Name

Example Label

Example Value

Diff

Elements that represent a difference, i.e. a result of a subtraction

VolumeDiff

Volume ∆

234 litres

Abs

Elements that represent an amount of money, in absolute terms.

MarginAbs

Margin EUR

Margin $

Margin €

34

$23

€34

Pct

Elements that represent a quotient. These elements are typically formatted as percentages.

MarginPct

Margin %

0.45

Despite the naming convention, the value should be represented as fraction, i.e. it should not be multiplied by 100.

s

Elements that represent a collection.

PX_Records

 

 

Element Labels

Will probably get deprecated. Use the label translations instead.

Label Translations

Labels in the default language should be identical to the element names, but with the words separated by spaces. Some words can be replaced by symbols, for example:

  • SalesPrice – Sales Price

  • MarginPct – Margin %

  • Margin Abs – Margin €

Element labels are optional for those elements that are hidden for the end users.

Data Source / Datamart Field Names

The general rule is to make their first letter in uppercase. Examples:

  • MarginNew

  • SalesPrice

Note: In PA SQL queries the columns are retrieved in lowercase due to how Postgres works.

Found an issue in documentation? Write to us.