# danieloh30/agentic-ai-java-workshop architecture

> Architecture diagram of the GitHub repository danieloh30/agentic-ai-java-workshop, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/danieloh30/agentic-ai-java-workshop
- Repository: https://github.com/danieloh30/agentic-ai-java-workshop

## Overview

This repository is a hands-on workshop for building an enterprise incident-management platform with Java agentic patterns. The user-facing journey is to submit an incident for triage or analysis, receive a recommendation and updated incident status, and—across later exercises—add planning, evidence, voting, event processing, and reliable response controls. The map covers the principal lab generations and documented capabilities. Edges are limited to excerpted service calls and README-described behavior; unsampled internal wiring is left unasserted.

Main entry points: [`lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java) (Incident service), [`part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java`](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java) (Planning service), [`lab/src/main/java/com/incidentmanagement/resource/IncidentManagementResource.java`](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/resource/IncidentManagementResource.java) (Incident API), [`lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java`](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java) (Processing workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Incident Intake"]
  node_incident_api["Incident API"]
  node_incident_service["Incident service"]
  node_incident_record[("Incident record<br/>[IncidentInfo.java]")]
end

subgraph group_agents["Agent Workflows"]
  node_triage_flow["Triage workflow"]
  node_processing_flow["Processing workflow"]
  node_analysis_flow["Analysis workflow"]
  node_specialists["Analysis specialists"]
end

subgraph group_production["Production Processing"]
  node_plan_service["Planning service"]
  node_plan_flow["Plan and execute"]
  node_deployment_evidence["Deployment evidence"]
  node_voting_service["Voting service"]
  node_consensus_flow["Consensus workflow"]
  node_event_processing["Event processing"]
  node_resolution_store[("Resolution outcomes")]
end

subgraph group_reliability["Response Reliability"]
  node_response_worker["Response worker"]
  node_response_policy["Response guardrails"]
  node_approval_service["Approval service"]
  node_approval_record[("Approval proposal")]
  node_evaluation["Quality evaluation"]
end

node_operator(("Incident operator"))

node_operator -.->|"submits incident"| node_incident_api
node_incident_api -.->|"routes request"| node_incident_service
node_incident_service -->|"loads and updates"| node_incident_record
node_incident_service -->|"runs analysis"| node_processing_flow
node_incident_service -->|"runs triage"| node_triage_flow
node_processing_flow -.->|"coordinates specialists"| node_specialists
node_incident_service -.->|"selects analysis"| node_analysis_flow
node_plan_service -->|"runs planning"| node_plan_flow
node_plan_service -->|"summarizes evidence"| node_deployment_evidence
node_voting_service -->|"runs voting"| node_consensus_flow
node_event_processing -.->|"stores outcomes"| node_resolution_store
node_response_worker -.->|"checks recommendations"| node_response_policy
node_approval_service -->|"persists proposals"| node_approval_record
node_operator -.->|"decides proposal"| node_approval_service
node_evaluation -->|"checks recommendations"| node_response_policy

click node_incident_api "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/resource/IncidentManagementResource.java"
click node_incident_service "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java"
click node_incident_record "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/model/IncidentInfo.java"
click node_triage_flow "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/TriageWorkflow.java"
click node_processing_flow "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java"
click node_analysis_flow "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentAnalysisWorkflow.java"
click node_specialists "https://github.com/danieloh30/agentic-ai-java-workshop/tree/main/lab/src/main/java/com/incidentmanagement/agentic/agents"
click node_plan_service "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java"
click node_plan_flow "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/PlanExecuteFlow.java"
click node_deployment_evidence "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/evidence/DeploymentEvidence.java"
click node_voting_service "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/service/VotingIncidentService.java"
click node_consensus_flow "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/ConsensusWorkflow.java"
click node_event_processing "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/messaging/IncidentEventConsumer.java"
click node_resolution_store "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/messaging/ResolutionStore.java"
click node_response_worker "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/service/ResponseWorker.java"
click node_response_policy "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/policy/RecommendationChecks.java"
click node_approval_service "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/solutions/06-hitl-observability/src/main/java/com/incidentmanagement/service/ApprovalService.java"
click node_approval_record "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/solutions/06-hitl-observability/src/main/java/com/incidentmanagement/model/ApprovalProposal.java"
click node_evaluation "https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/service/EvaluationService.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_incident_api,node_incident_service,node_incident_record toneBlue
class node_triage_flow,node_processing_flow,node_analysis_flow,node_specialists toneAmber
class node_plan_service,node_plan_flow,node_deployment_evidence,node_voting_service,node_consensus_flow,node_event_processing,node_resolution_store toneMint
class node_response_worker,node_response_policy,node_approval_service,node_approval_record,node_evaluation toneRose
class node_operator toneIndigo
```

## Components

### Incident Intake

- [Incident API](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/resource/IncidentManagementResource.java): `lab/src/main/java/com/incidentmanagement/resource/IncidentManagementResource.java`
- [Incident service](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java): `lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`
- [Incident record](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/model/IncidentInfo.java): `lab/src/main/java/com/incidentmanagement/model/IncidentInfo.java`

### Agent Workflows

- [Triage workflow](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/TriageWorkflow.java): `lab/src/main/java/com/incidentmanagement/agentic/workflow/TriageWorkflow.java`
- [Processing workflow](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java): `lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java`
- [Analysis workflow](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentAnalysisWorkflow.java): `lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentAnalysisWorkflow.java`
- [Analysis specialists](https://github.com/danieloh30/agentic-ai-java-workshop/tree/main/lab/src/main/java/com/incidentmanagement/agentic/agents): `lab/src/main/java/com/incidentmanagement/agentic/agents`

### Production Processing

- [Planning service](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java): `part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java`
- [Plan and execute](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/PlanExecuteFlow.java): `part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/PlanExecuteFlow.java`
- [Deployment evidence](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/evidence/DeploymentEvidence.java): `part2/lab/src/main/java/com/incidentmanagement/evidence/DeploymentEvidence.java`
- [Voting service](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/service/VotingIncidentService.java): `part2/lab/src/main/java/com/incidentmanagement/service/VotingIncidentService.java`
- [Consensus workflow](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/ConsensusWorkflow.java): `part2/lab/src/main/java/com/incidentmanagement/agentic/workflow/ConsensusWorkflow.java`
- [Event processing](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/messaging/IncidentEventConsumer.java): `part2/lab/src/main/java/com/incidentmanagement/messaging/IncidentEventConsumer.java`
- [Resolution outcomes](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part2/lab/src/main/java/com/incidentmanagement/messaging/ResolutionStore.java): `part2/lab/src/main/java/com/incidentmanagement/messaging/ResolutionStore.java`

### Response Reliability

- [Response worker](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/service/ResponseWorker.java): `part3/lab/src/main/java/com/incidentmanagement/service/ResponseWorker.java`
- [Response guardrails](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/policy/RecommendationChecks.java): `part3/lab/src/main/java/com/incidentmanagement/policy/RecommendationChecks.java`
- [Approval service](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/solutions/06-hitl-observability/src/main/java/com/incidentmanagement/service/ApprovalService.java): `solutions/06-hitl-observability/src/main/java/com/incidentmanagement/service/ApprovalService.java`
- [Approval proposal](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/solutions/06-hitl-observability/src/main/java/com/incidentmanagement/model/ApprovalProposal.java): `solutions/06-hitl-observability/src/main/java/com/incidentmanagement/model/ApprovalProposal.java`
- [Quality evaluation](https://github.com/danieloh30/agentic-ai-java-workshop/blob/main/part3/lab/src/main/java/com/incidentmanagement/service/EvaluationService.java): `part3/lab/src/main/java/com/incidentmanagement/service/EvaluationService.java`

### Other components

- **Incident operator**

## Connections

- Incident operator → Incident API: submits incident
- Incident API → Incident service: routes request
- Incident service → Incident record: loads and updates (evidence: `lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`)
- Incident service → Processing workflow: runs analysis (evidence: `lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`)
- Incident service → Triage workflow: runs triage (evidence: `lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`)
- Processing workflow → Analysis specialists: coordinates specialists (evidence: `lab/src/main/java/com/incidentmanagement/agentic/workflow/IncidentProcessingWorkflow.java`)
- Incident service → Analysis workflow: selects analysis (evidence: `lab/src/main/java/com/incidentmanagement/service/IncidentManagementService.java`)
- Planning service → Plan and execute: runs planning (evidence: `part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java`)
- Planning service → Deployment evidence: summarizes evidence (evidence: `part2/lab/src/main/java/com/incidentmanagement/service/PlanIncidentService.java`)
- Voting service → Consensus workflow: runs voting (evidence: `part2/lab/src/main/java/com/incidentmanagement/service/VotingIncidentService.java`)
- Event processing → Resolution outcomes: stores outcomes
- Response worker → Response guardrails: checks recommendations
- Approval service → Approval proposal: persists proposals (evidence: `solutions/06-hitl-observability/src/main/java/com/incidentmanagement/service/ApprovalService.java`)
- Incident operator → Approval service: decides proposal
- Quality evaluation → Response guardrails: checks recommendations (evidence: `part3/lab/src/main/java/com/incidentmanagement/service/EvaluationService.java`)
