Skip to content

Latest commit

 

History

History
149 lines (102 loc) · 10.4 KB

README.md

File metadata and controls

149 lines (102 loc) · 10.4 KB

Cortado

lint workflow test workflow

Cortado Logo

Cortado is a process mining tool dedicated for interactive/incremental process discovery

Overview Functionality

  • Import event logs .xes and initial process models .ptml
  • Visually explore event logs with the variant explorer
  • Discover initial process models from user-selected process behavior
  • Incrementally extend process models by user-selected process behavior
  • Manually edit process models under construction any time
  • Export discovered process models as .ptml or .pnml files
  • Temporal performance analysis, both model-based and model-independent

Downloads

Standalone builds for Windows 10/11, Linux, and macOS (Apple Silicon only) are available from the GitHub Releases Page.

Demo

Cortado_Demo.mp4

Repository Structure

  • src/ contains the source code of Cortado
    • src/backend contains Cortado's Python-based backend
    • src/frontend contains Cortado's frontend that is based on web technologies , i.e., an Angular web application embedded in an executable with Electron
  • build_scripts/ contains scripts to build the standalone executables for the three major operating systems: Windows, Linux, and macOS. (Please make sure to correctly follow the Setup instructions before executing the build scripts.)
  • LICENSE.txt
  • README.md
  • CHANGELOG.md contains a history of Cortado releases

Setup

Install Frontend Dependencies

  • Install Node.js latest LTS Version: 18.13.0 (https://nodejs.org/en/download/)
  • Install all packages required by the frontend
    • Navigate to src/frontend/
    • Execute npm install (this command installs all dependencies listed in src/frontend/package.json)
      When building Cortado as a standalone application, we want to ensure that the application bundle only includes required dependencies. As Angular dependencies are bundled via webpack, we do not want to include them. Hence, dependencies that are only used in the Angular codebase should be included under the devDependencies keyword in the package.json-file. All dependencies that are used in the Electron codebase must be included under the dependencies keyword.)

Install Backend Dependencies

Execute Cortado from Code

Start Backend

  • Navigate to src/backend/
  • Execute python main.py
  • For dynamic reloading of source code files, set environment variable CORTADO_DEBUG to 1

Start Frontend

  • In a Web-Browser
    • Navigate to src/frontend/
    • Execute npm start to build & run Cortado's frontend
    • Open your browser on http://localhost:4444/
  • In a dedicated Window of the Current OS
    • Navigate to src/frontend/
    • Execute npm start to build & run Cortado's frontend
    • Execute npm run electron-live-reload that starts a window with Cortado

Build Cortado—Standalone Application

To build executables from the source code, both the backend and frontend have to be converted. We use PyInstaller (https://pyinstaller.org/) to bundle all backend related files into a single executable. We use Electron (https://www.electronjs.org/) to generate an executable of the Frontend.

In build_scripts/ there are scripts for each major OS to build Cortado.

  • Windows build_scripts/build_cortado_windows.ps1
  • MacOS build_scripts/build_cortado_macos.sh
  • Linux build_scripts/build_cortado_linux.sh

Note that the operating system must match the script, otherwise the build will fail. Thus, if you are building Cortado for Windows, you must run the corresponding script on a Windows machine.

After the successful execution of the build script, the build is located in src/frontend/

Contributing

Linting and Code Quality

To maintain consistent code quality and formatting crucial, we have integrated Github Workflows along with npm scripts for linting and manual fixing of formatting errors.

Github Workflow

Our Github Workflow plays a pivotal role in ensuring code quality. Whenever changes are pushed to the repository, the workflow automatically triggers linting checks using various tools. We have separate jobs within the workflow to handle TypeScript, HTML, and SASS linting, as well as Python code formatting checks. If any issues are detected, the workflow provides prompt feedback, helping contributors address the problems early in the development cycle.

npm Scripts

In addition to the automated workflow, we have set up npm scripts that facilitate local development and manual checks for formatting errors.

  • To perform comprehensive linting across TypeScript, HTML, and SASS files, use: npm run lint

  • If linting issues are detected, you can initiate automatic fixes for TypeScript and SASS files using: npm run lint-scripts-fix and npm run lint-styles-fix

  • For HTML files, you can manually review and fix the issues identified by the linter.

  • We also support Python code formatting checks using the command: black --check .

These tools and scripts are designed to streamline the development process, ensuring that our codebase remains clean, consistent, and of high quality. Before submitting your contributions, make sure to run these checks locally and address any issues to facilitate smoother code reviews and integration.

Relevant Publications for Cortado

Publication Authors Year
Analyzing Healthcare Processes with Incremental Process Discovery: Practical Insights from a Real-World Application Schuster, D., Benevento, E., Aloini, D., van der Aalst, W.M.P. 2024
Defining and visualizing process execution variants from partially ordered event data Schuster, D., Zerbato, F., van Zelst, S.J., van der Aalst, W.M.P. 2024
Incremental Discovery of Process Models Using Trace Fragments Schuster, D., Föcking, N., van Zelst, S.J., van der Aalst, W.M.P. 2023
Mining Frequent Infix Patterns from Concurrency-Aware Process Execution Variant Martini, M., Schuster, D., Wil M. P. van der Aalst 2023
Cortado: A dedicated process mining tool for interactive process discovery Schuster, D., van Zelst, S.J., van der Aalst, W.M.P. 2023
Control-Flow-Based Querying of Process Executions from Partially Ordered Event Data Schuster, D., Martini, M., van Zelst, S.J., van der Aalst, W.M.P. 2022
Conformance Checking for Trace Fragments Using Infix and Postfix Alignments Schuster, D., Föcking, N., van Zelst, S.J., van der Aalst, W.M.P. 2022
Temporal Performance Analysis for Block-Structured Process Models in Cortado Schuster, D., Schade, L., van Zelst, S.J., van der Aalst, W.M.P. 2022
A Generic Trace Ordering Framework for Incremental Process Discovery Schuster, D., Domnitsch, E., van Zelst, S.J., van der Aalst, W.M.P. 2022
Freezing Sub-models During Incremental Process Discovery Schuster, D., van Zelst, S.J., van der Aalst, W.M.P. 2021
Visualizing Trace Variants from Partially Ordered Event Data Schuster, D., Schade, L., van Zelst, S.J., van der Aalst, W.M.P. 2021
Cortado—An Interactive Tool for Data-Driven Process Discovery and Modeling Schuster, D., van Zelst, S.J., van der Aalst, W.M.P. 2021
Incremental Discovery of Hierarchical Process Models Schuster, D., van Zelst, S.J., van der Aalst, W.M.P. 2020

Citing Cortado

If you are using or referencing Cortado in scientific work, please cite Cortado as follows.

Schuster, D., van Zelst, S.J., van der Aalst, W.M.P. (2023). Cortado: A dedicated process mining tool for interactive process discovery. SoftwareX Vol. 22. Elsevier. https://doi.org/10.1016/j.softx.2023.101373.

Download citation https://www.sciencedirect.com/science/article/pii/S2352711023000699

DOI 10.1016/j.softx.2023.101373

Contact

If you are interested in Cortado, get in touch if you have any questions or custom request via Mail - [email protected]