Skip to main content

Custom modelling config

Introduction

The custom modelling configuration allows you to tailor the Graphical implementation design tool to your organization's specific needs. By providing a modelling configuration file at .k5/modelling-config.yaml in your project's git repository, you can customize the available model elements, define custom properties, and configure validation rules that align with your architectural patterns and design methodologies.

For more information on how to use custom modelling configurations, see Graphical implementation design - Customization.

Default modelling configuration

The following YAML shows the default modelling configuration that is used when no custom configuration is provided:

---
# general
# some very basic model-config settings
structureElements:
# System element is not meant to be changed
- name: SYSTEM
### EVERY (!) object implicitly inherits from here
abstract: true
properties:
- fieldName: uuid
type: system
- fieldName: type
type: system
- fieldName: version
type: system
- fieldName: customFields
type: system
- fieldName: tags
type: system
- fieldName: fileName
type: system
- name: Labeled
abstract: true
properties:
- fieldName: label
type: system
required: true
usedAsHeadline: true
- fieldName: description
displayName: Description
type: system
required: false
- fieldName: summary
displayName: Summary
type: system
required: false
- name: Trackable
abstract: true
# properties have special behavior as the fields are filled automatically
properties:
- fieldName: creationTs
type: system
- fieldName: creator
type: system
- fieldName: creatorId
type: system
- fieldName: lastModifiedTs
type: system
- fieldName: lastModifier
type: system
- fieldName: lastModifierId
type: system
- name: CodeGenReady
abstract: true
properties:
- fieldName: implementationInstructions
displayName: "Implementation instructions"
type: textarea
required: false
semanticHint: "Additional hints for code generation purposes"
- name: BusinessProperties
abstract: true
properties:
- fieldName: businessLogic
displayName: "Business logic"
type: textarea
required: false
semanticHint: "Logic description of what happens in the implementation"
- name: EntityProperties
abstract: true
properties:
- fieldName: properties
displayName: "Properties"
semanticHint: "List of properties, describing the complex object"
type: object
array: true
properties:
- fieldName: name
displayName: "Name"
type: string
required: true
- fieldName: type
displayName: "Type"
type: string
required: true
- fieldName: isRequired
displayName: "Required"
type: boolean
required: false
- fieldName: isList
displayName: "Array"
type: boolean
required: false
- fieldName: description
displayName: "Description"
type: string
required: false
---
## DDD-Modeling
structureElements:
- name: aggregate
displayLabel: Aggregate
icon: DataConnected
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
allowedContainedElements:
- targetType: entity
persistenceProperty: containedEntities
- targetType: valueObject
persistenceProperty: containedValueObjects
- targetType: command
persistenceProperty: commands
diagramOptions:
shape: card
defaultColor: gray
- name: entity
displayLabel: Entity
icon: Data_1
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- EntityProperties
allowedContainedElements:
- targetType: entity
persistenceProperty: containedEntities
- targetType: valueObject
persistenceProperty: containedValueObjects
diagramOptions:
shape: cardWithProperties
defaultColor: teal
properties:
- fieldName: isRoot
displayName: Root Entity
type: checkbox
required: false
semanticHint: "Indicates if entity is the root entity of the aggregate"
- fieldName: isAbstract
displayName: Abstract
type: checkbox
required: false
semanticHint: "Indicates if entity is abstract or not (abstract means, no instance can be created)"
- name: valueObject
displayLabel: ValueObject
icon: Object
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- EntityProperties
allowedContainedElements:
- targetType: valueObject
persistenceProperty: containedValueObjects
diagramOptions:
shape: cardWithProperties
defaultColor: green
properties: [] # we could just define additional properties but not for now
- name: command
displayLabel: Command
icon: Function_2
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- BusinessProperties
diagramOptions:
shape: card
defaultColor: cyan
properties:
- fieldName: isFactory
displayName: FactoryCommand
type: checkbox
required: false
semanticHint: "Indicates if command is a factory command, which would mean that it is used to create an instance of the root entity"
- name: domain-service
displayLabel: Domain service
icon: FlowModeler
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- BusinessProperties
diagramOptions:
shape: card
defaultColor: blue
properties: [] # we could just define additional properties but not for now
- name: business-event
displayLabel: Business event
icon: Trigger
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: yellow
properties: [] # we could just define additional properties but not for now
- name: business-error
displayLabel: Business error
icon: IncompleteError
abstract: false
feature: ddd
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: red
properties: [] # we could just define additional properties but not for now
---
## Default Implementation Design
structureElements:
- name: service
displayLabel: Service
icon: Function
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- BusinessProperties
diagramOptions:
shape: card
defaultColor: blue
properties: [] # we could just define additional properties but not for now
- name: class
displayLabel: Class
icon: Object
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- BusinessProperties
allowedContainedElements:
- targetType: method
persistenceProperty: methods
- targetType: class
persistenceProperty: containedClasses
diagramOptions:
shape: cardWithAttributes
defaultColor: teal
properties:
- fieldName: attributes
displayName: "Attributes"
type: object
array: true
properties:
- fieldName: name
displayName: "Name"
type: string
required: true
- fieldName: type
displayName: "Type"
type: string
required: true
- fieldName: isRequired
displayName: "Required"
type: boolean
required: false
- fieldName: isList
displayName: "Array"
type: boolean
required: false
- fieldName: description
displayName: "Description"
type: string
required: false
- name: method
displayLabel: Method
icon: Parameter
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
- BusinessProperties
diagramOptions:
shape: card
defaultColor: cyan
properties: [] # we could just define additional properties but not for now
---
## Integration
structureElements:
- name: rest-api
displayLabel: REST API
icon: ConvertToCloud
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
allowedContainedElements:
- targetType: rest-api-operation
persistenceProperty: operations
diagramOptions:
shape: card
defaultColor: purple
properties:
- fieldName: interactionType
displayName: Interaction Type
type: singleSelect
required: false
options:
- name: providing
- name: consuming
semanticHint: "Indicates if the REST API is getting provided or consumed in the current context"
- name: rest-api-operation
displayLabel: REST operation
icon: CallsIncoming
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: purple
properties:
- fieldName: interactionType
displayName: Interaction Type
type: singleSelect
required: false
options:
- name: providing
- name: consuming
semanticHint: "Indicates if the REST API operation is getting provided or consumed in the current context"
- name: message-publisher
displayLabel: Message publisher
icon: ConnectionSend
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: orange
properties: [] # we could just define additional properties but not for now
- name: message-listener
displayLabel: Message listener
icon: ConnectionReceive
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: orange
properties: [] # we could just define additional properties but not for now
- name: message-topic
displayLabel: Message topic
icon: MessageQueue
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: yellow
properties: [] # we could just define additional properties but not for now
- name: message
displayLabel: Message
icon: Email
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: yellow
properties: [] # we could just define additional properties but not for now

---
## Persistence
structureElements:
- name: db-collection
displayLabel: DB collection
icon: DataCollection
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: gray
properties: [] # we could just define additional properties but not for now
- name: db-table
displayLabel: DB table
icon: Table
abstract: false
feature: implementation
inheritsFrom:
- Labeled
- Trackable
- CodeGenReady
diagramOptions:
shape: card
defaultColor: gray
properties: [] # we could just define additional properties but not for now
---
features:
- name: ddd
displayLabel: Domain Driven Design
description: >-
Domain Driven Design (DDD) is a software development approach that focuses on modeling complex business domains.
icon: Area
- name: implementation
displayLabel: Implementation design
description: >-
Design and model the technical implementation details of your system, including classes, methods, and services.
icon: Code
---

Example modelling configuration

The following YAML shows an example modelling configuration:

---
features:
- feature: business
displayLabel: Business
description: >-
Modeling for Business changes with help of methodology of User Story Mapping.
icon: UserActivity
- feature: governance
displayLabel: Governance & Status
description: >-
Keep up governance and status of the system with help of tracking and visualizing different aspects of the system.
icon: Rule
---
## Business Capability Modeling
structureElements:
- name: user_story_map_activity
displayLabel: User Activity
icon: UserActivity
abstract: false
inheritsFrom:
- Labeled
- Trackable
allowedContainedElements:
- targetType: user_story_map_task
persistenceProperty: tasks
- targetType: user_story_map_story
persistenceProperty: stories
diagramOptions:
shape: card
defaultColor: blue
feature: "business"
properties:
- fieldName: owner
displayName: Owner
type: text
required: false
description: "Accountable"
- fieldName: scope
displayName: Scope
type: text
required: false
description: "Boundaries"
- fieldName: lifecycle_status
displayName: Lifecycle status
type: singleSelect
required: false
description: "Current state"
options:
- name: "Idea"
- name: "Planned"
- name: "In progress"
- name: "Live"
- name: "Sunset"
- name: user_story_map_task
displayLabel: User Task
icon: Task
abstract: false
inheritsFrom:
- Labeled
- Trackable
allowedContainedElements:
- targetType: user_story_map_story
persistenceProperty: stories
diagramOptions:
shape: card
defaultColor: green
feature: "business"
properties:
- fieldName: owner
displayName: Owner
type: text
required: false
description: "Accountable"
- fieldName: scope
displayName: Scope
type: text
required: false
description: "Boundaries"
- fieldName: lifecycle_status
displayName: Lifecycle status
type: singleSelect
required: false
description: "Current state"
options:
- name: "Idea"
- name: "Planned"
- name: "In progress"
- name: "Live"
- name: "Sunset"

- name: user_story_map_story
displayLabel: User Story
icon: Notebook
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: yellow
feature: "business"
properties:
- fieldName: owner
displayName: Owner
type: text
required: false
semanticHint: "Accountable"
- fieldName: maturity
displayName: Maturity
type: singleSelect
required: false
description: "CMMI"
options:
- name: "1 Initial"
- name: "2 Managed"
- name: "3 Defined"
- name: "4 Measured"
- name: "5 Optimizing"
---
## Governance-Modeling
structureElements:
- name: adr
displayLabel: Architecture Decision Record
icon: Document
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: orange
feature: "governance"
properties:
- fieldName: status
displayName: Status
type: singleSelect
required: false
options:
- name: "Proposed"
- name: "Accepted"
- name: "Superseded"
- name: "Rejected"
- name: design_alternative
displayLabel: Design Alternative
icon: DocumentMultiple_01
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: yellow
feature: "governance"
properties:
- fieldName: outcome
displayName: Outcome
type: singleSelect
required: false
options:
- name: "Selected"
- name: "Rejected"
- name: "Deferred"
- fieldName: eval_fit
displayName: Evaluation fit
type: rating
required: false
- fieldName: eval_cost
displayName: Evaluation cost
type: rating
required: false
- fieldName: eval_risk
displayName: Evaluation risk
type: rating
required: false
- fieldName: tti
displayName: Time to implement
type: rating
required: false
- name: risk
displayLabel: Risk
icon: EventIncident
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: red
feature: "governance"
properties:
- fieldName: probability
displayName: Probability
type: singleSelect
required: false
options:
- name: "Low"
- name: "Medium"
- name: "High"
- fieldName: impact
displayName: Impact
type: rating
required: false
- fieldName: status
displayName: Status
type: singleSelect
required: false
options:
- name: "Open"
- name: "Mitigating"
- name: "Closed"
- fieldName: due_date
displayName: Due date
type: date
required: false
- name: tehnical_debt
displayLabel: Technical Debt
icon: Debug
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: gray
feature: "governance"
properties:
- fieldName: category
displayName: Category
type: singleSelect
required: false
options:
- name: "Code"
- name: "Architecture"
- name: "Ops"
- name: "Data"
- name: "Security"
- fieldName: severity
displayName: Severity
type: singleSelect
required: false
options:
- name: "Low"
- name: "Medium"
- name: "High"
- name: "Critical"
- fieldName: status
displayName: Status
type: singleSelect
required: false
options:
- name: "Logged"
- name: "Planned"
- name: "Remediating"
- name: "Resolved"
- name: "Accepted"
- fieldName: accept_until
displayName: Accept until
type: date
required: false
- name: assumption
displayLabel: Assumption
icon: WatsonHealthSmoothing
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: teal
feature: "governance"
properties:
- fieldName: confidence
displayName: Confidence
type: singleSelect
required: false
options:
- name: "Low"
- name: "Medium"
- name: "High"
- fieldName: status
displayName: Status
type: singleSelect
required: false
options:
- name: "Pending"
- name: "Validated"
- name: "Invalid"
- name: constraint
displayLabel: Constraint
icon: Constraint
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: blue
feature: "governance"
properties:
- fieldName: type
displayName: Type
type: singleSelect
required: false
options:
- name: "Regulatory"
- name: "Business"
- name: "Technology"
- name: "Operational"
- name: "Financial"
- fieldName: negotiable
displayName: Negotiable
type: boolean
required: false
- name: open_discussion
displayLabel: Open Discussion
icon: Forum
abstract: false
inheritsFrom:
- Labeled
- Trackable
diagramOptions:
shape: card
defaultColor: white
feature: "governance"
properties:
- fieldName: priority
displayName: Priority
type: singleSelect
required: false
options:
- name: "Low"
- name: "Medium"
- name: "High"
- name: "Urgent"
- fieldName: decision_due
displayName: Decision due
type: date
required: false
- fieldName: status
displayName: Status
type: singleSelect
required: false
options:
- name: "Open"
- name: "In review"
- name: "Decided"

---