Available in v. ≥ 1.27.

Introduction

Dependencies are an important component of the CAST analysis process: they determine some client/client and client/server links between objects. For the vast majority of situations, dependencies are automatically configured by Console at Application level for each technology and are configured between individual Analysis Units/groups of Analysis Units. You can find out more about them in Validate dependency configuration.

Sometimes, however, dependencies are not configured automatically by Console, particularly for languages managed via the Universal Analyzer - typically HTML5/JavaScript, SQL etc.) and this can sometimes lead to missing links and therefore issues with transactions and other analysis results produced by CAST. In this situation, during the analysis review and configuration (as explained in Application onboarding with Fast Scan - validate the results) dependencies may need to be created manually, however, this can be a time consuming process.

To counter this, it is possible to force Console to create a dependency between specific languages/technologies and which is valid for every single application managed on a specific Node in Console - in other words, once this is configured, users will no longer need to manually create dependencies when Console has not automatically created them.

The following can be achieved:

  • Creation of a dependency between any Technology and any Language of another Technology (this is mainly designed for Universal Analyzer based analyzers which may have multiple languages, but can also be used for non-Universal Analyzer analyzers).
  • Creation of a dependency between any Language of another Technology and any Technology.
  • Creation of a dependency between any Language and any Language.

Creating permanent dependencies

The creation of a permanent dependency is actioned via a file called dependencies-matrix.xml located on an Node (open using a text editor) - you will need to repeat this process for each Node on which you want the same configuration. The file already contains default rules and information that should not be altered:

≥ 2.x
Node: %PROGRAMDATA%\AIP-Node\dependencies-matrix.xml
Standalone Console: %PROGRAMDATA%\CAST\AIP-Console-Standalone\dependencies-matrix.xml

1.x
%PROGRAMDATA%\AipConsole\AipNode\dependencies-matrix.xml

New dependencies can be added anywhere between the existing <dependencies> tags. Any changes made to the file require a restart of the corresponding Node instance.

Creation of a dependency between any Technology and any Language of another Technology

The following syntax is required:

<technology symbol="source_root_technology">
	<allow symbol="target_language" type="language"/>
	<allow symbol="target_language" type="language"/>
	...
</technology>

Where:

  • the source_root_technology item defines the source technology and should use a defined technology name - i.e. one that is already defined in the dependencies-matrix.xml file. It must be a single technology (multiple technologies are not supported).
  • the target_language item defines the target language and should contain one language only. You cannot provide a list. If you need to specify more than one target, add an additional <allow> tag. Example target languages:
    • PLI
    • PLC
    • SQL
    • RPG400
    • PERL
    • PHP
    • HTML5
    • ...

For example, the following will create a permanent dependency between the technology "Sybase ASE sql server" (already defined in the dependencies-matrix.xml file) and the target languages SHELL, DTA400 and CL400:

<technology symbol="sqlserveranalysis.SybaseDefaultTechnology">
	<allow symbol="SHELL" type="language"/>
	<allow symbol="DTA400" type="language"/>
	<allow symbol="CL400" type="language"/>
</technology>

Save the file and restart the Node or standalone Console so that the changes you have made are taken into account.

Creation of a dependency between any Language of another Technology and any Technology

The following syntax is required:

<technology symbol="source_language,source_language" type="language">
	<allow symbol="target_root_technology" type="technology"/>
	<allow symbol="target_root_technology" type="technology"/>
	...
</technology>

Where:

  • the source_language item defines the source language and can contain either a single language name or a comma-separated list of languages. Example source languages:
    • PLI
    • PLC
    • SQL
    • RPG400
    • PERL
    • PHP
    • HTML5
    • ...
  • the target_root_technology item defines the target technology and should use a defined technology name - i.e. one that is already defined in the dependencies-matrix.xml file. It must be a single technology (multiple technologies are not supported) - you cannot provide a list. If you need to specify more than one target, add an additional <allow> tag.

For example, the following will create a permanent dependency between the PL1 languages "PLI" and "PLC" and the target technologies BusinessObjects and Mainframe (already defined in the dependencies-matrix.xml file):

<technology symbol="PLI,PLC" type="language">
	<allow symbol="boanalysis.BODefaultTechnology" type="technology"/>
	<allow symbol="mainframeanalysis.MainframeDefaultTechnology" type="technology"/>
</technology>

Save the file and restart the Node instance so that the changes you have made are taken into account.

Creation of a dependency between any Language and any Language

The following syntax is required:

<technology symbol="source_language,source_language" type="language">
	<allow symbol="target_language"/>
	<allow symbol="target_language"/>
	...
</technology>

Where:

  • the source_language item defines the source language and can contain either a single language name or a comma-separated list of languages. Example source languages:
    • PLI
    • PLC
    • SQL
    • RPG400
    • PERL
    • PHP
    • HTML5
    • ...
  • the target_language item defines the target language. It must be a single language (multiple languages are not supported) - you cannot provide a list. If you need to specify more than one target, add an additional <allow> tag. Example source languages:
    • PLI
    • PLC
    • SQL
    • RPG400
    • PERL
    • PHP
    • HTML5
    • ...

For example, the following will create a permanent dependency between the languages DTA400, DB400, DDS400, RPG400, RPG300, CL400 and the target language SQL:

<technology symbol="DTA400,DB400,DDS400,RPG400,RPG300,CL400" type="language">
	<allow symbol="SQL"/>
</technology>

Save the file and restart the Node instance so that the changes you have made are taken into account.

Note that in v. 1.26 only, the syntax for this creation type was slightly different as shown below:

<language symbol="source_language,source_language">
	<allow symbol ="target_language"/>
	<allow symbol ="target_language"/>
	...
<language/>

This syntax is no longer supported in more recent releases of Console and should be changed to add the type="language" on the first line.