Skip to main content

Development Process

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. development relies on a 4-step development process.

  • Model your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution.
  • Expand the model to generate code
  • Customize the code to better accommodate your use-cases
  • Harvest to extract the customizations to insert during the next expansion

This process is repeated iteratively to rapidly build up the applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution., adjust it to new requirements and improve it with new insights.

Model​

Create an ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. model that describes the structure of your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution.. You will be defining DataElements, TaskElements, FlowElements etc.

The models are stored in XML files and can be edited with an advanced modeling tool.

Expand​

Based on this model, the expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. will generate a source code project in a pre-defined expansion directory. This project can be built to create a basic applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. with a simple user interface to create, modify and delete data according to the model.

ExpandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. are extendable, so newly discovered patterns can be converted to new expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. to reduce subsequent work.

Customize​

The developer then modifies the code with customizations to implement use-cases which are not supported by the code generated by the expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact..

The customizations come in 2 forms:

  • Code can be added to the generated files in specific places called custom anchorsAnchorA marker within generated source code reserved for adding custom logic during re-expansion.. These are 2 comments that define the start and end of the custom code, like this:
    // anchor:custom-pre-create:start
    doSomeValidation(details);
    // anchor:custom-pre-create:end
  • Custom classes can also be added in an ext directory. There are multiple ext directories in the project where new classes or other source files can be added.

Harvest and Repeat​

When you are satisfied with the customizations, you can run the harvest step. This will take all of your customizations and stores them next to the model files. The next time the applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. is expanded, these customizations will be reinserted into the generated files.

Working like this allows us to regenerate the code after it was modified, which has several benefits:

  • The model can be updated throughout the development process, giving much needed flexibility.
  • The expandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. can be updated to provide bug-fixes, security fixes and new features, while keeping the customizations intact.