New Statistical Algorithms for the Analysis of Mass - FU Berlin, FB MI ...
New Statistical Algorithms for the Analysis of Mass - FU Berlin, FB MI ...
New Statistical Algorithms for the Analysis of Mass - FU Berlin, FB MI ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
5.6. QAD GRID WORKFLOWS 143<br />
Services<br />
Each registered service (see section 5.5.1) can be used in a workflow. During<br />
<strong>the</strong> service registration process <strong>the</strong> needed input parameters and <strong>the</strong> output<br />
<strong>for</strong>mat are defined. When a service is included in a workflow <strong>for</strong> each <strong>of</strong> <strong>the</strong>se<br />
input parameters a source must be specified. This can be a fixed parameter<br />
(e.g. a numeric value <strong>for</strong> an algorithm), <strong>the</strong> result <strong>of</strong> a database query, such<br />
as <strong>the</strong> result <strong>of</strong> a preceding workflow step or a user defined parameter that<br />
will be fixed at execution time (see below).<br />
In addition to <strong>the</strong>se Grid services <strong>the</strong>re exist fur<strong>the</strong>r system services that<br />
require client/server interaction. For example, services that copy files from a<br />
server to a client.<br />
Programming Language Elements<br />
A QAD Grid workflow can contain so-called programming language elements.<br />
These are constructs known from imperative programming languages. The<br />
QAD Grid system knows <strong>the</strong> following constructs:<br />
Variables: The QAD Grid workflow system provides two kinds <strong>of</strong> variables:<br />
(a) workflow variables that are initialized and modified during <strong>the</strong> workflow<br />
design phase and (b) user defined variables that are initialized by<br />
<strong>the</strong> user at <strong>the</strong> time <strong>of</strong> execution and can be modified during workflow<br />
execution. Usually at least one user defined variable is used within a<br />
workflow that defined <strong>the</strong> dataset that is used.<br />
Assignment statements: Each variable can be assigned a value. Internally<br />
<strong>the</strong> value is represented as a string object and converted to numbers if<br />
required during workflow execution.<br />
Evaluation <strong>of</strong> expressions: Simple expressions (such as basic arithmetics<br />
or relational operators) can be evaluated at runtime. For example a<br />
variable “VAR1” can be assigned a value “VAR2 * 5” that would be<br />
first evaluated to five times <strong>the</strong> current value <strong>of</strong> <strong>the</strong> variable “VAR2”<br />
and <strong>the</strong>n assigned to “VAR1”.<br />
Unconditional branching statements: This is commonly known as jump<br />
or goto. This item has a parameter that contains <strong>the</strong> target item <strong>the</strong><br />
workflow execution process will jump to. Only special items (tags) can<br />
be used as jump targets.<br />
Conditional branching statements: When <strong>the</strong> workflow execution process<br />
hits this item type it first evaluates <strong>the</strong> condition parameter which must<br />
evaluate to “false” or “true”. For example a valid condition might be<br />
“VAR1 ≥ 5”. For each outcome (“true or false”) a jump target can be<br />
defined where <strong>the</strong> process will branch to. If none is given <strong>the</strong> process<br />
will continue with <strong>the</strong> next item.<br />
There are also higher conditional branching elements available <strong>for</strong> <strong>the</strong><br />
user, such as readily implemented checks whe<strong>the</strong>r all jobs <strong>of</strong> a particular<br />
kind <strong>of</strong> this particular workflow are finished or whe<strong>the</strong>r a task finished<br />
with an error. This gets very handy <strong>for</strong> example if during pre-processing<br />
a 2D spectrum is to be split up into its 1D components. Then, this item<br />
can be used to check whe<strong>the</strong>r all <strong>of</strong> this splitting jobs have finished so<br />
<strong>the</strong> next workflow stage can be started.