UML Diagram - mlarizzate/callcenter GitHub Wiki

[Agent|agentStatus:AgentStatus;incomingCalls;attendedCalls|delegateCustomer();getAgentType():AgentType ]
[Agent]->[enum AgentStatus|AVAILABLE;BUSY]
[OperatorAgent]
[SupervisorAgent]
[DirectorAgent]
[Agent]^-[OnHoldIVR|active|addToHoldQueue()]
[<>]^-.-[Agent]
[Agent]^-[OperatorAgent]
[Agent]^-[SupervisorAgent]
[Agent]^-[DirectorAgent]
[Agent]<>1-incomingCalls 0..>[Customer]
[Agent]<>1-attendedCalls 0..
>[Customer]
[Customer|callDuration;holdedTime|createCustomerWithRamdomCallDuration(); generateCustomers()]
[<>;findEmployee();findOnHoldIvr()]^-.-[DefaultCustomerDispatchStrategy]
[Dispatcher|maxSupportedCalls:Integer;maxHoldedTimes:Integer;active:Boolean;agents:ConcurrentLinkedDeque Agent;customersCalls: ConcurrentLinkedDeque Customer; rejectedCustomers: Map Customer RejectReason;callAttendStrategy:CustomerDispatchStrategy; onHoldIVRList:ConcurrentLinkedDeque OnHoldIVR|runOnHoldIvrs();connectAgent();receiveCustomer(); dispatchCall(); rejects(); getRejectedCustomers();start(); getActive()]
[Dispatcher]->[DefaultCustomerDispatchStrategy]
[<>]^-.-[Dispatcher]
[Dispatcher]<>1-agents 0..>[Agent]
[Dispatcher]<>1-customerCalls 0..
>[Customer]
[Dispatcher]<>1-agents 0..*>[OnHoldIVR]
[Dispatcher]->[enum RejectReason|CENTRAL_OVERLOAD; UNAVAILABLE_AGENTS; OTHER_REASON]

Diagram Performed: https://yuml.me/diagram/scruffy/class/draw

⚠️ **GitHub.com Fallback** ⚠️