Package dependencies
Glossary Item Box
Introduction
Bpm’online application development follows the basic principles of software design, in particular the “don’t repeat yourself” (DRY) principle. In the bpm’online architecture, the concept of packages was built around this principle and is implemented using dependencies between packages. Each package contains certain application functionality, which should not be duplicated in other packages. If a package requires functions that are part of a different package, you will need to set up dependencies between the packages.
Dependencies and package hierarchy
Packages can have multiple dependencies. For example, package C (Fig. 1) depends on packages A and D. Thus, all the functionality of the packages A and D is available in the package C.
Fig. 1. Dependencies and package hierarchy
Package dependencies form a hierarchical chain. This means that if you add a package to the dependency of another package, the dependent package will contain all functionality of the added package as well as functionality of all packages that the added package depends on. The closest analogy of the package hierarchy is the inheritance hierarchy of classes in object-oriented programming. For example, package E (Fig. 1) contains not only package C functionality on which it depends, but also the functionality of packages A, B and D. In addition; package F contains the functionality of packages B and D.
How to add package dependencies
Dependencies can only be added to a custom package, and only after it has been created. To add dependencies, click the [Add] (1) button on the [Depends on packages] (Fig. 2) detail. In the opened dialog of the package lookup, select the required package (2) and click the [OK] button (3).
Fig. 2. Adding dependency to a custom package
The selected package will be displayed in the list of dependencies of the current package. The packages that have been added to the dependencies are not displayed in the package lookup (Fig. 3).
Fig. 3. Added package dependency
After creating a new package, it will be automatically added to the dependencies of the pre-installed “Custom” package (fig. 4).
Fig. 4. "Dependent Packages" tab
The list of dependencies in the metadata
The list of package dependencies is stored in the package metadata in the DependsOn property of the object specified in the descriptor.json file. The DependsOn property is an array of objects that contain the package name, version and unique identifier by which the package can be identified in the application database. A descriptor.json file is created for each package version. Example of descriptor.json:
{ "Descriptor": { "UId": "51b3ed42-678c-4da3-bd16-8596b95c0546", "PackageVersion": "7.8.0", "Name": "UsrDependentPackage", "ModifiedOnUtc": "\/Date(1522653150000)\/", "Maintainer": "Customer", "DependsOn": [ { "UId": "e14dcfb1-e53c-4439-a876-af7f97083ed9", "PackageVersion": "7.8.0", "Name": "SalesEnterprise" } ] } }
Application package hierarchy
Use the package dependency diagram to explore the hierarchy and application package dependencies. This chart is located on the [Package dependencies] tab of the [Configuration] section (Fig. 5).
Fig. 4. A fragment of package dependency hierarchy
If you click the node element of the package name diagram, the animated arrows will display package dependencies. For example, in the SalesEnterpise product, the [UsrDependentPackage] depends only on the [SalesEnterpise] package and all its dependencies (Fig. 5). The [Custom] package also depends on the [SalesEnterprise] package.
Primary packages
The application’s primary packages include the packages that are always available in all products. A brief list of such packages is shown in table 1.
Table 1. Basic application packages
Package name | Contents |
---|---|
Base | Base schemas of the primary objects, sections and object schemas, pages or processes connected to them. |
Platform | Modules and pages of the section wizard, content designer, dashboard designer, etc. |
Managers | Client modules of the schema managers. |
NUI | Functionality connected to system user interface. |
UIv2 | Functionality connected to system user interface. |
DesignerTools | Schemas of designers and their elements. |
ProcessDesigner | Process designer schemas. |