# jku-isse/factory-in-a-box architecture

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

- Interactive diagram: https://gitdiagram.com/jku-isse/factory-in-a-box
- Repository: https://github.com/jku-isse/factory-in-a-box

## Overview

FIAB is a factory-in-a-box shop-floor control system: a process is configured and deployed, planned across available machines, executed by machine and transport actors, and monitored through order and machine status/history. The tree and README document these product capabilities; sampled source confirms order-to-machine mapping publishes order events and the capability tool reads capability files and sends OPC UA method calls. Other subsystem wiring is inferred only at the level supported by names and documentation; the excerpts do not establish detailed call paths.

Main entry points: [`FIABvirtualplotter/src/main/java/fiab/capabilityTool/tool/CapabilityManagerActor.java`](https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/tool/CapabilityManagerActor.java) (Capability manager), [`MES/FIAB/src/main/java/fiab/mes/opcua`](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/opcua) (OPC UA wrappers), [`FIABvirtualplotter/src/main/java/fiab/capabilityTool/opcua/CapabilityManagerClient.java`](https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/opcua/CapabilityManagerClient.java) (Capability OPC UA client), [`MES/FIAB/src/main/java/fiab/mes/eventbus/OrderEventBus.java`](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/eventbus/OrderEventBus.java) (Order event bus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orders["Orders and planning"]
  node_mes["MES startup"]
  node_planner["Order planner"]
  node_mapping["Machine-order mapping"]
  node_ordersvc["Order actors"]
  node_orderevents["Order event bus<br/>[OrderEventBus.java]"]
  node_history["History tracker"]
end

subgraph group_integration["Machine integration"]
  node_discovery["Machine discovery"]
  node_wrappers["OPC UA wrappers"]
  node_transport["Transport coordination"]
  node_machineactors["Machine actors"]
end

subgraph group_equipment["Shop-floor equipment"]
  node_turntable["Turntable runtime"]
  node_plotter["Plotter runtime"]
  node_iostation["I/O station runtime"]
  node_plc["PLC functional units"]
end

subgraph group_interfaces["Operator interfaces"]
  node_rest["REST endpoints"]
  node_frontend["Shop-floor dashboard"]
end

subgraph group_capability["Capability configuration"]
  node_capapp["Capability manager app"]
  node_capmanager["Capability manager"]
  node_capclient["Capability OPC UA client"]
end

node_operator(("Operator"))
node_editor(("Process editor"))
node_equipment{{"Physical machines"}}
node_opcua{{"OPC UA services"}}

node_operator -->|"configures process"| node_editor
node_editor -->|"deploys order"| node_ordersvc
node_operator -->|"views progress"| node_frontend
node_frontend -->|"requests status"| node_rest
node_mes -->|"starts shop floor"| node_planner
node_planner -->|"assigns machines"| node_mapping
node_mapping -->|"publishes order events"| node_orderevents
node_ordersvc -.->|"publishes order events"| node_orderevents
node_history -.->|"tracks events"| node_orderevents
node_discovery -.->|"discovers capabilities"| node_wrappers
node_transport -.->|"coordinates transport"| node_machineactors
node_machineactors -.->|"uses OPC UA"| node_wrappers
node_wrappers -.->|"communicates with"| node_equipment
node_equipment -.->|"runs turntable"| node_turntable
node_equipment -.->|"runs plotting"| node_plotter
node_equipment -.->|"runs I/O stations"| node_iostation
node_equipment -.->|"runs functional units"| node_plc
node_capapp -->|"starts manager"| node_capmanager
node_capmanager -->|"creates clients"| node_capclient
node_capclient -->|"calls capability method"| node_opcua
node_capmanager -->|"sends capability value"| node_capclient

click node_mes "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/ShopfloorStartup.java"
click node_rest "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/restendpoint"
click node_planner "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/planer/actor/OrderPlanningActor.java"
click node_mapping "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/planer/actor/MachineOrderMappingManager.java"
click node_ordersvc "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/order/actor"
click node_orderevents "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/eventbus/OrderEventBus.java"
click node_history "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/general/HistoryTracker.java"
click node_discovery "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/opcua/CapabilityDiscoveryActor.java"
click node_wrappers "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/opcua"
click node_transport "https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/transport/actor/transportsystem/TransportSystemCoordinatorActor.java"
click node_machineactors "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/machine/actor"
click node_turntable "https://github.com/jku-isse/factory-in-a-box/tree/master/FIABturntable/src/main/java/fiab/turntable"
click node_plotter "https://github.com/jku-isse/factory-in-a-box/tree/master/FIABvirtualplotter/src/main/java/fiab/machine/plotter"
click node_iostation "https://github.com/jku-isse/factory-in-a-box/tree/master/FIABiostation/src/main/java/fiab/machine/iostation"
click node_plc "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/plc/javafunctionalunit/src/main/java/functionalUnits"
click node_frontend "https://github.com/jku-isse/factory-in-a-box/tree/master/MES/akkashopfloordemo/shopfloor-angular-frontend/shopfloorfrontend/src/app"
click node_capapp "https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/CapabilityManagerApplication.java"
click node_capmanager "https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/tool/CapabilityManagerActor.java"
click node_capclient "https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/opcua/CapabilityManagerClient.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_mes,node_planner,node_mapping,node_ordersvc,node_orderevents,node_history toneBlue
class node_discovery,node_wrappers,node_transport,node_machineactors toneAmber
class node_turntable,node_plotter,node_iostation,node_plc toneMint
class node_rest,node_frontend toneRose
class node_capapp,node_capmanager,node_capclient,node_operator,node_editor,node_equipment,node_opcua toneIndigo
```

## Components

### Orders and planning

- [MES startup](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/ShopfloorStartup.java): `MES/FIAB/src/main/java/fiab/mes/ShopfloorStartup.java`
- [Order planner](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/planer/actor/OrderPlanningActor.java): `MES/FIAB/src/main/java/fiab/mes/planer/actor/OrderPlanningActor.java`
- [Machine-order mapping](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/planer/actor/MachineOrderMappingManager.java): `MES/FIAB/src/main/java/fiab/mes/planer/actor/MachineOrderMappingManager.java`
- [Order actors](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/order/actor): `MES/FIAB/src/main/java/fiab/mes/order/actor`
- [Order event bus](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/eventbus/OrderEventBus.java): `MES/FIAB/src/main/java/fiab/mes/eventbus/OrderEventBus.java`
- [History tracker](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/general/HistoryTracker.java): `MES/FIAB/src/main/java/fiab/mes/general/HistoryTracker.java`

### Machine integration

- [Machine discovery](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/opcua/CapabilityDiscoveryActor.java): `MES/FIAB/src/main/java/fiab/mes/opcua/CapabilityDiscoveryActor.java`
- [OPC UA wrappers](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/opcua): `MES/FIAB/src/main/java/fiab/mes/opcua`
- [Transport coordination](https://github.com/jku-isse/factory-in-a-box/blob/master/MES/FIAB/src/main/java/fiab/mes/transport/actor/transportsystem/TransportSystemCoordinatorActor.java): `MES/FIAB/src/main/java/fiab/mes/transport/actor/transportsystem/TransportSystemCoordinatorActor.java`
- [Machine actors](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/machine/actor): `MES/FIAB/src/main/java/fiab/mes/machine/actor`

### Shop-floor equipment

- [Turntable runtime](https://github.com/jku-isse/factory-in-a-box/tree/master/FIABturntable/src/main/java/fiab/turntable): `FIABturntable/src/main/java/fiab/turntable`
- [Plotter runtime](https://github.com/jku-isse/factory-in-a-box/tree/master/FIABvirtualplotter/src/main/java/fiab/machine/plotter): `FIABvirtualplotter/src/main/java/fiab/machine/plotter`
- [I/O station runtime](https://github.com/jku-isse/factory-in-a-box/tree/master/FIABiostation/src/main/java/fiab/machine/iostation): `FIABiostation/src/main/java/fiab/machine/iostation`
- [PLC functional units](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/plc/javafunctionalunit/src/main/java/functionalUnits): `MES/plc/javafunctionalunit/src/main/java/functionalUnits`

### Operator interfaces

- [REST endpoints](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/FIAB/src/main/java/fiab/mes/restendpoint): `MES/FIAB/src/main/java/fiab/mes/restendpoint`
- [Shop-floor dashboard](https://github.com/jku-isse/factory-in-a-box/tree/master/MES/akkashopfloordemo/shopfloor-angular-frontend/shopfloorfrontend/src/app): `MES/akkashopfloordemo/shopfloor-angular-frontend/shopfloorfrontend/src/app`

### Capability configuration

- [Capability manager app](https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/CapabilityManagerApplication.java): `FIABvirtualplotter/src/main/java/fiab/capabilityTool/CapabilityManagerApplication.java`
- [Capability manager](https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/tool/CapabilityManagerActor.java): `FIABvirtualplotter/src/main/java/fiab/capabilityTool/tool/CapabilityManagerActor.java`
- [Capability OPC UA client](https://github.com/jku-isse/factory-in-a-box/blob/master/FIABvirtualplotter/src/main/java/fiab/capabilityTool/opcua/CapabilityManagerClient.java): `FIABvirtualplotter/src/main/java/fiab/capabilityTool/opcua/CapabilityManagerClient.java`

### Other components

- **Operator**
- **Process editor**
- **Physical machines**
- **OPC UA services**

## Connections

- Operator → Process editor: configures process
- Process editor → Order actors: deploys order
- Operator → Shop-floor dashboard: views progress
- Shop-floor dashboard → REST endpoints: requests status
- MES startup → Order planner: starts shop floor
- Order planner → Machine-order mapping: assigns machines
- Machine-order mapping → Order event bus: publishes order events
- Order actors → Order event bus: publishes order events
- History tracker → Order event bus: tracks events
- Machine discovery → OPC UA wrappers: discovers capabilities
- Transport coordination → Machine actors: coordinates transport
- Machine actors → OPC UA wrappers: uses OPC UA
- OPC UA wrappers → Physical machines: communicates with
- Physical machines → Turntable runtime: runs turntable
- Physical machines → Plotter runtime: runs plotting
- Physical machines → I/O station runtime: runs I/O stations
- Physical machines → PLC functional units: runs functional units
- Capability manager app → Capability manager: starts manager
- Capability manager → Capability OPC UA client: creates clients
- Capability OPC UA client → OPC UA services: calls capability method
- Capability manager → Capability OPC UA client: sends capability value
