Reference manual

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:
Topic Description
Statements and expressions Statements have flow to subsequent statements (separated by ;), sub-statements (e.g. the if-branch of an if statement), and expressions (e.g. the if condition). Procedure calls have flows to the called procedure.
Event publishers and subscribers A call to an event publisher has flows to all subscribers.
Interface calls A call to an interface method has flows to all methods that implement the method.
Running objects A call like Codeunit.Run(Codeunit::MyCodeunit) has a flow to the codeunit's OnRun trigger. Similarly for other object types. Currently, a call like Codeunit.Run(myVariable), where myVariable is a variable, has no flow to the OnRun trigger.
Triggers The code graph models flows to triggers. For example, myRec.Validate(MyField, 42) has a flow to the OnValidate trigger of MyField.
Properties Properties that have AL expressions as values have flows to the nodes representing the expression.
User actions User actions such as pressing an action button are modelled as special nodes in the code graph and may initiate flows.
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: prism:table/microsoft.sales.customer.customer/field/name represents the Name field of the Customer table.

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:
  • Read (and in some cases also Rename)
  • Insert
  • Modify
  • Delete
Similar to the CRUD acronym (Create, Read, Update, Delete).
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 app.json and .al source files or a .code-workspace file pointing to multiple such folders.

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.