Форум Сообщества Аналитиков
Общий раздел => ПО Аналитика => Тема начата: Виталий И от 26 Июня 2023, 11:13:18
-
Как генерировать диаграмму последовательностей из существующего проекта?
Я попробовал разобраться с документацией.
Я построил диаграмму последовательностей.
Я получаю
(https://i.ibb.co/Cvj0SHG/image.png)
Это всё?
(Полное изображение: https://i.ibb.co/Cvj0SHG/image.png)
Мои ожидания: увидеть на диаграмме детальную работу метода **Worker()** класса **ParserWorker**
Путь: Node_Root.Package1.Parser.Core.ParserWorker
Проект:
Папка: c:\ProjectTest\5214\ParserExtrem\Project\
Github: https://github.com/jhon65496/ParserSequenceDiagrams (https://github.com/jhon65496/ParserSequenceDiagrams)
(https://i.ibb.co/DrB8YYq/image.png)
Использую:
Sparx Systems Enterprise Architect -15.2
Класс: ParserWorker;
Метод: Worker();
private async void Worker()
{
for(int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++)
{
if (!isActive)
{
OnCompleted?.Invoke(this);
return;
}
var source = await loader.GetSourceByPageId(i);
var domParser = new HtmlParser();
var document = await domParser.ParseAsync(source);
var result = parser.Parse(document);
OnNewData?.Invoke(this, result);
}
OnCompleted?.Invoke(this);
isActive = false;
}
Процесс построения диаграммы
(https://i.ibb.co/ZSvPB31/261830108232780.png)
(https://i.ibb.co/cvGjzHw/527890108256347.png)
(https://i.ibb.co/mGvBtqW/126771009241434.png)
(https://i.ibb.co/6vfBjLr/513490208247815.png)
(https://i.ibb.co/L8xvMC3/287020308250602.png)
(https://i.ibb.co/cYLrSDj/311400408261955.png)
(https://i.ibb.co/GHwxhpc/105011108246765.png)
(https://i.ibb.co/KshS6c5/432891108243049.png)
(https://i.ibb.co/7VfnTRb/215392108256622.png)
(https://i.ibb.co/F6zt4K6/459042008246905.png)
(https://i.ibb.co/gtmNKTz/26862408247313.png)
(https://i.ibb.co/YRTsvHg/318932408243155.png)
(https://i.ibb.co/QFhG1cd/556672408253175.png)
(https://i.ibb.co/wh1sXQW/29163108246731.png)
(https://i.ibb.co/qmRPJ5t/208033208255114.png)
(https://i.ibb.co/X7BBCS2/384803308246908.png)
(https://i.ibb.co/C6MMbbt/318553608256360.png)
(https://i.ibb.co/Cv6bkG1/399122708253821.png)
(https://i.ibb.co/zX1NXyz/240662708230819.png)
(https://i.ibb.co/XC4yMx4/279712808233923.png)
(https://i.ibb.co/fGwdW6k/145123708248740.png)
(https://i.ibb.co/Bwgdzm7/102793808242327.png)
Step-1
(https://i.ibb.co/9ntw8gV/490353808261942.png)
Step-2
(https://i.ibb.co/RjWBx4r/342204008251297.png)
Step-3
(https://i.ibb.co/f1DHy59/554784008236412.png)
(https://i.ibb.co/thxq9Mw/115344608254981.png)
(https://i.ibb.co/PcP4yM2/394904208234939.png)
(https://i.ibb.co/D4s3PvV/404094708261811.png)
Result
(https://i.ibb.co/924PXBW/87735508231538.png)
-
С Марсу кажется, что ручное переписывание кода метода в конструкции диаграммы последовательности сработало бы быстрее.
(http://sp.cs.msu.ru/Temp/msc.png)
Если что, я не шарю в C# и в егойном Invoke
Код для https://sequencediagram.org (https://sequencediagram.org)
[->ParserWorker:Worker()
loop for i in parserSettings.StartPoint..parserSettings.EndPoint
break isActive
note over ParserWorker: выход из цикла
end
ParserWorker->loader:GetSourceByPageId(i)
loader-->ParserWorker:source
ParserWorker-->*HtmlParser:new
ParserWorker->HtmlParser:ParseAsync(source)
HtmlParser-->ParserWorker:document
ParserWorker->parser:Parse(document)
parser-->ParserWorker:result
opt OnNewData != NULL
ParserWorker->OnNewData:Invoke(this, result)
end
end
opt OnCompleted != NULL
ParserWorker->OnCompleted:Invoke(this)
end
ParserWorker->ParserWorker:isActive = FALSE
[<--ParserWorker:return
-
===
@startuml
[-> ParserWorker : Worker()
loop for i in parserSettings.StartPoint..parserSettings.EndPoint
break isActive
note over ParserWorker: выход из цикла
end
ParserWorker -> loader : GetSourceByPageId(i)
loader --> ParserWorker : source
create HtmlParser
ParserWorker --> HtmlParser : new
ParserWorker -> HtmlParser : ParseAsync(source)
HtmlParser --> ParserWorker : document
ParserWorker -> parser : Parse(document)
parser --> ParserWorker : result
opt OnNewData != NULL
ParserWorker -> OnNewData : Invoke(this, result)
end
end
opt OnCompleted != NULL
ParserWorker -> OnCompleted : Invoke(this)
end
ParserWorker -> ParserWorker : isActive = FALSE
[<-- ParserWorker:return
@enduml
===
(http://www.plantuml.com/plantuml/png/VPBHIiCm58RlynJ7knRi7c0usTIfWp47HRpOLMoFCwnDIdAwiGVG6rz6H50KV8RiZSnQIschthIXvyjt_ZHdQ8XhojE4BO9Zc7DjKDyelK8DVIWNdiyIfJAuKne420bPGOL89EJIzCAzOQw4f5wlLHhBk2WmW5kDV0N2Z28IQtGVf284jKRTwDe7-x9xsZtOB_iAzjs-mUxHlJxiftrc02XZ1isOBdQYU5m4la0ALQuZFDdE-H8diITy1bKzw9xG5BH38XVFvRcaD2cHJXktkQwwhH8tRQQD58kHsSh8AnkvC3NnQw1OHNcAxezrrLb3wrNatfdzwTDeycHlKnd1bPpXvemJXuC1pAwdKmRTDZNKXubSgnLwT2_CuO_ABsy1c7kmKdggqYn1mlX_ROqrn7vXQkEjOrHp0mCu7qt3CLiS1K5pS3HIhYMmeTEvUVu6)