@startuml
skin rose
skinparam roundcorner 25
rectangle "                     Front End                     "  as network <<$archimate/network>> #white

rectangle "Spring Security"  as security <<$archimate/constraint>> #technology

network -- security

rectangle "Auth Controller"  as AuthController <<$archimate/component>> #application
rectangle "Workflow Controller"  as WorkflowController <<$archimate/component>> #application
rectangle "Archive Controller"  as ArchivesController <<$archimate/component>> #application
rectangle "Manager Controller"  as ManagerController <<$archimate/component>> #application
rectangle "Account Controller"  as AccountController <<$archimate/component>> #application
rectangle "Menu Controller"  as MenuController <<$archimate/component>> #application

security -- AuthController
security -- WorkflowController
security -- ArchivesController
security -- ManagerController
security -- AccountController
security -- MenuController

rectangle "Auth Service"  as AuthService <<$archimate/service>> #business
rectangle "Workflow Service"  as WorkflowService <<$archimate/service>> #business
rectangle "Archive Service"  as ArchivesService <<$archimate/service>> #business
rectangle "Account Service"  as AccountService <<$archimate/service>> #business
rectangle "Menu Service"  as MenuService <<$archimate/service>> #business

rectangle "File Service"  as FileService <<$archimate/service>> #motivation
rectangle "Form Service"  as FormService <<$archimate/service>> #motivation
rectangle "User Service"  as UserService <<$archimate/service>> #motivation

AuthController <-- AuthService
AuthController <-- AccountService
WorkflowController <-- WorkflowService

'WorkflowController <-- FileService

'ArchivesController <-- FileService
ArchivesController <-- ArchivesService

ManagerController <-- ArchivesService
ManagerController <-- FileService
ManagerController <-- AccountService
ManagerController <-- WorkflowService
ManagerController <-- MenuService

AccountController <-- AccountService
'UserInfoController <-- FileService

MenuController <-- MenuService

ArchivesService <-- FileService
ArchivesService <-- FormService

WorkflowService <-- FormService

'package "  DataBase  " {


database "                    MyBatis Mapper Dao                    "  as dao <<$archimate/strategy-capability>> #strategy
database "               MongoDB              "  as MongoDB <<$archimate/strategy-capability>> #strategy
database "                          MySQL                         "  as MySQL <<$archimate/strategy-capability>> #strategy
'}

WorkflowService <-- FileService

AuthService <--- dao
FileService <-- dao
FormService <-- dao
'WorkflowService <--- dao
ArchivesService <--- dao
AccountService <--- dao
MenuService <--- dao

remove ManagerController
remove dao

'remove AuthController
'remove AuthService

'WorkflowController <-- AccountService

'WorkflowService <-- UserService

FormService <-- MongoDB
FileService <-- MongoDB

AuthService <-- UserService
AccountService <-- UserService
AccountService <-- FileService

UserService <-- MySQL
ArchivesService <-- MySQL


MenuService <-- MySQL
AccountService <-- MySQL
AuthService <-- MySQL

remove UserService

@enduml
