Glossary
Term | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
App | An app is an add-on (extension) to Business Central in as defined by Microsoft. We also regard Base Application, SystemApplication, Application and System as well as localizations etc as apps. Synonyms: Module. | ||||||||||||||||
Code graph | Prism for AL is capable of exporting syntax, references and Flow information into a graph database. We call this the code graph of a workspace. This enables a set of features such as Inbound Flow and Outbound Flow. A code graph may be either Full graph or Procedural flow graph (default). | ||||||||||||||||
Compilation unit |
A compilation unit is a unit of compilation, i.e. something we feed into our parsers.
Compilation units can be either .al files or an object within
SymbolReference.json inside an .app file.
Error handling in case of parse errors is at compilation unit level.
| ||||||||||||||||
Flow |
In Prism for AL, flow refers to reachability control flow, i.e. paths of code that might be traversed
through execution of AL code. Here are some characteristics of our implementation:
| ||||||||||||||||
Full graph | A full code graph contains nodes and edges for detailed syntax and detailed Flow information and well as aggregated Procedural flow. | ||||||||||||||||
Module | See App. | ||||||||||||||||
Module dependencies |
Modules can depend on other modules in a number of ways:
| ||||||||||||||||
Module dependency graph | Modules and their dependencies constitute a directed graph with modules as nodes and dependencies as edges. | ||||||||||||||||
Module metadata |
Data about a module found in
Visual Studio Code app.json files and NavxManifest.xml files in
packages.
| ||||||||||||||||
Package file |
A .app file, which is the output of the AL compiler and
can be published to a Business Central server.
| ||||||||||||||||
Prism path | A URI format for referencing declarations in an object. Prism paths are specific to a workspace (because declarations are), but since there is a large degree of similarity between workspaces, e.g. those that use the same version of Base Application, Prism paths can be used across separate workspaces.
Example: | ||||||||||||||||
Procedural flow |
Reachability flow at procedure/trigger level that aggregates flow information at procedure/trigger level.
Example: When there is a call to procedure Foo inside
procedure Foo , then Foo has a procedural flow to Bar .
| ||||||||||||||||
Procedural flow graph | A graph with procedural flow but without detailed syntax. Semantic information is aggregated at procedure/trigger level. | ||||||||||||||||
RIMD | Acronym for database operations:
| ||||||||||||||||
Symbol file |
The SymbolReference.json file found within
packages.
Prism for AL uses these files when source code is not available.
| ||||||||||||||||
Topological order | The topological order induced by the Module dependency graph. When modules are sorted in topological order, dependencies are always pointing backwards thus giving a natural order in which to understand modules. The topologic order is used in e.g. the Objects panel for sorting and for applying changes from multiple extensions in the correct order for the Extended view. | ||||||||||||||||
Workspace | Workspace is quite an overloaded word which basically means space in which you work, so the meaning depends on your context, i.e. what you work with.
In Visual Studio Code, workspace is
a folder with an In Prism for AL, workspace is generalised to include any collection of modules you choose to view and analyse together as a solution (code-base) and does not distinguish much whether a module is a Visual Studio workspace or a package which your solution depends on. |