Package structure and contents
Glossary Item Box
General information about packages
A Creatio package is a collection of configuration elements (schemas, data, scripts, additional libraries) that implement a particular block of functionality. In the file system, packages are directories with various subdirectories and files.
Any Creatio product is a finite set of packages. To extend or change product functionality, you need to install the package in which all necessary changes are already implemented.
The Creatio packages can be divided into two types:
- Pre-installed packages. Supplied with the system and are installed by default. These include packages with basic functionality (e.g., Base, NUI) and packages developed by third-party developers. These packages are installed from zip archives as marketplace appblication or by using the WorkspaceConsole utility.
- Custom packages are created by the users of the system. These packages can be attached to the SVN repository.
Configuration elements of the pre-installed packages cannot be modified. You can develop additional functionality or modify the existing functionality only via custom packages
Package version
One of the characteristics of a package is its version. The version is specified in the corresponding package mini-page field (Fig. 2). The package version can contain digits, Latin characters, "." and "_” symbols. The package version must begin with a numeric or alphabetic character.
The package versioning mechanism is deprecated and is not supported, starting with Creatio 7.9. Therefore, all pre-installed packages have a version no higher than 7.8.
Fig. 2. Package version in the package mini-page
In addition, the package version is stored in its metadata of the PackageVersion object specified in the descriptor.json file. The descriptor.json file is created for each package version. Example of descriptor.json:
{ "Descriptor": { "UId": "8bc92579-92ee-4ff2-8d44-1ca61542aa1b", "PackageVersion": "7.8.0", "Name": "UsrCustomPackage", "ModifiedOnUtc": "\/Date(1522412432000)\/", "Maintainer": "Customer", "Description": "Package created by user", "DependsOn": [ { "UId": "e14dcfb1-e53c-4439-a876-af7f97083ed9", "PackageVersion": "7.8.0", "Name": "SalesEnterprise" } ] } }
All elements of the package are of the same version as the package itself.
The application is updated by installing packages with the functionality of newer package versions.
Package structure
When you commit a package to the SVN, a folder with the package name is created, and the branches and tags directories are created inside it (Fig. 3).
Fig. 3. Package structure in the SVN
The branches directory contains all versions of this package. Each version is stored in a separate subfolder whose name matches the package version number in the system, for example, 7.8.0.
The structure that takes into account the package versions remained for compatibility with Creatio versions below 7.9.
The tags directory stores tags. The tags in the version control system represent a "snapshot" of the project at a certain point in time, a static copy of the files required for saving some critical stage of development.
Working copies of the packages are stored locally in the file system. The path to the package repository is specified in the ConnectionStrings.config configuration file in the connectionString attribute of the defPackagesWorkingCopyPath element:
<add name="defPackagesWorkingCopyPath" connectionString="TEMP\APPLICATION\WORKSPACE\TerrasoftPackages" />
The directory containing the package name is created in this path. Its inner structure is shown in Fig. 4.
Fig. 4. The package directory structure in the file system
The package schemas are contained in the Schemas directory. External assemblies attached to the package, data and SQL scripts are contained in the Assemblies, Data and SqlScripts directories. All package text resources, translated into different languages, are stored in a separate Resources directory.
Starting with version 7.11.3 the Files catalog has been added to the package structure. The catalog contains the file content (see "Using file content in packages")
The descriptor.json file stores the package metadata in JSON format — ID, name, version, dependencies, etc.