Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 , and so that other programs can generate workflow specifications simply by producing a YAML file. Kurator-Akka uses yaml-spring-loader (written by Scott McPhillps for the RestFlow system) to parse YAML files and to create using Spring the workflow components they the files describe using Spring.

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. 

...

Finally, components of have properties that represent the configuration of the component in the current workflow.

Examing the components in hello.yaml

The first component in hello.yaml is the actor with id GreetingSource:

  - id: GreetingSource
    type: ConstantSourceActor
    properties:
      parameters:
        value: Hello World!

This declaration states that the component named GreetingSource is an instance of the ConstantSourceActor.  ConstantSourceActor emits a value (or sequence of values) at the beginning of a workflow run.  The value emitted by a ConstantSourceActor is specified by the value parameter.  Parameters represent a subset of component properties that are available to the component at run-time.  Properties not specified as parameters are used by the KuratorAkka framework to compose the workflow as a whole and are not visible to running components.  Here, GreetingSource is configured to emit the string, 'Hello World!' when the workflow starts running.

The second component in hello.yaml is the actor with id GreetingPrinter:

   - id: GreetingPrinter
    type: PrinterActor
    properties:
      listensTo:
        - !ref GreetingSource

GreetingPrinter is an instance of PrinterActor.  A PrinterActor writes any data it receives to an output stream which defaults to stdout of the process running the workflow.  The listensTo property of GreetingPrinter is assigned a list containing a single element with the value !ref GreetingSource. Actors in a workflow generally receive the data they process from other actors in the same workflow, and the listensTo property on an actor lists the actors that this actor receives data from.  The !ref keyword indicates that the string following it is not a literal value but an identifier of (or a reference to) a component defined elsewhere in the workflow.  Here, the GreetingActor is configured to receive any data emitted by the GreetingSource actor, and thus will receive the string 'Hello World!' emitted by GreetingSource.