kyleburton / impresario Goto Github PK
View Code? Open in Web Editor NEWSimple Workflow Library for Clojure
Simple Workflow Library for Clojure
Document the DSL represented by defmachine
and how it finds and uses triggers and predicates.
If a username or password are not supplied, the DBI driver should prompt for them at the terminal (if the stdin is not a pipe). These prompts must be on stderr so that they do not interfere with the command line tools being used in a pipeline. In fact the prompting should only be performed when using the command line tools!
Based on prior experience, re-implementing the tab driver in C and using it via Ruby's FFI will provide a very valuable performance improvement. This is especially true since the tab format is the default used by all of the tools.
Implement a sort utility. Allow it to shell out to GNU sort so we can leverage all of the engineering that it embodies.
Use temporary files.
Ensure they're cleaned up when the driver is finished with them.
This will be challenging due to all of the concerns (tmp files have to be shared between the driver and gnu sort).
Make them easy to clean up by hand: eg: put them into a subdirectory.
Ensure that the temporary directory path can be specified by the user as an option to atsort (don't just assume /tmp has enough space).
Implement a driver for excel workbooks.
URL needs to support specifying:
Basic file / table analysis.
Try to guess the file's format.
Fill rates for the columns.
Identify highly duplicated values within columns.
Identify min/max/mean/mode/median column widths.
Use heuristics to try to guess at the column type.
Use that col type information to guess if the first line is a header.
Impresario supports serialized contexts for long lived / running workflows. When the workflow definition changes (a new state is added), and the context is used by the new version, the state tracking throws an exception when attempting to update the tracking map. This should be handled more gracefully so that long running, evolving workflows are supported.
Implement a driver for fixed width files.
The columns in the file will be specified as the query string parameter 'columns':
atcat "fixed://some/file.dat?columns=first:3,second:8,third:1"
All file based drivers should recognize when the file name ends in .bz2 and compress when writing and uncompress when reading.
Within this class implement most of the common functionality: opening, closing files, handling compression, common options (record separators, column separators, skip lines, if a header is specified or not, specification of column names when no header is present -- fold in optional support for widths).
Try to have 'parse_line' function be the only part that needs customization (if possible).
Write a getting started and tutorial for Impresario showing:
All file based drivers should recognize when files end in .gz and automatically decompress when reading and compress when writing.
Impresario does not currently validate that the state names mentioned in the transitions-to clauses are actually declared as states. There should be a validation check used as a guard before workflows are placed into the registry.
This should be a hard error at workflow registration time. This can also be performed at DSL declaration time by the defmachine
DSL macro.
Can we add trigger info to the dotty generated output so we can see on what nodes and on what edges triggers have been defined? Perhaps add a [!] to the node name or the edge name?
It'd be nice to show the difference between: enter triggers (on a node), exit triggers (on a node) and transition triggers (on an edge).
Ruby has libraries that wrap mdbtools, which is a C library for reading from MS Access database files. This isn't supported by ruby's dbi, so will have to be supported separately.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.