117 lines
4.3 KiB
Plaintext
117 lines
4.3 KiB
Plaintext
|
@startuml
|
||
|
package com.iluwatar.claimcheckpattern.producer.calldetails.functions {
|
||
|
class UsageDetailPublisherFunction {
|
||
|
- eventHandlerUtility : EventHandlerUtility<MessageHeader>
|
||
|
- messageHandlerUtility : MessageHandlerUtility<UsageDetail>
|
||
|
+ UsageDetailPublisherFunction()
|
||
|
+ UsageDetailPublisherFunction(messageHandlerUtility : MessageHandlerUtility<UsageDetail>, eventHandlerUtility : EventHandlerUtility<MessageHeader>)
|
||
|
+ run(request : HttpRequestMessage<Optional<String>>, context : ExecutionContext) : HttpResponseMessage
|
||
|
}
|
||
|
}
|
||
|
package com.iluwatar.claimcheckpattern.domain {
|
||
|
class Message<T> {
|
||
|
- messageBody : MessageBody<T>
|
||
|
- messageHeader : MessageHeader
|
||
|
+ Message<T>()
|
||
|
+ getMessageBody() : MessageBody<T>
|
||
|
+ getMessageHeader() : MessageHeader
|
||
|
+ setMessageBody(messageBody : MessageBody<T>)
|
||
|
+ setMessageHeader(messageHeader : MessageHeader)
|
||
|
}
|
||
|
class MessageBody<T> {
|
||
|
- data : List<T>
|
||
|
+ MessageBody<T>()
|
||
|
+ getData() : List<T>
|
||
|
+ setData(data : List<T>)
|
||
|
}
|
||
|
class MessageHeader {
|
||
|
- data : Object
|
||
|
- dataVersion : String
|
||
|
- eventTime : String
|
||
|
- eventType : String
|
||
|
- id : String
|
||
|
- subject : String
|
||
|
- topic : String
|
||
|
+ MessageHeader()
|
||
|
+ getData() : Object
|
||
|
+ getDataVersion() : String
|
||
|
+ getEventTime() : String
|
||
|
+ getEventType() : String
|
||
|
+ getId() : String
|
||
|
+ getSubject() : String
|
||
|
+ getTopic() : String
|
||
|
+ setData(data : Object)
|
||
|
+ setDataVersion(dataVersion : String)
|
||
|
+ setEventTime(eventTime : String)
|
||
|
+ setEventType(eventType : String)
|
||
|
+ setId(id : String)
|
||
|
+ setSubject(subject : String)
|
||
|
+ setTopic(topic : String)
|
||
|
}
|
||
|
class MessageReference {
|
||
|
- dataFileName : String
|
||
|
- dataLocation : String
|
||
|
+ MessageReference()
|
||
|
+ MessageReference(dataLocation : String, dataFileName : String)
|
||
|
+ getDataFileName() : String
|
||
|
+ getDataLocation() : String
|
||
|
+ setDataFileName(dataFileName : String)
|
||
|
+ setDataLocation(dataLocation : String)
|
||
|
}
|
||
|
class UsageCostDetail {
|
||
|
- callCost : double
|
||
|
- dataCost : double
|
||
|
- userId : String
|
||
|
+ UsageCostDetail()
|
||
|
+ getCallCost() : double
|
||
|
+ getDataCost() : double
|
||
|
+ getUserId() : String
|
||
|
+ setCallCost(callCost : double)
|
||
|
+ setDataCost(dataCost : double)
|
||
|
+ setUserId(userId : String)
|
||
|
}
|
||
|
class UsageDetail {
|
||
|
- data : int
|
||
|
- duration : int
|
||
|
- userId : String
|
||
|
+ UsageDetail()
|
||
|
+ getData() : int
|
||
|
+ getDuration() : int
|
||
|
+ getUserId() : String
|
||
|
+ setData(data : int)
|
||
|
+ setDuration(duration : int)
|
||
|
+ setUserId(userId : String)
|
||
|
}
|
||
|
}
|
||
|
package com.iluwatar.claimcheckpattern.utility {
|
||
|
class EventHandlerUtility<T> {
|
||
|
- customEventClient : EventGridPublisherClient<BinaryData>
|
||
|
+ EventHandlerUtility<T>()
|
||
|
+ EventHandlerUtility<T>(customEventClient : EventGridPublisherClient<BinaryData>)
|
||
|
+ publishEvent(customEvent : T, logger : Logger)
|
||
|
}
|
||
|
class MessageHandlerUtility<T> {
|
||
|
- blobServiceClient : BlobServiceClient
|
||
|
+ MessageHandlerUtility<T>()
|
||
|
+ MessageHandlerUtility<T>(blobServiceClient : BlobServiceClient)
|
||
|
+ dropToPersistantStorage(message : Message<T>, logger : Logger)
|
||
|
+ readFromPersistantStorage(messageReference : MessageReference, logger : Logger) : Message<T>
|
||
|
}
|
||
|
}
|
||
|
package com.iluwatar.claimcheckpattern.consumer.callcostprocessor.functions {
|
||
|
class UsageCostProcessorFunction {
|
||
|
- messageHandlerUtilityForUsageCostDetail : MessageHandlerUtility<UsageCostDetail>
|
||
|
- messageHandlerUtilityForUsageDetail : MessageHandlerUtility<UsageDetail>
|
||
|
+ UsageCostProcessorFunction()
|
||
|
+ UsageCostProcessorFunction(messageHandlerUtilityForUsageDetail : MessageHandlerUtility<UsageDetail>, messageHandlerUtilityForUsageCostDetail : MessageHandlerUtility<UsageCostDetail>)
|
||
|
- calculateUsageCostDetails(usageDetailsList : List<UsageDetail>) : List<UsageCostDetail>
|
||
|
+ run(request : HttpRequestMessage<Optional<String>>, context : ExecutionContext) : HttpResponseMessage
|
||
|
}
|
||
|
}
|
||
|
UsageCostProcessorFunction --> "-messageHandlerUtilityForUsageDetail" MessageHandlerUtility
|
||
|
Message --> "-messageBody" MessageBody
|
||
|
UsageDetailPublisherFunction --> "-eventHandlerUtility" EventHandlerUtility
|
||
|
Builder ..+ HttpResponseMessage
|
||
|
UsageDetailPublisherFunction --> "-messageHandlerUtility" MessageHandlerUtility
|
||
|
Message --> "-messageHeader" MessageHeader
|
||
|
@enduml
|