Class diagram
The system is structured using several core classes, as depicted in the diagram. The EventLog class represents the event log file and contains details such as the file name, saved name, and associated Definition object. The Definition class contains definitions necessary for system training, such as column definitions, case attributes, outcome definitions, and treatment definitions, among others.
The Project class represents a project that uses the PrCore system for prescriptive process monitoring. It contains details such as the project name, description, and associated EventLog object, as well as a list of associated Plugin objects.
The Plugin class represents a plugin in the system and contains details such as the plugin name, description, and status.
The Event and Case classes used to represent events and cases in the stream data. By utilizing these classes for storing stream data, the PrCore system can provide timely and prescribing recommendations for ongoing cases, allowing users to make informed decisions about their processes.
Overall, the system design is highly structured and organized, with each class containing details essential for efficient prescriptive process monitoring.
classDiagram class EventLog { id: int created_at: datetime updated_at: datetime file_name: str saved_name: str df_name: str training_df_name: str simulation_df_name: str definition: Definition } class Definition { id: int created_at: datetime updated_at: datetime columns_definition: dict[str, str] case_attributes: list[str] fast_mode: bool start_transition: str complete_transition: str abort_transition: str outcome_definition: list[list[dict[str, str]]] treatment_definition: list[list[dict[str, str]]] } class Project { id: int created_at: datetime updated_at: datetime name: str description: str status: str error: str event_log: EventLog plugins: list[Plugin] } class Plugin { id: int created_at: datetime updated_at: datetime project_id: int key: str prescription_type: str name: str description: str parameters: dict[str, str | bool | int | float] additional_info: dict[str, Any] status: str error: str disabled: bool model_name: str project: Project } class Case{ id: int created_at: datetime updated_at: datetime project_id: int case_id: str completed: bool events: list[Event] } class Event{ id: int created_at: datetime updated_at: datetime project_id: int attributes: dict[str, str | bool | int | float | None] prescriptions: dict[str, Any] prescribed: bool sent: bool case: Case } EventLog "1" -- "1" Definition Project "1" -- "1" EventLog Project "1" -- "*" Plugin Project "1" -- "*" Case Project "1" -- "*" Event Case "1" -- "*" Event