Skip to main content

Structuring your Application

An 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. model starts with a single overarching element: the ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution.. Everything else in your model, every Component, and everything inside those Components, belongs to it. The applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. therefor acts as the parent group for all other elements.

The ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. carries a descriptive name, and a shortName used wherever a short, technical identifier is needed. For example, as the basis for a database schema name. We recommend maintaining a one-to-one relationship between a project and its ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution., even though a single project workspace can technically hold more than one.

ApplicationInstance​

An ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. also has one or more ApplicationInstances, which describe the target technologies to build and run it. See Technology Layers for what that means and why you might define more than one.

Components​

Your domain logic lives in Components, which are modular, independent parts of the ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution.. Each Component acts as a namespace for the elements it contains, and by default every 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. already includes several built-in Base Components handling common cross-cutting concerns such as authentication (Account) and file management (Assets).

Ideally, your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. is composed of multiple components. We recommend modeling your components around business capability (e.g. invoicing, rental management, customer support) rather than around technical layersLayerLogical separation of functionality within a single system/application, focused on code organization.. This provides a clear separation, and makes it easier to grow your applicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution. as each component can be analyzed and understood as an independent unit. Once a component becomes too big too reason about or if unrelated business logic is grouped together in one component, this component should be broken down.

Component Dependencies​

Elements within a component can refer to each other without limit.

However, by default, elements from one Component are invisible to elements from another Component. Each component is an independent unit and most of its business logic should only compass its own data elementsData Element (DataElement). A fundamental data concept or entity within an application's domain, acting as an anthropomorphic translation of a real-life object or concept.. Sometimes, you might need access to data from another component. By defining a ComponentDependency, you can give access to the elements from another Component.

Component dependencies are unidirectional. The dependee does not know it is being depended on. In addition to this, you cannot have any cycles of dependencies between components.