Chapter 1. Introduction

1.1. About the Rules Development Guide

This guide is for engineers, consultants, and others who want to create custom XML-based rules for Red Hat Application Migration Toolkit (RHAMT) tools.

If you are new to RHAMT, it is recommended that you start with the Getting Started Guide for an overview of Red Hat Application Migration Toolkit features and system requirements. It is also recommended that you review the CLI Guide, which provides detailed instructions on how to install and execute the CLI.

If you would like to contribute to the RHAMT source code base or provide Java-based rule add-ons, see the Core Development Guide.

1.1.1. Use of RHAMT_HOME in This Guide

This guide uses the RHAMT_HOME replaceable variable to denote the path to your RHAMT installation. The installation directory is the rhamt-cli-4.3.1.Final directory where you extracted the RHAMT ZIP distribution.

When you encounter RHAMT_HOME in this guide, be sure to replace it with the actual path to your RHAMT installation.

1.2. RHAMT Rules

Red Hat Application Migration Toolkit (RHAMT) contains rule-based migration tools that analyze the APIs, technologies, and architectures used by the applications you plan to migrate. In fact, the RHAMT analysis process is implemented using RHAMT rules. RHAMT uses rules internally to extract files from archives, decompile files, scan and classify file types, analyze XML and other file content, analyze the application code, and build the reports.

RHAMT builds a data model based on the rule execution results and stores component data and relationships in a graph database, which can then be queried and updated as needed by the migration rules and for reporting purposes.

RHAMT rules use the following rule pattern:

when(condition)
  perform(action)
otherwise(action)

RHAMT provides a comprehensive set of standard migration rules out-of-the-box. Because applications may contain custom libraries or components, RHAMT allows you to write your own rules to identify use of components or software that may not be covered by the existing ruleset.