Skip to main content

NS Project

The applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. model describes what your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. does. To configure how you will build, package, deploy and run your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution., you can use the project-setup. The project-setup describes the CI/CD pipeline, the Docker images, the services that run next to your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution., and the scripts you use during development.

The applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. and project-setup together, make up an NS project. Just like the applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. itself, the setup is modeled and expanded, by a dedicated set of expansion resourcesExpansion Resource (ExpansionResource). A reusable resource bundle containing expanders and features that provide specific application capabilities, defined in the expansion settings and added to the classpath during expansion.: the Project Setup expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact..

By making the NS project setup a modeled and generated setup, we make sure each NS project is configured in the same way and enforce several best practices (e.g. using Git Flow, changelog structure, generic build scripts).

Two expansions in one repository​

An NS project contains two separate expansions, each with its own model and its own expansionSettings.xml:

  • the applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution., configured in conf/expansionSettings.xml, expands the source code of your NS applicationNS Application (NSApplication). A pre-built software stack that provides common enterprise application functionality such as CRUD, search, authentication, and business process modeling out of the box.;
  • the project setup, configured in .nsproject/expansionSettings.xml, expands everything needed to build and run that applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution..

Both models can be edited in µRadiant, which lets you switch between the two expansionSettings files within the same project.


Git​

Unlike other expanded files, files expanded by the project setup expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. are, and should be, included within git. This makes it easier when switching branches and also facilitates a simpler setup.

Customizations​

The project expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. are fairly prescriptive, but still allow for a lot of customization. Ideally everything is done through the model. The different elements have fieldsFieldA property of a DataElement expanded to a database column and user interface input element. that can be configured and options for special use cases. Many of the expanded files also have custom anchorsAnchorA marker within generated source code reserved for adding custom logic during re-expansion. to allow customization. It is however also possible to add your own files next to the expanded files if you have a use case that is impossible to fit into the model.

Since the expanded files are checked into git, it is also possible to just edit the files even outside of custom anchorsAnchorA marker within generated source code reserved for adding custom logic during re-expansion.. This is discouraged as it will impact the evolvability of your project-setup negatively, but it is useful in cases where the project-expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. don't provide a solution yet.