Frequently Asked Questions
Nice diagrams, what tool do you use?
All examples are actual Syrup Workflows exported to XML, transformed to graphml and imported in the freely available yed tool. Then yed's superb layout tools were used to create the diagrams. As Syrup is packaged with the necessary XSLT stylesheets to transform Syrup-XML into yed-XML, you can also create the diagrams yourself.
Why another Workflow solution? Isn't the field already plagued with to many standards already?
Syrup introduces a minimum of concepts that can be easily understood by business people and directly used 'out of the box' by programmers. It is not the maker's intention to provide yet another standard. Instead it tries to give a practical and workable solution that is manageable (partly because there are so few concepts to consider).
Why do Tasks only have a maximum of two inputs and outputs. Isn't it more convenient to have more?
Having only two inputs and outputs simplifies the concepts, reasoning about, and implementation of Syrup considerably. This may be regarded as inconvenient but remember that multiple inputs can always be concatenated and serialized into one. The same applies for a single output that can be split into two seperate outputs. Note however that at least two inputs are needed to implement the more advanced synchronization concepts like fair merge. Likewise, at least two outputs are needed to be able to duplicate data.
How can I run Syrup?
Syrup is packaged to be run 'out of the box' on all UNIX flavors. No J2EE containers needed. Just take the following steps to run Syrup for the first time.
- Download the distribution at ..
- Unzip syrup.zip in a directory of choice (SYRUP_HOME ).
- Download MySQL 4.1.12-max and follow the installation instructions (or just run configure). Keep the test database, installed by default. Make sure MySQL is running before going through the next steps. If everything fails, read Deploy and Run for suggestions.
- Run $SYRUP_HOME/bin/deploy.sh. This will deploy Syrup with MySQL as the database engine using database test.
- Run $SYRUP_HOME/bin/syrup.sh reset. Creates three tables (task, link, syrup_log) in database test.
- Run $SYRUP_HOME/bin/syrup.sh get. Returns the embryonic state of the WorkSpace containing one Launch Task.
- Run $SYRUP_HOME/bin/syrup.sh in1 < $SYRUP_HOME/test/helloworld.xml. Feeds the Launch Task the helloworld WorkFlow.
- Run $SYRUP_HOME/bin/syrup.sh step -executable=equal true. Executes executable Tasks in a single pass, expanding the WorkFlow with the Launch Task.
- Run $SYRUP_HOME/bin/syrup.sh step -executable=equal true. Executes executable Tasks in a single pass, producing 'Hello World!'.
- Run $SYRUP_HOME/bin/syrup.sh get. Shows the current state of the WorkFlow.
- Run $SYRUP_HOME/bin/syrup.sh get -functionClass=like %Dup%. Filters all Tasks with functionClass like *Dup*.
- Run $SYRUP_HOME/bin/syrup.sh step -executable=equal true. Executes executable Tasks in a single pass, duplicating 'Hello World'.
- Run $SYRUP_HOME/bin/syrup.sh out1 > helloworld.txt. Gets 'Hello World!' and publishes it to the 'external world'.
- You may want to rerun the whole sequence again starting from step 5 (fresh) or 7 (recursive redo).
What version of MySQL does Syrup need?
The MySQL implementation has been tested with MySQL version 4.1.12 using the max build. Other versions of MySQL could be used (not tested) but make sure that the InnoDB subsystem is always enabled for necessary transaction support.
Why is Syrup called Syrup?
Syrup is the basis for a lot of lemonades, like the Java brand is the basis for a lot of coffee drinks. The difference is that lemonades usually taste much sweeter and won't give you as much headaches when drank in large quantities.
Syrup could also be seen as a kind of 'sticky' fluid used to make WorkFlows run more reliably.
With Syrup you can make sweet Workflows that STICK!