workspace extends ../common/moderation-common-model.dsl { name "Moderation score system" description "Moderatino score system is responsible for calculating moderation score for streamers from different resources" !identifiers hierarchical model { !extend streamSystem { streamDetail = container "Stream-detail" { tags "Google Cloud Platform - Kubernetes Engine" "notOwned" technology "Java" mainKafkaCluster.moderationScoreTopic -> this "Provide moderation scores" "Kafka" -> mainKafkaCluster.streamDetailTopic "Provide stream details" "Kafka" } stream = container "Stream" { tags "Google Cloud Platform - Kubernetes Engine" "notOwned" technology "Java" mainKafkaCluster.streamDetailTopic -> this "Get stream details" "Kafka" -> mainKafkaCluster.richFragmentTopic "Send rich fragment" "Kafka" viewer -> this "Start watch" "HTTPS" } } } views { systemLandscape "SystemLandscape" "Moderation score system landscape" { include * autoLayout } systemContext moderationSystem "moderationSystemContext" { include * autoLayout } container moderationSystem "moderationSystemContainer" { include * autoLayout } dynamic moderationSystem "calculate-moderation-score-flow" { title "Calculate moderation score flow" streamer -> streamSystem.streamSignaling streamSystem.streamSignaling -> mainKafkaCluster.streamSignalingStateTopic { { mainKafkaCluster.streamSignalingStateTopic -> moderationSystem.moderationStream } { mainKafkaCluster.streamSignalingStateTopic -> moderationSystem.moderationScoreService } } { { moderationSystem.moderationStream -> mainKafkaCluster.streamHiveResultTopic } { moderationSystem.moderation -> mainKafkaCluster.moderationActionsTopic } } { { mainKafkaCluster.streamHiveResultTopic -> moderationSystem.moderationScoreService } { mainKafkaCluster.moderationActionsTopic -> moderationSystem.moderationScoreService } } moderationSystem.moderationScoreService -> mainKafkaCluster.moderationScoreTopic mainKafkaCluster.moderationScoreTopic -> streamSystem.streamDetail streamSystem.streamDetail -> mainKafkaCluster.streamDetailTopic { { mainKafkaCluster.streamDetailTopic -> streamSystem.stream } { mainKafkaCluster.streamDetailTopic -> recommendationSystem.recommendator } } streamSystem.stream -> mainKafkaCluster.richFragmentTopic mainKafkaCluster.richFragmentTopic -> notificationSystem.richFragment { { notificationSystem.richFragment -> viewer } { viewer -> streamSystem.stream } { viewer -> recommendationSystem.recommendator } } } } }