Skip to content

Latest commit

Β 

History

History
177 lines (122 loc) Β· 4.24 KB

File metadata and controls

177 lines (122 loc) Β· 4.24 KB

SciCumulus (Refactored)

A fully refactored, modernized, and maintainable version of the SciCumulus Scientific Workflow Management System


πŸ“Œ Overview

This repository contains a complete architectural refactoring of the original SciCumulus project developed at UFF.
The refactoring preserves the conceptual goals and execution semantics of SciCumulus while radically improving:

  • Maintainability
  • Testability
  • Modularity
  • Extensibility
  • Cloud and database portability

The result is a clean-architecture implementation suitable for research, teaching, and production environments.


🎯 Refactoring Goals

The refactor was driven by the following objectives:

  • Eliminate tight coupling between workflow logic, database, and infrastructure
  • Replace legacy and script-style code with modern Java architecture
  • Enable unit and integration testing
  • Support cloud and local execution transparently
  • Provide clear documentation and architectural artifacts
  • Prepare the codebase for long-term evolution

🧱 Architecture

The project follows Clean Architecture principles:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        API          β”‚  CLI, user input
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        Core         β”‚  Workflow, execution, scheduling
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Infrastructure    β”‚  Database, storage, filesystem
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Characteristics

  • Core logic has no dependency on database, cloud, or filesystem
  • Infrastructure components are replaceable
  • All dependencies point inward

πŸ“‚ Project Structure

src/
β”œβ”€β”€ main/java/br/uff/scicumulus
β”‚   β”œβ”€β”€ api/cli            # CLI entry point
β”‚   β”œβ”€β”€ core               # Workflow engine (pure logic)
β”‚   β”‚   β”œβ”€β”€ workflow
β”‚   β”‚   β”œβ”€β”€ execution
β”‚   β”‚   β”œβ”€β”€ scheduling
β”‚   β”‚   └── provenance
β”‚   └── infrastructure
β”‚       β”œβ”€β”€ database
β”‚       β”œβ”€β”€ storage
β”‚       └── config
β”œβ”€β”€ test/java              # Unit and integration tests
docs/
β”œβ”€β”€ architecture.puml      # UML architecture diagram
β”œβ”€β”€ refactoring-report.md  # Formal refactoring report

πŸ§ͺ Testing

The project includes:

  • JUnit 5 unit tests
  • Testable core modules with no infrastructure dependencies
  • In-memory provenance repository for safe integration testing

Run tests with:

mvn test

πŸ—„οΈ Database & Provenance

  • Provenance handling is abstracted via a repository interface
  • Current implementation: InMemoryProvenanceRepository
  • Easily extendable to PostgreSQL, MySQL, SQLite, or cloud databases

☁️ Cloud & Storage Support

Storage and execution are abstracted via interfaces:

  • StorageService
  • LocalStorageService (default)

This enables transparent integration with cloud providers and distributed filesystems.


πŸ“Š UML & Documentation

Included in /docs:

  • PlantUML architecture diagram
  • Formal refactoring report suitable for academic publication

πŸš€ Running the Application

Prerequisites

  • Java 11+
  • Maven 3.8+

Build

mvn clean package

Run

java -cp target/scicumulus-2.0.0.jar br.uff.scicumulus.api.cli.Main

πŸ”„ Migration from Original SciCumulus

This repository is not a line-by-line rewrite.
It is a structural refactoring that preserves domain concepts while modernizing architecture.


πŸ“„ License

This project follows the same license terms as the original SciCumulus project unless otherwise specified.


🀝 Contributions

Contributions are welcome for:

  • Database backends
  • Cloud execution strategies
  • Workflow parsers
  • Performance evaluation

πŸ“¬ Contact

For questions or collaboration, please open an issue.


βœ… Status: Refactoring complete
πŸ§ͺ Testable: Yes
☁️ Cloud-ready: Yes
πŸ“š Publication-ready: Yes