# splware/esproc architecture

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

- Interactive diagram: https://gitdiagram.com/splware/esproc
- Repository: https://github.com/splware/esproc

## Overview

This repository combines the esProc SPL runtime with its grid-based IDE and related data tools. The principal workflow is an author editing SPL in the IDE, running it interactively, and inspecting results step by step. Other substantial branches include structured-data and ETL operations, chart rendering, external data-source adapters, parallel file transfer, and VDB storage. The README describes the language and interactive experience; sampled source confirms selected cache, chart, transfer, and persistence behavior, but not the full runtime wiring.

Main entry points: [`src/main/java/com/scudata/dm`](https://github.com/splware/esproc/tree/master/src/main/java/com/scudata/dm) (SPL engine), [`ide/main/java/com/scudata/ide/common/AppFrame.java`](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/common/AppFrame.java) (IDE shell), [`ide/main/java/com/scudata/ide/spl/control/SplEditor.java`](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/control/SplEditor.java) (Grid editor), [`ide/main/java/com/scudata/ide/spl/SheetSpl.java`](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/SheetSpl.java) (SPL sheet)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ide["SPL IDE"]
  node_ide_frame["IDE shell<br/>[AppFrame.java]"]
  node_spl_editor["Grid editor<br/>[SplEditor.java]"]
  node_spl_sheet["SPL sheet<br/>[SheetSpl.java]"]
  node_ide_panels["Execution panels<br/>[PanelSplWatch.java]"]
end

subgraph group_runtime["SPL Runtime"]
  node_dfx_cache["Program cache<br/>[DfxManager.java]"]
  node_engine["SPL engine"]
  node_function_catalog["Function metadata"]
  node_message_manager["Message resources"]
end

subgraph group_data["Data Operations"]
  node_etl_editor["ETL elements"]
  node_datasource_ui["Data-source setup"]
  node_parallel_files["Partition transfer"]
end

subgraph group_integrations["Integrations"]
  node_connector_libs["Data connectors"]
  node_cloud_adapters["Cloud adapters<br/>[ALiClient.java]"]
  node_web_crawl["Web-crawl output<br/>[PagePipeline.java]"]
end

subgraph group_storage["Storage And Charts"]
  node_vdb_ui["VDB editor<br/>[SheetEditor.java]"]
  node_vdb_blocks["VDB block allocator<br/>[BlockManager.java]"]
  node_chart_engine["Chart renderer<br/>[Engine.java]"]
end

node_author(("SPL author"))
node_external_data(("External data services"))

node_author -->|"uses"| node_ide_frame
node_ide_frame -->|"opens editor"| node_spl_editor
node_spl_editor -->|"edits sheet"| node_spl_sheet
node_spl_sheet -->|"shows results"| node_ide_panels
node_dfx_cache -->|"loads programs"| node_engine
node_function_catalog -->|"provides functions"| node_engine
node_datasource_ui -.->|"configures sources"| node_connector_libs
node_connector_libs -.->|"connects to"| node_external_data
node_cloud_adapters -.->|"accesses services"| node_external_data
node_web_crawl -->|"writes crawl results"| node_external_data
node_parallel_files -.->|"transfers files"| node_external_data
node_vdb_ui -->|"edits database"| node_vdb_blocks
node_chart_engine -->|"renders charts"| node_author
node_engine -->|"gets messages"| node_message_manager

click node_ide_frame "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/common/AppFrame.java"
click node_spl_editor "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/control/SplEditor.java"
click node_spl_sheet "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/SheetSpl.java"
click node_ide_panels "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/base/PanelSplWatch.java"
click node_dfx_cache "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/dm/DfxManager.java"
click node_engine "https://github.com/splware/esproc/tree/master/src/main/java/com/scudata/dm"
click node_function_catalog "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/dm/sql/FunInfoManager.java"
click node_etl_editor "https://github.com/splware/esproc/tree/master/ide/main/java/com/scudata/ide/spl/etl/element"
click node_datasource_ui "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/common/dialog/DialogDataSource.java"
click node_connector_libs "https://github.com/splware/esproc/tree/master/importlibs"
click node_cloud_adapters "https://github.com/splware/esproc/blob/master/importlibs/alicloudcli/src/com/scudata/lib/ali/function/ALiClient.java"
click node_web_crawl "https://github.com/splware/esproc/blob/master/importlibs/webcrawlcli/src/com/scudata/lib/extract/function/PagePipeline.java"
click node_parallel_files "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/parallel/PartitionManager.java"
click node_vdb_ui "https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/vdb/SheetEditor.java"
click node_vdb_blocks "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/vdb/BlockManager.java"
click node_chart_engine "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/chart/Engine.java"
click node_message_manager "https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/common/MessageManager.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_ide_frame,node_spl_editor,node_spl_sheet,node_ide_panels toneBlue
class node_dfx_cache,node_engine,node_function_catalog,node_message_manager toneAmber
class node_etl_editor,node_datasource_ui,node_parallel_files toneMint
class node_connector_libs,node_cloud_adapters,node_web_crawl toneRose
class node_vdb_ui,node_vdb_blocks,node_chart_engine,node_author,node_external_data toneIndigo
```

## Components

### SPL IDE

- [IDE shell](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/common/AppFrame.java): `ide/main/java/com/scudata/ide/common/AppFrame.java`
- [Grid editor](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/control/SplEditor.java): `ide/main/java/com/scudata/ide/spl/control/SplEditor.java`
- [SPL sheet](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/SheetSpl.java): `ide/main/java/com/scudata/ide/spl/SheetSpl.java`
- [Execution panels](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/spl/base/PanelSplWatch.java): `ide/main/java/com/scudata/ide/spl/base/PanelSplWatch.java`

### SPL Runtime

- [Program cache](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/dm/DfxManager.java): `src/main/java/com/scudata/dm/DfxManager.java`
- [SPL engine](https://github.com/splware/esproc/tree/master/src/main/java/com/scudata/dm): `src/main/java/com/scudata/dm`
- [Function metadata](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/dm/sql/FunInfoManager.java): `src/main/java/com/scudata/dm/sql/FunInfoManager.java`
- [Message resources](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/common/MessageManager.java): `src/main/java/com/scudata/common/MessageManager.java`

### Data Operations

- [ETL elements](https://github.com/splware/esproc/tree/master/ide/main/java/com/scudata/ide/spl/etl/element): `ide/main/java/com/scudata/ide/spl/etl/element`
- [Data-source setup](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/common/dialog/DialogDataSource.java): `ide/main/java/com/scudata/ide/common/dialog/DialogDataSource.java`
- [Partition transfer](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/parallel/PartitionManager.java): `src/main/java/com/scudata/parallel/PartitionManager.java`

### Integrations

- [Data connectors](https://github.com/splware/esproc/tree/master/importlibs): `importlibs`
- [Cloud adapters](https://github.com/splware/esproc/blob/master/importlibs/alicloudcli/src/com/scudata/lib/ali/function/ALiClient.java): `importlibs/alicloudcli/src/com/scudata/lib/ali/function/ALiClient.java`
- [Web-crawl output](https://github.com/splware/esproc/blob/master/importlibs/webcrawlcli/src/com/scudata/lib/extract/function/PagePipeline.java): `importlibs/webcrawlcli/src/com/scudata/lib/extract/function/PagePipeline.java`

### Storage And Charts

- [VDB editor](https://github.com/splware/esproc/blob/master/ide/main/java/com/scudata/ide/vdb/SheetEditor.java): `ide/main/java/com/scudata/ide/vdb/SheetEditor.java`
- [VDB block allocator](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/vdb/BlockManager.java): `src/main/java/com/scudata/vdb/BlockManager.java`
- [Chart renderer](https://github.com/splware/esproc/blob/master/src/main/java/com/scudata/chart/Engine.java): `src/main/java/com/scudata/chart/Engine.java`

### Other components

- **SPL author**
- **External data services**

## Connections

- SPL author → IDE shell: uses
- IDE shell → Grid editor: opens editor
- Grid editor → SPL sheet: edits sheet
- SPL sheet → Execution panels: shows results
- Program cache → SPL engine: loads programs
- Function metadata → SPL engine: provides functions
- Data-source setup → Data connectors: configures sources
- Data connectors → External data services: connects to
- Cloud adapters → External data services: accesses services
- Web-crawl output → External data services: writes crawl results
- Partition transfer → External data services: transfers files
- VDB editor → VDB block allocator: edits database
- Chart renderer → SPL author: renders charts
- SPL engine → Message resources: gets messages
