Packages overview
A Creatio package is a collection of configuration elements that implement certain functionality. On the file system level, a package is a directory that defines a set of subdirectories and files. Any Creatio product is a set of packages.
Package types
Creatio includes the following package types:
- Simple package. Learn more: Simple package.
- Project package. Learn more: Project package.
- Assembly package. Learn more: Assembly package.
View comparison of package types in the table below.
Links to other packages | Configuration elements | File content | Development in Creatio IDE | Code compilation path |
---|---|---|---|---|
Simple package and smart activation simple package | ||||
+ | + | + | + |
|
Project package | ||||
– | – | + | – | For .NET Framework: |
Assembly package and smart activation assembly package | ||||
+ | + | + | + | For .NET Framework: |
Package structure
If you upload the package to the version control system, Creatio creates the directory that matches the package name in the package repository.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots/PackageStructureAndContent/7.17/storage_copy_structure.png)
View the structure elements of the package directory in the table below.
Structure element | Structure element description |
---|---|
| Stores the versions of the current package. Each version is a subdirectory whose name matches the package version number in Creatio. For example, 7.18.0. |
| Stores the package schemas. |
| Stores third-party builds bound to the package. |
| Stores data bound to the package. |
| Stores SQL scripts bound to the package. |
| Stores the localized package resources. |
| Stores the package file content. Available in the file system. |
| Stores tags. The tags in the version control system are a snapshot of the project, i. e., a static copy of files made to preserve a development stage. |
| Stores the package properties in JSON. The package properties includes the ID, title, version, dependencies, etc. |
Package dependencies and hierarchy
Creatio application development follows the basic principles of software design, including the “don’t repeat yourself” (DRY) principle. Creatio implements this principle using package dependencies. Each package contains certain Creatio functionality, which the other packages should not duplicate. If a package requires functionality from a different package, set up dependencies between the corresponding packages.
Creatio supports the following dependency types:
- If the current package must inherit the entire Creatio functionality, set the package next to the
Custom
package in the hierarchy as the parent package. - If the current package must inherit the functionality of a package, set the package with the functionality to inherit as the parent package.
Packages can have multiple dependencies. For example, package C
depends on packages A
and D
. Thus, the functionality of packages A
and D
is available in package C
.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots.en/PackageDependencies/7.17/hierarchy.png)
Package dependencies form hierarchical chains. This means that the package contains the functionality of the inheritor package and the functionality of all packages that depend on the inheritor. The closest analogy to the package hierarchy is the class inheritance hierarchy in object-oriented programming. For example, package E
contains not only functionality of package C
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
.
Creatio adds dependencies of custom packages automatically. Dependencies are added based on the entire package hierarchy. This lets you add fewer dependencies manually. For example, if a business process uses configuration elements of the CrtBase
, CrtUIv2
, and Completeness
packages, only the Completeness
package is added as a dependency of the current package, since it depends on the CrtUIv2
package, which, in turn, depends on the CrtBase
package.
Creatio lets you use smart activation packages. The package is installed into the environment and activated automatically when all its dependencies are available. Smart activation packages do not block deleting the linked packages/apps. Learn more: Smart activation package.
Creatio package hierarchy
Package dependencies diagram stores the package hierarchy and dependencies. Instructions: Manage packages. This opens package dependencies diagram in a new tab.
Click a diagram node with the package name to view the package dependencies as animated arrows. For example, the SalesEnterpriseSoftkey_Obsolete
package in the SalesEnterprise product depends only on the SalesEnterpise
package and its parent packages. Also, the SalesEnterpriseSoftkey_Obsolete
package is a parent package to the Custom
package.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots/PackageDependencies/package_dependencies.png)
Add package dependencies
You can add dependencies to a custom package at any time.
To add dependencies:
- Go to the package page.
- Click Add on the Depends on packages detail in the Dependencies tab. This opens the package lookup dialog.
- Select the desired package in the dialog and click Select.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots/PackageDependencies/8.1/scr_add_package_dependency.png)
As a result, Creatio will display the selected package in the current package’s list of dependencies. If you add other dependencies to the current package, Creatio will hide the packages you have already selected from the lookup.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots/PackageDependencies/8.1/scr_added_package_dependency.png)
Creatio adds new packages to the dependencies of the Custom
preinstalled package automatically.
![](https://academy.creatio.com/sites/default/files/documentation/sdk/ru/BPMonlineWebSDK/Screenshots/PackageDependencies/8.1/scr_dependent_packages_717.png)
List of dependencies in the package properties
Creatio stores the list of dependencies in the package properties. View the properties in the DependsOn
property of the object defined in the descriptor.json
file.
The DependsOn
property is an array of objects that contain the package name, version, and unique ID. Use the ID to define the package in the Creatio database. Creatio adds separate descriptor.json
files for each package version.
{
"Descriptor": {
"UId": "51b3ed42-678c-4da3-bd16-8596b95c0546",
"PackageVersion": "7.18.0",
"Name": "UsrDependentPackage",
"ModifiedOnUtc": "\/Date(1522653150000)\/",
"Maintainer": "Customer",
"DependsOn": [
{
"UId": "e14dcfb1-e53c-4439-a876-af7f97083ed9",
"PackageVersion": "7.18.0",
"Name": "SalesEnterprise"
}
]
}
}
See also
Automatically activated package