academia/docs/architecture/diagrams/03-sequence-enrollment.svg

1 line
34 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="1440px" preserveAspectRatio="none" style="width:1848px;height:1440px;background:#FFFFFF;" version="1.1" viewBox="0 0 1848 1440" width="1848px" zoomAndPan="magnify"><title>Secuencia: Inscripci&#243;n de Estudiante en Materia</title><defs/><g><text fill="#000000" font-family="Verdana" font-size="22" font-weight="bold" lengthAdjust="spacing" textLength="598.2539" x="623.478" y="35.4209">Secuencia: Inscripci&#243;n de Estudiante en Materia</text><g><title>Frontend</title><rect fill="#FFFFFF" height="1123.0469" style="stroke:#000000;stroke-width:1;" width="10" x="257.9341" y="218.3047"/></g><g><title>API GraphQL</title><rect fill="#FFFFFF" height="1034.5156" style="stroke:#000000;stroke-width:1;" width="10" x="442.9404" y="262.5703"/></g><g><title>EnrollStudentHandler</title><rect fill="#FFFFFF" height="976.25" style="stroke:#000000;stroke-width:1;" width="10" x="761.9502" y="291.7031"/></g><g><title>EnrollmentDomainService</title><rect fill="#FFFFFF" height="438.9922" style="stroke:#000000;stroke-width:1;" width="10" x="1069.731" y="640.1641"/></g><g><title>StudentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1281.8208" y="363.9688"/></g><g><title>SubjectRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1454.6167" y="480.5"/></g><g><title>EnrollmentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1638.0732" y="1151.4219"/></g><rect fill="#FFFFFF" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1177.9805" x="15" y="712.4297"/><rect fill="#FFFFFF" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1177.9805" x="15" y="917.3594"/><g><title>Estudiante</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="61.4165" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="65" x2="65" y1="128.9063" y2="1359.3516"/></g><g><title>Frontend</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="258.9341" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="262.2549" x2="262.2549" y1="128.9063" y2="1359.3516"/></g><g><title>API GraphQL</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="443.9404" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="447.1636" x2="447.1636" y1="128.9063" y2="1359.3516"/></g><g><title>EnrollStudentHandler</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="762.9502" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="766.9224" x2="766.9224" y1="128.9063" y2="1359.3516"/></g><g><title>EnrollmentDomainService</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="1070.731" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1074.4814" x2="1074.4814" y1="128.9063" y2="1359.3516"/></g><g><title>StudentRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="1282.8208" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1286.729" x2="1286.729" y1="128.9063" y2="1359.3516"/></g><g><title>SubjectRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="1455.6167" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1458.9126" x2="1458.9126" y1="128.9063" y2="1359.3516"/></g><g><title>EnrollmentRepository</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="1639.0732" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1642.3208" x2="1642.3208" y1="128.9063" y2="1359.3516"/></g><g><title>SQL Server</title><rect fill="#000000" fill-opacity="0.00000" height="1230.4453" width="8" x="1790.1768" y="128.9063"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:5,5;" x1="1794.1436" x2="1794.1436" y1="128.9063" y2="1359.3516"/></g><g class="participant participant-head" data-participant="user"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="74.833" x="25" y="125.6045">Estudiante</text><ellipse cx="65.4165" cy="60.6094" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M65.4165,68.6094 L65.4165,95.6094 M52.4165,76.6094 L78.4165,76.6094 M65.4165,95.6094 L52.4165,110.6094 M65.4165,95.6094 L78.4165,110.6094" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-participant="user"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="74.833" x="25" y="1371.3467">Estudiante</text><ellipse cx="65.4165" cy="1383.6484" fill="#FFFFFF" rx="8" ry="8" style="stroke:#000000;stroke-width:1;"/><path d="M65.4165,1391.6484 L65.4165,1418.6484 M52.4165,1399.6484 L78.4165,1399.6484 M65.4165,1418.6484 L52.4165,1433.6484 M65.4165,1418.6484 L78.4165,1433.6484" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-head" data-participant="frontend"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="79.3584" x="223.2549" y="81.3125"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63.1094" x="231.3794" y="101.3076">Frontend</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="65.3584" x="230.2549" y="117.6045">(Angular)</text></g><g class="participant participant-tail" data-participant="frontend"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="79.3584" x="223.2549" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63.1094" x="231.3794" y="1378.3467">Frontend</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="65.3584" x="230.2549" y="1394.6436">(Angular)</text></g><g class="participant participant-head" data-participant="api"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="119.5537" x="388.1636" y="81.3125"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="88.3613" x="403.7598" y="101.3076">API GraphQL</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105.5537" x="395.1636" y="117.6045">(HotChocolate)</text></g><g class="participant participant-tail" data-participant="api"><rect fill="#F8F9FA" height="46.5938" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="119.5537" x="388.1636" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="88.3613" x="403.7598" y="1378.3467">API GraphQL</text><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="105.5537" x="395.1636" y="1394.6436">(HotChocolate)</text></g><g class="participant participant-head" data-participant="handler"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="164.0557" x="684.9224" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="150.0557" x="691.9224" y="117.6045">EnrollStudentHandler</text></g><g class="participant participant-tail" data-participant="handler"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="164.0557" x="684.9224" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="150.0557" x="691.9224" y="1378.3467">EnrollStudentHandler</text></g><g class="participant participant-head" data-participant="domainService"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="196.499" x="976.4814" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="182.499" x="983.4814" y="117.6045">EnrollmentDomainService</text></g><g class="participant participant-tail" data-participant="domainService"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="196.499" x="976.4814" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="182.499" x="983.4814" y="1378.3467">EnrollmentDomainService</text></g><g class="participant participant-head" data-participant="studentRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="144.1836" x="1214.729" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="130.1836" x="1221.729" y="117.6045">StudentRepository</text></g><g class="participant participant-tail" data-participant="studentRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="144.1836" x="1214.729" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="130.1836" x="1221.729" y="1378.3467">StudentRepository</text></g><g class="participant participant-head" data-participant="subjectRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="141.4082" x="1388.9126" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="127.4082" x="1395.9126" y="117.6045">SubjectRepository</text></g><g class="participant participant-tail" data-participant="subjectRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="141.4082" x="1388.9126" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="127.4082" x="1395.9126" y="1378.3467">SubjectRepository</text></g><g class="participant participant-head" data-participant="enrollRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="165.5049" x="1560.3208" y="97.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="151.5049" x="1567.3208" y="117.6045">EnrollmentRepository</text></g><g class="participant participant-tail" data-participant="enrollRepo"><rect fill="#F8F9FA" height="30.2969" rx="2.5" ry="2.5" style="stroke:#495057;stroke-width:1;" width="165.5049" x="1560.3208" y="1358.3516"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="151.5049" x="1567.3208" y="1378.3467">EnrollmentRepository</text></g><g class="participant participant-head" data-participant="db"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="78.0664" x="1752.1436" y="125.6045">SQL Server</text><path d="M1776.1768,76.6094 C1776.1768,66.6094 1794.1768,66.6094 1794.1768,66.6094 C1794.1768,66.6094 1812.1768,66.6094 1812.1768,76.6094 L1812.1768,102.6094 C1812.1768,112.6094 1794.1768,112.6094 1794.1768,112.6094 C1794.1768,112.6094 1776.1768,112.6094 1776.1768,102.6094 L1776.1768,76.6094" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1776.1768,76.6094 C1776.1768,86.6094 1794.1768,86.6094 1794.1768,86.6094 C1794.1768,86.6094 1812.1768,86.6094 1812.1768,76.6094" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g class="participant participant-tail" data-participant="db"><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="78.0664" x="1752.1436" y="1371.3467">SQL Server</text><path d="M1776.1768,1384.6484 C1776.1768,1374.6484 1794.1768,1374.6484 1794.1768,1374.6484 C1794.1768,1374.6484 1812.1768,1374.6484 1812.1768,1384.6484 L1812.1768,1410.6484 C1812.1768,1420.6484 1794.1768,1420.6484 1794.1768,1420.6484 C1794.1768,1420.6484 1776.1768,1420.6484 1776.1768,1410.6484 L1776.1768,1384.6484" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1776.1768,1384.6484 C1776.1768,1394.6484 1794.1768,1394.6484 1794.1768,1394.6484 C1794.1768,1394.6484 1812.1768,1394.6484 1812.1768,1384.6484" fill="none" style="stroke:#000000;stroke-width:1;"/></g><g><title>Frontend</title><rect fill="#FFFFFF" height="1123.0469" style="stroke:#000000;stroke-width:1;" width="10" x="257.9341" y="218.3047"/></g><g><title>API GraphQL</title><rect fill="#FFFFFF" height="1034.5156" style="stroke:#000000;stroke-width:1;" width="10" x="442.9404" y="262.5703"/></g><g><title>EnrollStudentHandler</title><rect fill="#FFFFFF" height="976.25" style="stroke:#000000;stroke-width:1;" width="10" x="761.9502" y="291.7031"/></g><g><title>EnrollmentDomainService</title><rect fill="#FFFFFF" height="438.9922" style="stroke:#000000;stroke-width:1;" width="10" x="1069.731" y="640.1641"/></g><g><title>StudentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1281.8208" y="363.9688"/></g><g><title>SubjectRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1454.6167" y="480.5"/></g><g><title>EnrollmentRepository</title><rect fill="#FFFFFF" height="87.3984" style="stroke:#000000;stroke-width:1;" width="10" x="1638.0732" y="1151.4219"/></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1836.21" x="5" y="159.4727"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="159.4727" y2="159.4727"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="162.4727" y2="162.4727"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="189.8999" x="828.155" y="148.9063"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="171.374" x="834.155" y="164.9731">Solicitud de Inscripci&#243;n</text><g class="message" data-participant-1="user" data-participant-2="frontend"><polygon fill="#000000" points="245.9341,214.3047,255.9341,218.3047,245.9341,222.3047,249.9341,218.3047" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="65.4165" x2="251.9341" y1="218.3047" y2="218.3047"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="124.7061" x="99.3223" y="198.106">Selecciona materia</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="157.4473" x="82.9517" y="213.2388">y hace clic en "Inscribir"</text></g><g class="message" data-participant-1="frontend" data-participant-2="api"><polygon fill="#000000" points="430.9404,258.5703,440.9404,262.5703,430.9404,266.5703,434.9404,262.5703" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="267.9341" x2="436.9404" y1="262.5703" y2="262.5703"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="156.0063" x="277.4341" y="242.3716">mutation enrollStudent(</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="134.3228" x="292.4082" y="257.5044">studentId, subjectId)</text></g><g class="message" data-participant-1="api" data-participant-2="handler"><polygon fill="#000000" points="749.9502,287.7031,759.9502,291.7031,749.9502,295.7031,753.9502,291.7031" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="452.9404" x2="755.9502" y1="291.7031" y2="291.7031"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="210.9517" x="501.9695" y="286.6372">Handle(EnrollStudentCommand)</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1836.21" x="5" y="320.2695"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="320.2695" y2="320.2695"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="323.2695" y2="323.2695"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="163.1382" x="841.5359" y="309.7031"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="144.6123" x="847.5359" y="325.77">Obtenci&#243;n de Datos</text><g class="message" data-participant-1="handler" data-participant-2="studentRepo"><polygon fill="#000000" points="1269.8208,359.9688,1279.8208,363.9688,1269.8208,367.9688,1273.8208,363.9688" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="771.9502" x2="1275.8208" y1="363.9688" y2="363.9688"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="270.0864" x="891.8423" y="358.9028">GetByIdWithEnrollmentsAsync(studentId)</text></g><g class="message" data-participant-1="studentRepo" data-participant-2="db"><polygon fill="#000000" points="1782.1768,389.1016,1792.1768,393.1016,1782.1768,397.1016,1786.1768,393.1016" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1291.8208" x2="1788.1768" y1="393.1016" y2="393.1016"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="201.1509" x="1442.4233" y="388.0356">SELECT Student + Enrollments</text></g><g class="message" data-participant-1="db" data-participant-2="studentRepo"><polygon fill="#000000" points="1302.8208,418.2344,1292.8208,422.2344,1302.8208,426.2344,1298.8208,422.2344" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1296.8208" x2="1793.1768" y1="422.2344" y2="422.2344"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="84.5889" x="1500.7043" y="417.1685">Student data</text></g><g class="message" data-participant-1="studentRepo" data-participant-2="handler"><polygon fill="#000000" points="782.9502,447.3672,772.9502,451.3672,782.9502,455.3672,778.9502,451.3672" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1285.8208" y1="451.3672" y2="451.3672"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="51.1748" x="1003.7981" y="446.3013">Student</text></g><g class="message" data-participant-1="handler" data-participant-2="subjectRepo"><polygon fill="#000000" points="1442.6167,476.5,1452.6167,480.5,1442.6167,484.5,1446.6167,480.5" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="771.9502" x2="1448.6167" y1="480.5" y2="480.5"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="159.9609" x="1033.303" y="475.4341">GetByIdAsync(subjectId)</text></g><g class="message" data-participant-1="subjectRepo" data-participant-2="db"><polygon fill="#000000" points="1782.1768,505.6328,1792.1768,509.6328,1782.1768,513.6328,1786.1768,509.6328" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1464.6167" x2="1788.1768" y1="509.6328" y2="509.6328"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="101.6704" x="1578.5615" y="504.5669">SELECT Subject</text></g><g class="message" data-participant-1="db" data-participant-2="subjectRepo"><polygon fill="#000000" points="1475.6167,534.7656,1465.6167,538.7656,1475.6167,542.7656,1471.6167,538.7656" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1469.6167" x2="1793.1768" y1="538.7656" y2="538.7656"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="82.0117" x="1588.3909" y="533.6997">Subject data</text></g><g class="message" data-participant-1="subjectRepo" data-participant-2="handler"><polygon fill="#000000" points="782.9502,563.8984,772.9502,567.8984,782.9502,571.8984,778.9502,567.8984" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1458.6167" y1="567.8984" y2="567.8984"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="48.5977" x="1091.4846" y="562.8325">Subject</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1836.21" x="5" y="596.4648"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="596.4648" y2="596.4648"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="599.4648" y2="599.4648"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="257.1724" x="794.5188" y="585.8984"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="238.6465" x="800.5188" y="601.9653">Validaci&#243;n de Reglas de Negocio</text><g class="message" data-participant-1="handler" data-participant-2="domainService"><polygon fill="#000000" points="1057.731,636.1641,1067.731,640.1641,1057.731,644.1641,1061.731,640.1641" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="771.9502" x2="1063.731" y1="640.1641" y2="640.1641"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="239.5923" x="801.0444" y="635.0981">ValidateEnrollment(student, subject)</text></g><g class="message" data-participant-1="domainService" data-participant-2="domainService"><line style="stroke:#000000;stroke-width:1;" x1="1079.731" x2="1121.731" y1="684.4297" y2="684.4297"/><line style="stroke:#000000;stroke-width:1;" x1="1121.731" x2="1121.731" y1="684.4297" y2="697.4297"/><line style="stroke:#000000;stroke-width:1;" x1="1080.731" x2="1121.731" y1="697.4297" y2="697.4297"/><polygon fill="#000000" points="1090.731,693.4297,1080.731,697.4297,1090.731,701.4297,1086.731,697.4297" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="154.7559" x="1086.731" y="664.231">CheckMaxEnrollments()</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="112.4233" x="1107.8972" y="679.3638">[m&#225;x 3 materias]</text></g><path d="M15,712.4297 L79.4429,712.4297 L79.4429,719.5625 L69.4429,729.5625 L15,729.5625 L15,712.4297" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1177.9805" x="15" y="712.4297"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="30" y="725.4966">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="182.5151" x="94.4429" y="724.6401">[Estudiante tiene 3 materias]</text><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="782.9502,746.6953,772.9502,750.6953,782.9502,754.6953,778.9502,750.6953" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1068.731" y1="750.6953" y2="750.6953"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="273.7808" x="783.9502" y="745.6294">throw MaxEnrollmentsExceededException</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="463.9404,775.8281,453.9404,779.8281,463.9404,783.8281,459.9404,779.8281" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="457.9404" x2="760.9502" y1="779.8281" y2="779.8281"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="244.8926" x="484.999" y="774.7622">Error: "L&#237;mite de materias alcanzado"</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="278.9341,804.9609,268.9341,808.9609,278.9341,812.9609,274.9341,808.9609" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="272.9341" x2="441.9404" y1="808.9609" y2="808.9609"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="94.6182" x="308.1282" y="803.895">{ errors: [...] }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,834.0938,66.4165,838.0938,76.4165,842.0938,72.4165,838.0938" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="256.9341" y1="838.0938" y2="838.0938"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="168.5176" x="77.4165" y="833.0278">Muestra mensaje de error</text></g><g class="message" data-participant-1="domainService" data-participant-2="domainService"><line style="stroke:#000000;stroke-width:1;" x1="1079.731" x2="1121.731" y1="889.3594" y2="889.3594"/><line style="stroke:#000000;stroke-width:1;" x1="1121.731" x2="1121.731" y1="889.3594" y2="902.3594"/><line style="stroke:#000000;stroke-width:1;" x1="1080.731" x2="1121.731" y1="902.3594" y2="902.3594"/><polygon fill="#000000" points="1090.731,898.3594,1080.731,902.3594,1090.731,906.3594,1086.731,902.3594" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="178.0898" x="1086.731" y="869.1606">CheckProfessorConstraint()</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="132.4438" x="1109.554" y="884.2935">[no repetir profesor]</text></g><path d="M15,917.3594 L79.4429,917.3594 L79.4429,924.4922 L69.4429,934.4922 L15,934.4922 L15,917.3594" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><rect fill="none" height="133.6641" style="stroke:#000000;stroke-width:1;" width="1177.9805" x="15" y="917.3594"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="19.4429" x="30" y="930.4263">alt</text><text fill="#000000" font-family="Verdana" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="210.3643" x="94.4429" y="929.5698">[Ya tiene materia con el profesor]</text><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="782.9502,951.625,772.9502,955.625,782.9502,959.625,778.9502,955.625" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1068.731" y1="955.625" y2="955.625"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="270.4419" x="785.6196" y="950.5591">throw SameProfessorConstraintException</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="463.9404,980.7578,453.9404,984.7578,463.9404,988.7578,459.9404,984.7578" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="457.9404" x2="760.9502" y1="984.7578" y2="984.7578"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="285.0098" x="464.9404" y="979.6919">Error: "Ya tienes materia con este profesor"</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="278.9341,1009.8906,268.9341,1013.8906,278.9341,1017.8906,274.9341,1013.8906" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="272.9341" x2="441.9404" y1="1013.8906" y2="1013.8906"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="94.6182" x="308.1282" y="1008.8247">{ errors: [...] }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,1039.0234,66.4165,1043.0234,76.4165,1047.0234,72.4165,1043.0234" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="256.9341" y1="1043.0234" y2="1043.0234"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="168.5176" x="77.4165" y="1037.9575">Muestra mensaje de error</text></g><g class="message" data-participant-1="domainService" data-participant-2="handler"><polygon fill="#000000" points="782.9502,1075.1563,772.9502,1079.1563,782.9502,1083.1563,778.9502,1079.1563" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1073.731" y1="1079.1563" y2="1079.1563"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="90.1431" x="878.269" y="1074.0903">Validaci&#243;n OK</text></g><rect fill="#FFFFFF" height="3" style="stroke:#FFFFFF;stroke-width:1;" width="1836.21" x="5" y="1107.7227"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="1107.7227" y2="1107.7227"/><line style="stroke:#000000;stroke-width:0.5;" x1="5" x2="1841.21" y1="1110.7227" y2="1110.7227"/><rect fill="#FFFFFF" height="23.1328" style="stroke:#000000;stroke-width:1;" width="108.4341" x="868.8879" y="1097.1563"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="89.9082" x="874.8879" y="1113.2231">Persistencia</text><g class="message" data-participant-1="handler" data-participant-2="enrollRepo"><polygon fill="#000000" points="1626.0732,1147.4219,1636.0732,1151.4219,1626.0732,1155.4219,1630.0732,1151.4219" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="771.9502" x2="1632.0732" y1="1151.4219" y2="1151.4219"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.0439" x="1132.4897" y="1146.356">AddAsync(enrollment)</text></g><g class="message" data-participant-1="enrollRepo" data-participant-2="db"><polygon fill="#000000" points="1782.1768,1176.5547,1792.1768,1180.5547,1782.1768,1184.5547,1786.1768,1180.5547" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;" x1="1648.0732" x2="1788.1768" y1="1180.5547" y2="1180.5547"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="122.1035" x="1660.0732" y="1175.4888">INSERT Enrollment</text></g><g class="message" data-participant-1="db" data-participant-2="enrollRepo"><polygon fill="#000000" points="1659.0732,1205.6875,1649.0732,1209.6875,1659.0732,1213.6875,1655.0732,1209.6875" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="1653.0732" x2="1793.1768" y1="1209.6875" y2="1209.6875"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="18.7573" x="1711.7463" y="1204.6216">OK</text></g><g class="message" data-participant-1="enrollRepo" data-participant-2="handler"><polygon fill="#000000" points="782.9502,1234.8203,772.9502,1238.8203,782.9502,1242.8203,778.9502,1238.8203" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="776.9502" x2="1642.0732" y1="1238.8203" y2="1238.8203"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="70.9731" x="1172.0251" y="1233.7544">Enrollment</text></g><g class="message" data-participant-1="handler" data-participant-2="api"><polygon fill="#000000" points="463.9404,1263.9531,453.9404,1267.9531,463.9404,1271.9531,459.9404,1267.9531" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="457.9404" x2="765.9502" y1="1267.9531" y2="1267.9531"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="122.2559" x="548.8174" y="1262.8872">EnrollmentPayload</text></g><g class="message" data-participant-1="api" data-participant-2="frontend"><polygon fill="#000000" points="278.9341,1293.0859,268.9341,1297.0859,278.9341,1301.0859,274.9341,1297.0859" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="272.9341" x2="446.9404" y1="1297.0859" y2="1297.0859"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="133.0151" x="291.4297" y="1292.02">{ enrollment: {...} }</text></g><g class="message" data-participant-1="frontend" data-participant-2="user"><polygon fill="#000000" points="76.4165,1337.3516,66.4165,1341.3516,76.4165,1345.3516,72.4165,1341.3516" style="stroke:#000000;stroke-width:1;"/><line style="stroke:#000000;stroke-width:1;stroke-dasharray:2,2;" x1="70.4165" x2="261.9341" y1="1341.3516" y2="1341.3516"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.6025" x="91.374" y="1321.1528">Muestra confirmaci&#243;n:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="145.2534" x="91.5486" y="1336.2856">"Inscrito en [materia]"</text></g><!--SRC=[lLNDRXit4BxlKqpLYumqHe4sI2B01MH5JeJQYM853GBB1ueSIuntoIt9JQmMUPW-G4zz1BzOXxlSNLBPjZxL5zlS-Rxv-URd6xV30g7CcLIPlPMgP8OLOF7N2XN72xIMRN6Qowq2ZigXYQmCsb8hsrgTOgu_JutHdy6P2WVebimuoMN9b3jb_7PhTAN4JEVQmBTdpywUdqt_0wIDG1C0Fpv_ylsJfrdcfCiHLiYzjMGJM2ZBZIovlFzBWK2OMrS9IN04L731A0d9iennHpIZ_ki8c8NAKefbxn96PqRJHoNMQZnLsofdvgYsl0dlgVLqkO2NXfMxj-S4UANTRAUvpibfWsAbJ05pPNIUhoW8AkyhfaIEfhRSDNyFMHTa-a8NfDaApIV9cz15_9B20lqbbjfAIdjV0sp_Uc1URJuY_ygyV_sde0uGM7-e0O8vjc4MYVpjEVWWGvfYasKd9x3IEV5HG5wnHC6Jaoppgi3ZdxgQmuGeSkHSQiMWQ2HTgpqLZIDmel9IZngUZJGZhxRyH7QzR5b7HiGa2t4MbMEEA4FWeMhZjOAsLWlnNLk7XJZgMRsicISXhY0SyJLoZXE9Pxeew3d2jaBxChpPED_5eNDVCATjNO2Ma-WZrSZ5ItId-uLuBzskby5ExLxnSHTpv2pMF6OYOh7nPPsVpsVl80GBZo1YpSZYyLSHjAPUuPGogKKmomGEnf9as3TQds58QQ3sSL_6qCEKcazT4ecJy34a4PEaIRGSEEZTA_WBowLWdOINkCrzboEyngscVZsKCvbQSj7W7VPrRtNiEY_AFPtvB2KRO9_jaDzUiBj8rV7HMbqLzt_SmG_j9DbhQkRSnPlJILGOMMH0FmVkabAvdJy4gQlv7KSKAFplqWzQpT8Levl3EHqHCu7H-VsVXVHPOkSNMCwP-eq9FQh1zSobc-5tG8-t4xWwFZw-XY-rOJ_jP5tlambSL6YTeGM2ohAFjPyQcjNxuM75N1fzG_TFqrbIdaoIOBwYIjDzBD590sLjeasewWSMgXbo0kutJjwPFR2qArRWWFE7rhQDmgPXM2ft6yZ_NU4aoNYEtlmSJzn1pzFCBT5OQUlDoGxdgxz1H3eLOOzWrvJHC4NdAaArQsJnUZM_V1VjmtQJ91uer1YRf1H3SSXhDY1NXrcoVQwPYA7TvHZMg8FIVwJJ5z8f0jSdwzyqetwuaQPeD9YiLJYdJllRUXMwvdeKStR7zMy0]--></g></svg>