This tutorial introduces how Kurator-Akka workflows are specified in YAML files.
What is YAML?
YAML is plain text format for representing data organized as lists of values or sets of key-value pairs (mappings or dictionaries). The values in these lists and in the key-value pairs of mappings can themselves be lists or mappings. YAML is a superset of JSON (every JSON document is a valid YAML document) that uses white space (rather than braces and quotes) to organize data and is thus easy to read.
Kurator-Akka uses YAML to represent workflow definitions so that workflows can be specified and executed without using any software development tools (other than a text editor) or graphical user interfaces. And other programs can generate workflow specifications simply by producing a YAML file.
See http://yaml.org/ for more information about YAML and a list of libraries in C/C++, Ruby, Python, Java, Perl, C#, and other languages for composing and parsing YAML.
Example workflow
We will use the hello.yaml workflow from the Kurator-Akka distribution to show how workflows are specified in YAML. You can extract this YAML file from the kurator-akka jar file using the unzip command (the -j option prevents the any directories from being created during inflation):
$ unzip -j kurator-akka-0.2-executable.jar org/kurator/akka/samples/hello.yaml
Archive: kurator-akka-0.2-executable.jar
inflating: hello.yaml
$
The contents of hello.yaml are as follows:
imports:
- classpath:/org/kurator/akka/actors.yaml
components:
- id: GreetingSource
type: ConstantSourceActor
properties:
parameters:
value: Hello World!
- id: GreetingPrinter
type: PrinterActor
properties:
listensTo:
- !ref GreetingSource
- id: HelloWorldWorkflow
type: Workflow
properties:
actors:
- !ref GreetingSource
- !ref GreetingPrinter
parameters:
greeting:
actor: !ref GreetingSource
parameter: value
Kurator-Akka expects