diff --git a/30_Thesis/figures/50_design_and_implementation/sequence_diagram_generating_recommendation.pdf b/30_Thesis/figures/50_design_and_implementation/sequence_diagram_generating_recommendation.pdf new file mode 100644 index 0000000..cc50378 --- /dev/null +++ b/30_Thesis/figures/50_design_and_implementation/sequence_diagram_generating_recommendation.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50fcf871fa367a9acd1830bb6e2c91f4f4f245a2e82356bd10de71a6dab67e29 +size 18297 diff --git a/30_Thesis/sections/50_design_and_implementation.tex b/30_Thesis/sections/50_design_and_implementation.tex index 1ac3920..98ea865 100644 --- a/30_Thesis/sections/50_design_and_implementation.tex +++ b/30_Thesis/sections/50_design_and_implementation.tex @@ -13,7 +13,7 @@ This thesis is looking at a recommendation system for a configurator. Developing He only makes changes to M.Customer which is renamed to M.Collab-Customer and introduces a new component M.Collab. \begin{description} - \item[M.Core] provides the base of the configurator. It checks the configuration against all rules in the database, provides possible alternatives if a change invalidates other parts of a configuration. The system relies on a CSP solver for validation and suggestion of alternatives. + \item[M.Core] provides the base of the configurator. It checks the configuration against all rules in the database, provides possible alternatives if a change invalidates other parts of a configuration. The system relies on a CSP solver for valida tion and suggestion of alternatives. \item[M.Model] is the editor to create products and rules. These rules can then be uploaded to M.Core. \item[M.Collab] is a node.js server application that communicates with M.Core via REST-API and with M.Collab-Customer via WebSocket. It sits in between M.Collab-Customer and M.Core and handles all processing regarding collaborative configuration. \item[M.Collab-Customer] a modified version of M.Customer that does all communication via WebSocket and does communicate with M.Collab instead of M.Core. M.Customer is the customer facing component. It allows a customer to configure a product or solution. @@ -49,6 +49,18 @@ Another viable solution is adding the recommendation functionality into M.Core. \label{fig:DesignImplementation:UserInterface} \end{figure} +When a recommendation is supposed to be generated M.Collab sends a REST request to M.Recommend (see \autoref{fig:DesignImplementation:SequenceDiagramRecommendation}). This request contains preferences and the current configuration. M.Recommend generates a recommendation based on the received data. The recommended finished configuration is now send via broadcast over WebSocket to all M.Customer clients. + + +\begin{figure} + \centering + \includegraphics[width=1\textwidth]{./figures/50_design_and_implementation/sequence_diagram_generating_recommendation.pdf} + \caption{A sequence diagram showing the recommendation process.} + \label{fig:DesignImplementation:SequenceDiagramRecommendation} +\end{figure} + + + \subsection{Scoring Functions} \section{Software Quality} diff --git a/Additional_Notes/uml/sequence_diagram_generating_recommendation.plantuml b/Additional_Notes/uml/sequence_diagram_generating_recommendation.plantuml new file mode 100644 index 0000000..ebd02a3 --- /dev/null +++ b/Additional_Notes/uml/sequence_diagram_generating_recommendation.plantuml @@ -0,0 +1,36 @@ +@startuml +skinparam monochrome true +skinparam SequenceBoxBackgroundColor #ffffff +skinparam ParticipantPadding 5 +skinparam shadowing false +hide footbox + +title generating a recommendation + +box "Client B" +participant "M.Customer B" +end box + +box "Client A" +participant "M.Customer A" +end box + +box "Server" +participant M.Collab +participant M.Recommend +end box + +activate "M.Customer A" +activate "M.Customer B" +activate M.Collab + +M.Collab -> M.Recommend : get_recommendation(configuration, preferences) +activate M.Recommend +M.Collab <-- M.Recommend : return recommendedFeatures +deactivate M.Recommend + +par + M.Collab --> "M.Customer A" : broadcast (recommendedFeatures) + M.Collab --> "M.Customer B" : broadcast (recommendedFeatures) +end +@enduml \ No newline at end of file