@startuml filling_data_am

title "Заполнение данные о клиенте А/М"


' loads the package bootstrap
!include <C4/C4_Container>
!include <C4/C4_Component>
!include https://raw.githubusercontent.com/tmorin/plantuml-libs/master/distribution/eventstorming/single.puml


skinparam svgLinkTarget _blank

LAYOUT_LEFT_RIGHT()


Container_Boundary(container, "") {
Aggregate('Task1', 'Task')
Policy('ДолжнаБытьСозданаЗадачаНаполнениеРаботИЗЧ', 'Должна быть создана задача Наполнение работ и ЗЧ')
Command('СоздатьЗадачу', 'Создать задачу')
DomainEvent('ЗадачаНаполнениеРаботиЗЧСоздана','Задача "Наполнение работ и ЗЧ создана"')
Aggregate('Task2', 'Task')  
}

System('kafka_serviceNeedTask', 'kafka_serviceNeedTask')
DomainEvent('ЗадачаДанныеОКлиентИАвтоЗакрыта','Задача "Данные о клиенте и авто закрыта"')

'yellow
Person('СПРК1', 'СПРК')
Person('СПРК2', 'СПРК')


'blue
Command('ЗаполнитьГалочкуКлиентЯвляетсяПлательщиком', 'Заполнить галочку Клиент является плательщиком')
Command('УбратьГалочкуКлиентЯвляетсяПлательщиком', 'Убрать галочку Клиент является плательщиком')
Command('УказатьПлательщика', 'Указать плательщика')
Command('УказатьАвтомобиль', 'Указать автомобиль')
Command('ЗакрытьЗадачу', 'Закрыть задачу')



DomainEvent('ОткрытЭкранШагДанныеОКлиенте', 'Открыт экран/шаг "Данные о клиенте"')
DomainEvent('ПлательщикУказан','Плательщик указан')
DomainEvent('AMУказан','A/M указан')


'pink

System('changePayerlnNeed', 'changePayerlnNeed')
System('updateNeed', 'updateNeed')



'fiolet
Policy('НеобходимоУказатьПлательщика', 'Необходимо указать плательщика')
Policy('НеобходимоУказатьАвтомобиль', 'Необходимо указать автомобиль')
Policy('ДолжнаБытьЗакрытаЗадачаДанныеОКлиентеИАвто', 'Должна быть закрыта задача Данные о клиенте и авто')


'grenn
UserInterface('ЭкранДанныеОКлиенте', 'Экран данные о клиенте')

Aggregate('Need1', 'Need')
Aggregate('Need2', 'Need')



ЭкранДанныеОКлиенте--ОткрытЭкранШагДанныеОКлиенте
ОткрытЭкранШагДанныеОКлиенте--СПРК2
СПРК2--НеобходимоУказатьПлательщика
НеобходимоУказатьПлательщика--ЗаполнитьГалочкуКлиентЯвляетсяПлательщиком
НеобходимоУказатьПлательщика--УбратьГалочкуКлиентЯвляетсяПлательщиком
УбратьГалочкуКлиентЯвляетсяПлательщиком--УказатьПлательщика
ЗаполнитьГалочкуКлиентЯвляетсяПлательщиком--changePayerlnNeed
УказатьПлательщика--changePayerlnNeed
changePayerlnNeed--ПлательщикУказан

ПлательщикУказан .. Need1
Need1 .. СПРК1

СПРК1--НеобходимоУказатьАвтомобиль
НеобходимоУказатьАвтомобиль--УказатьАвтомобиль
УказатьАвтомобиль--updateNeed
updateNeed--AMУказан

AMУказан .. Need2
Need2 .. ДолжнаБытьЗакрытаЗадачаДанныеОКлиентеИАвто

ДолжнаБытьЗакрытаЗадачаДанныеОКлиентеИАвто--ЗакрытьЗадачу
ЗакрытьЗадачу--kafka_serviceNeedTask
kafka_serviceNeedTask--ЗадачаДанныеОКлиентИАвтоЗакрыта

ЗадачаДанныеОКлиентИАвтоЗакрыта .. Task1
Task1 .. ДолжнаБытьСозданаЗадачаНаполнениеРаботИЗЧ

ДолжнаБытьСозданаЗадачаНаполнениеРаботИЗЧ--СоздатьЗадачу
СоздатьЗадачу--ЗадачаНаполнениеРаботиЗЧСоздана
AMУказан-->kafka_serviceNeedTask

ЗадачаНаполнениеРаботиЗЧСоздана .. Task2


@enduml


