08.02.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!