Scaflow - new workflow engine for scientific computations, focused on:
- Error handling
- Failure recovery
- Concurrency and scalability
- Ease of use
Scaflow was created as a demo and prove of concept for the research titled "USING AN ACTOR FRAMEWORK FOR SCIENTIFIC COMPUTING: OPPORTUNITIES AND CHALLENGES".
Is written entirely in Scala using Akka toolkit.
Scaflow mantra:
- Simplicity (Simple API, simple code) couse we believe that simplicity is the key in modern software development
- Use the right tool for the job (Scala and Akka are a perfect fit here)
DISCLAIMER: Scaflow is not a production ready library (contains, for sure, lots of bugs and other drawbacks). Feel free to contribute :) Also, if you are looking for stable workflow/streaming library/engine written in Scala and Akka look at akka-streams - maybe this is exactly what you need (although akka-streams don't have failure recovery and scalability features).
##Getting started
Build the Scaflow project:
$ sbt publishLocal
Then attach to your project:
resolvers += "Local Ivy Repository" at Path.userHome.asFile.toURI.toURL + ".ivy2/local"
libraryDependencies += "pl.liosedhel" %% "scaflow" % "1.0-SNAPSHOT"
And create your first workflow:
implicit val actorSystem = ActorSystem("firstScientificWorkflow")
StandardWorkflow.source(List(1, 2, 3))
.map(a => a * a)
.sink(println(_))
.run
And that's it! Please explore tests for more advanced usage examples.