Developing the source code in the file content (project package)
Glossary Item Box
The project package model is one of Creatio's standards for accelerating the development of the server schemas for the application.
A project package is a package that enables developing new functionality like a regular C# project (fig. 1).
Fig. 1. The difference between a project package and a regular package.
The new functionality is included into the file content package (in the Files directory) as a compiled dynamic library and a collection of CS files.
Fig. 2. The folder structure of a project package
The process for delivering the new functionality to the Creatio application using a project package (fig. 3):
1. The project package is compiled to the library as a separate CS project. The library will have the same name as the package.
2. Compiled files are saved to the ../Files/Bin/ folder as a DDL file: ../Files/Bin/[PackageName].dll file.
3. When starting or restarting, the Creatio application will collect information about pre-set libraries and promptly include them.
Fig. 3. The relations of a project package
Advantages of using project packages for developing the server schemas.
- When the number of schemas in the source code of the packages is significant, compilation takes a lot of time as well. Using project packages makes it possible to reduce the speed of compilation from 30-120 seconds to 1-2 seconds.
- Project packages enable deploying developed solutions on the production environment without utilizing traditional delivery models. All it takes is compiling the project package, passing a library, and copying it to the folder. After a restart, all the changes will be applied. Compiling the configuration is not required for the delivery of new functionality.
- Developing the server schemas is significantly easier for cloud applications.
- Project packages enable easy and thorough dependency tracking for any implementation. This is immensely helpful for understanding the dependency tree and singling out the classes that are to be tested upon updating the functionality.
- Automated testing of new functionality becomes available.
Recommended tools for project package development
-
Creatio command-line interface utility (clio) – is an open source utility for integration, development, and CI/CD. Enables:
- creating project packages
- delivery of a package to an on-premises or cloud environment
- retrieval of a package from an on-premises or cloud environment
- restarting the application
- conversion of existing packages.
- CreatioSDK – a NuGet package, which provides a set of development tools for building Creatio applications.