Skip to content

Diagrams

Modules and Packages composition

flowchart LR
    subgraph Core_Layer["Core"]
        subgraph Domain["Domain"]
            A[Entities]
            B[Events]
            C[Result Pattern]
        end

        subgraph Application["Aplication"]
            D[Use Cases]
            E[Services]
            L[Event Manager]
        end
    end
    subgraph EconomyEngine_Layer["EconomyEngine"]
        subgraph test["Packages"]
            H[SQL/hibernate]
            Z[Redis]
            K[Api]
            N[Yaml/files]
        end
    end

    subgraph EconomyGUILib_Layer["EconomyGUILib"]
        subgraph test3["Packages"]
            a[Commands]
            b[Placeholders]
            c[GUI Pannels]
        end
    end

    subgraph Infrastructure_Layer["Infraestructure"]
        subgraph test2["Package adapters"]
            F[Spigot]
            G[Folia]
            M[Paper]
            I[Sponge]
            J[Canvas]
        end
    end

    Infrastructure_Layer -->|Use Module| EconomyEngine_Layer
    EconomyEngine_Layer -->|Use Moudle| Core_Layer
    EconomyEngine_Layer -->|Use Module| EconomyGUILib_Layer

    Application -->|Use Package| Domain

Sequence Diagram Workflow Transactions

sequenceDiagram
  autonumber
  Bukkit/Sponge->>EconomyEngine: Send request transaction
  EconomyEngine ->> Core: Send request
  Core->>UseCase: Send request
  UseCase->>Database: Send request
  Database->>Database: Atomic transaction,TX
   Note right of Database: 🔑 KEY OPERATION: <br/>Atomic Balance Update
  Database-->>UseCase: Rquest Status
  UseCase-->>Core: Request Status
  Note over UseCase: Fire Domain Event <- On Success
  Core-->>EconomyEngine: Request Status
  EconomyEngine-->>Bukkit/Sponge: Request Status

Architecture domain events in distributed systems

Events Arch

    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello mundito!");
        }
    }