Java CoG Kit Workflow Design
From Java CoG Kit
write 2 page summary on workflow (Deepti)
Dig out the comparison to BPEL (Hategan)
Write two page summarey on technical architecture aspects of karajan [e.g. engine, web service, ...] (Hategan)
TASK: TBD
Related systems
TASK: Introduction (Gregor)
TASK: Conclusion
TASK: Water
Task: Write two pages on language features, list selected library methods in a table/tables
Contents |
Task submission
Karajan uses a lightweight threading interpreter, which allows it to orchestrate highly concurrent workflows, if the Grid middleware supports scalable modes of operation. Execution of large numbers of workflow threads bears less impact on resources than the alternative of using native threads. The submission of Grid tasks is mainly achieved by the use of a specialized library which allows both scheduled and unscheduled operations. With unscheduled tasks the user has the responsibility of specifying the bindings to physical resources and describing the means through which submission of tasks is to occur (Classic-GRAM, WS-GRAM, GSIFTP, SSH, etc.), while scheduled tasks delegate the job of assigning physical resources and the means to submit tasks to a scheduler.
Service
Karajan features a service which can be used to execute parts of a script remotely. Some of the features of the service are listed below:
Security
The service and client use GSI security enabling strong authentication and encryption of data
Configurable communication channels
The Karajan networking infrastructure consists of configurable communication sub-systems, which separate the high level messaging protocols from the low level implementation details. The current implementation uses SSL sockets over TCP/IP, and can be configured to use persistent connections, or callbacks, or polling (or a combination of them), and the configurations can be different for each host or for a specific domain. This provides firewall transparency when needed, yet can minimize resource consumption and maximize performance when firewalls are not involved.
Semantic transparency
Remote execution can be seamlessly integrated with local execution, while preserving most of the system semantics, such as return values, definitions, etc.
(more details in the reference guide)
Using the remote() Karajan element, it is possible to send portions of code for execution on a remote service while preserving the semantics of the code. For example, the following program will calculate the n-th Fibonnaci number on a remote machine:
element(fib, [n] if( n == 1 then(1) else(parallel(fib(n-1)+fib(n-2))) ) ) set(result remote(“https://machine:port” fib(20) ) ) print(“fib(20) = “, result)
