# zombie12138/orth architecture

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

- Interactive diagram: https://gitdiagram.com/zombie12138/orth
- Repository: https://github.com/zombie12138/orth

## Overview

Orth is a distributed task scheduler: administrators configure jobs in the web console; the admin service schedules and routes triggers to registered executors; executors run handlers and return callbacks and logs. The graph also preserves the console’s operational capabilities, including batch operations, GLUE editing, dashboard, users, and executor groups. The README documents several runtime capabilities not directly shown in sampled code; their nodes use supported source paths, while uncertain internal wiring is omitted.

Main entry points: [`orth-ui/src/App.tsx`](https://github.com/zombie12138/orth/blob/main/orth-ui/src/App.tsx) (Console routes), [`orth-ui/src/api/client.ts`](https://github.com/zombie12138/orth/blob/main/orth-ui/src/api/client.ts) (API client), [`orth-admin/src/main/java/com/abyss/orth/admin/mapper/JobInfoMapper.java`](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/mapper/JobInfoMapper.java) (Persistence mappers), [`orth-ui/src/pages/Logs/index.tsx`](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Logs/index.tsx) (Execution logs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Admin console"]
  node_ui_app["Console routes<br/>[App.tsx]"]
  node_ui_jobs["Job operations<br/>[index.tsx]"]
  node_ui_logs["Execution logs<br/>[index.tsx]"]
  node_ui_glue["GLUE editor<br/>[index.tsx]"]
  node_ui_dashboard["Dashboard<br/>[index.tsx]"]
  node_ui_admin["Groups and users<br/>[index.tsx]"]
  node_ui_client["API client<br/>[client.ts]"]
end

subgraph group_admin["Scheduling control plane"]
  node_job_api["Job API<br/>[JobController.java]"]
  node_job_service["Job management"]
  node_openapi["Executor API"]
  node_admin_biz["Registry and callbacks<br/>[AdminBizImpl.java]"]
  node_schedule["Schedule engine"]
  node_trigger["Trigger and routing<br/>[JobTrigger.java]"]
  node_log_api["Log operations<br/>[LogController.java]"]
  node_executor_biz_client["Executor client<br/>[ExecutorBiz.java]"]
end

subgraph group_executor["Executor runtime"]
  node_executor_server["Executor RPC server<br/>[EmbedServer.java]"]
  node_executor_biz["Executor operations"]
  node_job_thread["Job execution<br/>[JobThread.java]"]
  node_handler["Job handlers<br/>[IJobHandler.java]"]
  node_callback_thread["Trigger callbacks"]
end

subgraph group_state["Persistence and integrations"]
  node_mappers["Persistence mappers<br/>[JobInfoMapper.java]"]
  node_mysql[("MySQL")]
end

node_admin_user(("Administrator"))
node_executor_actor(("Executor instance"))

node_admin_user -->|"uses"| node_ui_app
node_ui_app -->|"routes to"| node_ui_jobs
node_ui_app -->|"routes to"| node_ui_logs
node_ui_app -->|"routes to"| node_ui_glue
node_ui_app -->|"routes to"| node_ui_dashboard
node_ui_app -->|"routes to"| node_ui_admin
node_ui_jobs -->|"requests through"| node_ui_client
node_ui_logs -->|"requests through"| node_ui_client
node_ui_glue -->|"requests through"| node_ui_client
node_ui_dashboard -->|"requests through"| node_ui_client
node_ui_admin -->|"requests through"| node_ui_client
node_ui_client -->|"HTTP requests"| node_job_api
node_job_api -->|"delegates job actions"| node_job_service
node_job_service -->|"reads and writes"| node_mappers
node_mappers -->|"queries"| node_mysql
node_schedule -->|"loads schedules"| node_mappers
node_schedule -->|"dispatches due jobs"| node_trigger
node_trigger -->|"calls executors"| node_executor_biz_client
node_executor_biz_client -->|"RPC requests"| node_executor_server
node_executor_actor -->|"registers and receives triggers"| node_executor_server
node_executor_server -->|"dispatches requests"| node_executor_biz
node_executor_biz -->|"starts job execution"| node_job_thread
node_job_thread -->|"invokes handler"| node_handler
node_job_thread -->|"queues completion"| node_callback_thread
node_callback_thread -->|"posts callbacks"| node_openapi
node_openapi -->|"dispatches registry and callbacks"| node_admin_biz
node_admin_biz -->|"persists registry and results"| node_mappers
node_ui_logs -->|"requests log data"| node_log_api
node_log_api -->|"queries log records"| node_mappers
node_log_api -->|"fetches executor logs"| node_executor_biz_client
node_ui_glue -->|"manages job source"| node_job_api

click node_ui_app "https://github.com/zombie12138/orth/blob/main/orth-ui/src/App.tsx"
click node_ui_jobs "https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Jobs/index.tsx"
click node_ui_logs "https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Logs/index.tsx"
click node_ui_glue "https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/GlueCode/index.tsx"
click node_ui_dashboard "https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Dashboard/index.tsx"
click node_ui_admin "https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/ExecutorGroups/index.tsx"
click node_ui_client "https://github.com/zombie12138/orth/blob/main/orth-ui/src/api/client.ts"
click node_job_api "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/controller/api/JobController.java"
click node_job_service "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/service/impl/JobServiceImpl.java"
click node_openapi "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/openapi/OpenApiController.java"
click node_admin_biz "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/service/impl/AdminBizImpl.java"
click node_schedule "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/thread/JobScheduleHelper.java"
click node_trigger "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/trigger/JobTrigger.java"
click node_log_api "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/controller/api/LogController.java"
click node_executor_server "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/server/EmbedServer.java"
click node_executor_biz "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/openapi/impl/ExecutorBizImpl.java"
click node_job_thread "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/thread/JobThread.java"
click node_handler "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/handler/IJobHandler.java"
click node_callback_thread "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/thread/TriggerCallbackThread.java"
click node_mappers "https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/mapper/JobInfoMapper.java"
click node_executor_biz_client "https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/openapi/ExecutorBiz.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_ui_app,node_ui_jobs,node_ui_logs,node_ui_glue,node_ui_dashboard,node_ui_admin,node_ui_client toneBlue
class node_job_api,node_job_service,node_openapi,node_admin_biz,node_schedule,node_trigger,node_log_api,node_executor_biz_client toneAmber
class node_executor_server,node_executor_biz,node_job_thread,node_handler,node_callback_thread toneMint
class node_mappers,node_mysql toneRose
class node_admin_user,node_executor_actor toneIndigo
```

## Components

### Admin console

- [Console routes](https://github.com/zombie12138/orth/blob/main/orth-ui/src/App.tsx): `orth-ui/src/App.tsx`
- [Job operations](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Jobs/index.tsx): `orth-ui/src/pages/Jobs/index.tsx`
- [Execution logs](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Logs/index.tsx): `orth-ui/src/pages/Logs/index.tsx`
- [GLUE editor](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/GlueCode/index.tsx): `orth-ui/src/pages/GlueCode/index.tsx`
- [Dashboard](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/Dashboard/index.tsx): `orth-ui/src/pages/Dashboard/index.tsx`
- [Groups and users](https://github.com/zombie12138/orth/blob/main/orth-ui/src/pages/ExecutorGroups/index.tsx): `orth-ui/src/pages/ExecutorGroups/index.tsx`
- [API client](https://github.com/zombie12138/orth/blob/main/orth-ui/src/api/client.ts): `orth-ui/src/api/client.ts`

### Scheduling control plane

- [Job API](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/controller/api/JobController.java): `orth-admin/src/main/java/com/abyss/orth/admin/controller/api/JobController.java`
- [Job management](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/service/impl/JobServiceImpl.java): `orth-admin/src/main/java/com/abyss/orth/admin/service/impl/JobServiceImpl.java`
- [Executor API](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/openapi/OpenApiController.java): `orth-admin/src/main/java/com/abyss/orth/admin/scheduler/openapi/OpenApiController.java`
- [Registry and callbacks](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/service/impl/AdminBizImpl.java): `orth-admin/src/main/java/com/abyss/orth/admin/service/impl/AdminBizImpl.java`
- [Schedule engine](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/thread/JobScheduleHelper.java): `orth-admin/src/main/java/com/abyss/orth/admin/scheduler/thread/JobScheduleHelper.java`
- [Trigger and routing](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/scheduler/trigger/JobTrigger.java): `orth-admin/src/main/java/com/abyss/orth/admin/scheduler/trigger/JobTrigger.java`
- [Log operations](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/controller/api/LogController.java): `orth-admin/src/main/java/com/abyss/orth/admin/controller/api/LogController.java`
- [Executor client](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/openapi/ExecutorBiz.java): `orth-core/src/main/java/com/abyss/orth/core/openapi/ExecutorBiz.java`

### Executor runtime

- [Executor RPC server](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/server/EmbedServer.java): `orth-core/src/main/java/com/abyss/orth/core/server/EmbedServer.java`
- [Executor operations](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/openapi/impl/ExecutorBizImpl.java): `orth-core/src/main/java/com/abyss/orth/core/openapi/impl/ExecutorBizImpl.java`
- [Job execution](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/thread/JobThread.java): `orth-core/src/main/java/com/abyss/orth/core/thread/JobThread.java`
- [Job handlers](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/handler/IJobHandler.java): `orth-core/src/main/java/com/abyss/orth/core/handler/IJobHandler.java`
- [Trigger callbacks](https://github.com/zombie12138/orth/blob/main/orth-core/src/main/java/com/abyss/orth/core/thread/TriggerCallbackThread.java): `orth-core/src/main/java/com/abyss/orth/core/thread/TriggerCallbackThread.java`

### Persistence and integrations

- [Persistence mappers](https://github.com/zombie12138/orth/blob/main/orth-admin/src/main/java/com/abyss/orth/admin/mapper/JobInfoMapper.java): `orth-admin/src/main/java/com/abyss/orth/admin/mapper/JobInfoMapper.java`
- **MySQL**

### Other components

- **Administrator**
- **Executor instance**

## Connections

- Administrator → Console routes: uses
- Console routes → Job operations: routes to
- Console routes → Execution logs: routes to
- Console routes → GLUE editor: routes to
- Console routes → Dashboard: routes to
- Console routes → Groups and users: routes to
- Job operations → API client: requests through
- Execution logs → API client: requests through
- GLUE editor → API client: requests through
- Dashboard → API client: requests through
- Groups and users → API client: requests through
- API client → Job API: HTTP requests
- Job API → Job management: delegates job actions
- Job management → Persistence mappers: reads and writes
- Persistence mappers → MySQL: queries
- Schedule engine → Persistence mappers: loads schedules
- Schedule engine → Trigger and routing: dispatches due jobs
- Trigger and routing → Executor client: calls executors
- Executor client → Executor RPC server: RPC requests
- Executor instance → Executor RPC server: registers and receives triggers
- Executor RPC server → Executor operations: dispatches requests
- Executor operations → Job execution: starts job execution
- Job execution → Job handlers: invokes handler
- Job execution → Trigger callbacks: queues completion
- Trigger callbacks → Executor API: posts callbacks
- Executor API → Registry and callbacks: dispatches registry and callbacks
- Registry and callbacks → Persistence mappers: persists registry and results
- Execution logs → Log operations: requests log data
- Log operations → Persistence mappers: queries log records
- Log operations → Executor client: fetches executor logs
- GLUE editor → Job API: manages job source
