# knime-oss/knime-base architecture

> Architecture diagram of the GitHub repository knime-oss/knime-base, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/knime-oss/knime-base
- Repository: https://github.com/knime-oss/knime-base

## Overview

KNIME Base is an extension collection of nodes for KNIME Analytics Platform, rather than a standalone application. A user configures nodes in a KNIME workflow; node models process tables or other workflow data and produce outputs. The tree shows capabilities spanning data preparation, mining, file handling, visualization, and time formatting. Sampled sources clarify the date/time formatter and missing-value handling, while most other modules are represented only by the tree or SOURCE INDEX, so their internal links are omitted where evidence is unavailable.

Main entry points: [`org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java`](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java) (Date-time formatter), [`org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java`](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java) (Duration formatter), [`org.knime.base/src/org/knime/base/node/viz/format/AlignmentSuggestionOption.java`](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/viz/format/AlignmentSuggestionOption.java) (Alignment options), [`org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java`](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java) (Moving average)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Workflow nodes"]
  node_nodecollection["Node collection<br/>[src]"]
  node_rules["Rule engine"]
  node_tablecreator["Table creator"]
  node_flowvars["Flow variables"]
end

subgraph group_data["Data preparation"]
  node_tableops["Table operations<br/>[Table.java]"]
  node_missing["Missing values"]
  node_movingaverage["Moving average"]
  node_interpolation["Average interpolation"]
end

subgraph group_analysis["Analysis nodes"]
  node_statistics["Statistics<br/>[Statistic.java]"]
  node_sota["SOTA clustering<br/>[SotaManager.java]"]
  node_mds["MDS projection"]
end

subgraph group_io["File handling"]
  node_fileconnectors["Filesystem connectors"]
  node_fileutilities["File utilities"]
  node_stringtopath["String to path"]
end

subgraph group_presentation["Formatting"]
  node_datetime["Date-time formatter"]
  node_datetimeconfig["Date-time settings"]
  node_duration["Duration formatter"]
  node_durationconfig["Duration settings"]
  node_alignment["Alignment options"]
  node_boxplot["Box plot data<br/>[Box.java]"]
end

node_user(("Workflow author"))
node_knime["KNIME platform"]

node_user -->|"authors workflow"| node_knime
node_knime -->|"provides nodes"| node_nodecollection
node_movingaverage -->|"uses statistics"| node_statistics
node_interpolation -->|"creates handler"| node_missing
node_datetime -->|"reads settings"| node_datetimeconfig
node_datetime -->|"sets alignment"| node_alignment
node_duration -->|"reads settings"| node_durationconfig
node_duration -->|"uses alignment"| node_alignment

click node_nodecollection "https://github.com/knime-oss/knime-base/tree/releases/STS/org.knime.base/src"
click node_rules "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src-deprecated/org/knime/base/node/rules/RuleEngineNodeModel.java"
click node_tablecreator "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/io/tablecreator/TableCreatorRpcDataService.java"
click node_tableops "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/manipulator/table/Table.java"
click node_missing "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/MissingCellHandler.java"
click node_movingaverage "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java"
click node_interpolation "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/timeseries/AverageInterpolationMissingCellHandlerFactory.java"
click node_statistics "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/data/statistics/Statistic.java"
click node_sota "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/mine/sota/logic/SotaManager.java"
click node_mds "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/mine/mds/mdsprojection/MDSProjectionManager.java"
click node_fileconnectors "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.core.fs.nodes/src/org/knime/filehandling/core/fs/local/node/LocalConnectorNodeParameters.java"
click node_fileutilities "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/metainfo/FileFolderMetaInfoNodeModel.java"
click node_stringtopath "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/stringtopath/StringToPathNodeModel.java"
click node_datetime "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java"
click node_datetimeconfig "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeSettings.java"
click node_duration "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java"
click node_durationconfig "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeSettings.java"
click node_alignment "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/viz/format/AlignmentSuggestionOption.java"
click node_flowvars "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/util/flowvariable/FlowVariableResolver.java"
click node_boxplot "https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/viz/plotter/box/Box.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_nodecollection,node_rules,node_tablecreator,node_flowvars toneBlue
class node_tableops,node_missing,node_movingaverage,node_interpolation toneAmber
class node_statistics,node_sota,node_mds toneMint
class node_fileconnectors,node_fileutilities,node_stringtopath toneRose
class node_datetime,node_datetimeconfig,node_duration,node_durationconfig,node_alignment,node_boxplot,node_user,node_knime toneIndigo
```

## Components

### Workflow nodes

- [Node collection](https://github.com/knime-oss/knime-base/tree/releases/STS/org.knime.base/src): `org.knime.base/src`
- [Rule engine](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src-deprecated/org/knime/base/node/rules/RuleEngineNodeModel.java): `org.knime.base/src-deprecated/org/knime/base/node/rules/RuleEngineNodeModel.java`
- [Table creator](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/io/tablecreator/TableCreatorRpcDataService.java): `org.knime.base/src/org/knime/base/node/io/tablecreator/TableCreatorRpcDataService.java`
- [Flow variables](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/util/flowvariable/FlowVariableResolver.java): `org.knime.base/src/org/knime/base/util/flowvariable/FlowVariableResolver.java`

### Data preparation

- [Table operations](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/manipulator/table/Table.java): `org.knime.base/src/org/knime/base/node/preproc/manipulator/table/Table.java`
- [Missing values](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/MissingCellHandler.java): `org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/MissingCellHandler.java`
- [Moving average](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java): `org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java`
- [Average interpolation](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/timeseries/AverageInterpolationMissingCellHandlerFactory.java): `org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/timeseries/AverageInterpolationMissingCellHandlerFactory.java`

### Analysis nodes

- [Statistics](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/data/statistics/Statistic.java): `org.knime.base/src/org/knime/base/data/statistics/Statistic.java`
- [SOTA clustering](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/mine/sota/logic/SotaManager.java): `org.knime.base/src/org/knime/base/node/mine/sota/logic/SotaManager.java`
- [MDS projection](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/mine/mds/mdsprojection/MDSProjectionManager.java): `org.knime.base/src/org/knime/base/node/mine/mds/mdsprojection/MDSProjectionManager.java`

### File handling

- [Filesystem connectors](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.core.fs.nodes/src/org/knime/filehandling/core/fs/local/node/LocalConnectorNodeParameters.java): `org.knime.filehandling.core.fs.nodes/src/org/knime/filehandling/core/fs/local/node/LocalConnectorNodeParameters.java`
- [File utilities](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/metainfo/FileFolderMetaInfoNodeModel.java): `org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/metainfo/FileFolderMetaInfoNodeModel.java`
- [String to path](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/stringtopath/StringToPathNodeModel.java): `org.knime.filehandling.utility.nodes/src/org/knime/filehandling/utility/nodes/stringtopath/StringToPathNodeModel.java`

### Formatting

- [Date-time formatter](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java): `org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java`
- [Date-time settings](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeSettings.java): `org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeSettings.java`
- [Duration formatter](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java): `org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java`
- [Duration settings](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeSettings.java): `org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeSettings.java`
- [Alignment options](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/viz/format/AlignmentSuggestionOption.java): `org.knime.base/src/org/knime/base/node/viz/format/AlignmentSuggestionOption.java`
- [Box plot data](https://github.com/knime-oss/knime-base/blob/releases/STS/org.knime.base/src/org/knime/base/node/viz/plotter/box/Box.java): `org.knime.base/src/org/knime/base/node/viz/plotter/box/Box.java`

### Other components

- **Workflow author**
- **KNIME platform**

## Connections

- Workflow author → KNIME platform: authors workflow
- KNIME platform → Node collection: provides nodes
- Moving average → Statistics: uses statistics (evidence: `org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/DoubleMovingAverageMissingCellHandler.java`)
- Average interpolation → Missing values: creates handler (evidence: `org.knime.base/src/org/knime/base/node/preproc/pmml/missingval/handlers/timeseries/AverageInterpolationMissingCellHandlerFactory.java`)
- Date-time formatter → Date-time settings: reads settings (evidence: `org.knime.time/src/org/knime/time/node/format/datetimeformatmanager/DateTimeFormatManagerNodeModel.java`)
- Date-time formatter → Alignment options: sets alignment
- Duration formatter → Duration settings: reads settings (evidence: `org.knime.time/src/org/knime/time/node/format/durationperiodformatmanager/DurationPeriodFormatManagerNodeModel.java`)
- Duration formatter → Alignment options: uses alignment
