Development Toolstack

This article describes:

  • The tool set needed by the solution implementation individual for configuration of Pricefx application.

  • What the tool(s) are used for.

  • How the tools cooperate.

Tools

The person implementing the solution uses variety of tools, each for different purposes.

  • Pricefx UI

  • IDE (Integrated Development Environment)

    • IntelliJ Idea

    • Pricefx Studio

    • JDK (Java Development Toolkit)

    • Groovy language

  • Version Control System (VCS)

    • Git

    • Git GUI (e.g. SourceTree, or IntelliJ)

  • DevOps platform / Source Collaboration

    • e.g. GitLab, Github or BitBucket

      • Note: Pricefx is using internally GitLab for its projects.

Pricefx UI

Pricefx was originally developed so that all work on development can be done inside one UI. The Pricefx UI is capable of:

  • Data tables configuration.

  • Various features configuration.

  • Logic development.

  • System configuration (various settings).

Implementation tasks within the UI is really quick, because everything is in one place.

There are, however, some requirements which mandate usage of other external tools, like:

  • The need to version the configuration and the logics.

  • The need for a more comfortable editor for the Groovy code.

Integrated Development Environment

The main motivation behind the IDE was more comfort/convenience when developing logics.

The editor in the IDE can provide many features, like:

  • Code completion.

  • Instant syntax checking.

  • Integrated help.

IntelliJ Idea

IntelliJ is a desktop application built on Java. It provides a cross-platform approach for building tools for any kind of language.

We use it, because:

  • It has a great editor for the Groovy programming language.

  • The Community edition is for free.

Note: It also has a GUI for VCS (e.g. Git), so you can also use it for Git operations.

Pricefx Studio

Pricefx Studio is a plugin for IntelliJ that:

  • Provides a graphical user interface for:

    • Creation and editing of logics.

    • Testing of logics.

    • Fetching and deploying logics and other configuration metadata from/to Pricefx partitions.

    • Displaying tables' metadata.

  • Improves the IntelliJ Groovy editor with:

    • Code completion for Pricefx specific Groovy API.

    • Integrated Groovy API help.

    • Common Pricefx Groovy code templates.

JDK

Java Development Toolkit is used by the Groovy editor to validate any usage of Java methods from within the logic code.

During regular coding and testing of logics it’s used only for real-time validation of the code you write in the editor.

You can either use the same version, which is used by the Pricefx backend server, or a higher one. However, if you use a higher one, there’s a (quite small) chance you might get deprecation messages about some methods which, while ok in the current version, are deprecated in the latest JDK version.

Groovy language

The Groovy Development Kit (GDK), is used for real-time syntax check of the groovy code you’re writing in the IntelliJ editor.

During regular coding and testing of logics it’s used only for real-time validation of the code you write in the editor, not for compilation.

It will be used for compilation only in the event you use:

  • TDD4C ("Test Driven Development for Consultants") - framework used for Unit Testing of Logics and functions.

  • Logic Debugging (i.e., not "Testing", but actual real debugging. Note: The debugging has limited usage).

You can either use the same version, which is used by Pricefx backend server, or a higher one. However, if you use a higher one, there’s:

  • A (slight) risk, that you will use some latest Groovy language feature which is unavailable on the backend Groovy version.

  • A (quite small) chance you might get deprecation messages about some methods which, while ok in the current version, are deprecated in the latest JDK version.

Version Control System

Git

Git is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers.

The GIT SCM tool is essential for:

  • Manipulation of both local and remote repositories - i.e., for storing/retrieving versions of files to/from the repositories.

  • The Git GUI tools which are using the GIT SCM as underlying engine. Both IntelliJ Git GUI and Sourcetree Git GUI are using the command line version underneath.

  • All operations with GIT. The command line version can do all Git commands.

In Pricefx solution implementation projects it is used to:

  • Add new versions from the working project folder to the local Git repository.

  • Push new versions to the remote Git repository.

  • Pull versions from other engineers to local Git repository.

  • Check out selected versions of files from local repository to the working project folder.

Git GUI - SourceTree

Sourcetree is a Git desktop client for developers. It serves as graphical user interface for the Git command line tool. It is:

  • Well-arranged.

  • Good for many common daily operations with Git.

  • Easy to use.

  • Used by many people in Pricefx and also in the training environment.

  • Free.

Note: Sourcetree installer also includes GIT SCM package, so you can potentially use that one pre-packaged with Sourcetree.

DevOps platform / Source Collaboration

GitLab, Github or BitBucket

GitLab is a version control repository hosting service with web-based UI, for source code and development projects which use Git revision control systems.

GitLab is a tool for:

  • Collaboration on source code.

  • Continuous integration.

On Pricefx solution implementation projects GitLab is used to:

  • Have one single source of truth - i.e., logics & configuration stored in Git are the "correct" versions.

  • Keep versions of the project configuration and logics.

  • Collaboration among the configuration engineers - everyone has their local versions, which they synchronize every day with the "remote" repository on GitLab.

References

IDE software

GIT software

Source Collaboration

Knowledge Base

API References

Pricefx APIs Overview

API(s) for I/O

API(s) to Read Data

API(s) for Date / Time

API(s) for Add, Update, Delete of data

API Cheatsheet

API find() tips

Found an issue in documentation? Write to us.