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
OpenJDK 18 (OpenJDK 17) — (How to install)
Groovy 2.4.x — (How to install)
Git — (How to install)
GIT software
Git — (How to install)
Sourcetree (Git GUI) — (How to install)
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.
Â