From: <bd...@us...> - 2011-01-28 16:06:10
|
Revision: 8769 http://unicore.svn.sourceforge.net/unicore/?rev=8769&view=rev Author: bdemuth Date: 2011-01-28 16:06:01 +0000 (Fri, 28 Jan 2011) Log Message: ----------- Improved help: 1. added common problems subsection 2. added new solution type for opening help pages 3. added matcher/problem/solution for invalid private key usage with plaon SSH Modified Paths: -------------- documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/RichClient.txt documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/images_with_markers.odg eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/plugin.xml eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/schema/problems.exsd eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ProblemCenter.java eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/plugin.xml eclipseclient/trunk/plugins/org.chemomentum.rcp.help.basic/toc.xml Added Paths: ----------- documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/original/troubleshooting.png documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/troubleshooting.png eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ShowHelpPageSolution.java eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/src/main/java/de/fzj/unicore/rcp/terminal/ssh/plain/problems/ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/src/main/java/de/fzj/unicore/rcp/terminal/ssh/plain/problems/ShowInvalidKeyHelpPageSolution.java Removed Paths: ------------- eclipseclient/trunk/plugins/org.chemomentum.rcp.help.basic/html/RichClient.html Modified: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/RichClient.txt =================================================================== --- documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/RichClient.txt 2011-01-28 14:22:57 UTC (rev 8768) +++ documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/RichClient.txt 2011-01-28 16:06:01 UTC (rev 8769) @@ -888,7 +888,9 @@ - Keyboard-Interactive - Public-key: If the user's private key path wasn't specified before, the UNICORE Rich Client tries to find the key in the appropriate default directory -(e.g. ~/.ssh/id_dsa). If this fails the user is prompted to specify the path. +(e.g. ~/.ssh/id_dsa). If this fails the user is prompted to specify the path. +In case your private key format is not recognized properly, please read +<<SUBSUBSECTION_INVALID_KEY_FOR_SSH>>. [[SUBSUBSECTION_GSISSH_PROVIDER]] GSISSH @@ -949,7 +951,134 @@ Terminals to such sites can only be opened from the 'Terminal Config view'. They can be recognised by the 'CustomTargetSite' tag in the Site Type column. + + +[[SECTION_TROUBLESHOOTING]] +Troubleshooting +--------------- + +[[SUBSECTION_LOGGING]] +Event Dialogs and the Client Log +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Using the software, errors or other noteworthy events may occur. The UNICORE +client offers an elaborate mechanism for logging events as well as identifying +and fixing runtime errors. Occuring events have a severity level that can be any +of 'Error', 'Warning', or 'Info'. By default, errors and warnings lead to +opening an event dialog providing a brief problem description (see highlight:1[] + in <<FIGURE_TROUBLESHOOTING>>), whereas events with the Info severity level are + just logged to a file silently. + +When the cause of the problem has been clearly identified, the event dialog +may also offer a list of available solutions for the problem. There are two +different types of solutions: plain text explanations helping the user in +understanding and fixing the problem himself and dynamic links that trigger +certain actions to fix the problem automatically. +In case a problem was clearly caused by an error in the client's program code, +the software helps the user to fill in a problem report and send it to the +un...@li... mailing list. +When encountering additional errors that look like bugs, feel free to compose a +mail to this mailing list, too. This will help us improve the sofware quality. +Please remember to attach the stack trace that can be viewed when clicking the +'Details' button inside the event dialog. +Additional controls in the dialog let the user choose whether to pop up the +event dialog in case additional problems with the same cause arise. This only +works when a problem's cause has been identified. +All events are written to a log file, enabling the client to list them in the +'Client Log' view (see highlight:2[]). The event list can be sorted according to +the event message or the timestamp that is attached to each event. + +Events can be viewed by double clicking them inside the list. This will open +the event dialog once again for displaying the selected event. The 'Back' and +'Next' buttons can be used to navigate through the event list. +The Client Log view can also be used to configure event logging and the event +dialog's pop-up behaviour. To this end, open its pull-down menu and select +the 'Filter' item (see highlight:3[]). + +[[FIGURE_TROUBLESHOOTING]] +.Event dialogs and client log +image::images/troubleshooting.png[{imagewidth?width="{imagewidth}"}] + + +[[SUBSECTION_COMMON_PROBLEMS]] +Common Problems +~~~~~~~~~~~~~~~ + +[[SUBSUBSECTION_NETWORK_PROBLEMS]] +Frequent connection timeouts and other network related problems +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The UNICORE middleware heavily relies on network communication via the Hypertext +Transfer Protocol (HTTP). HTTP is also used for surfing the world wide web, so +when you are able to browse web sites from your client machine, you should be +able to contact well-maintained UNICORE Grids, too. Similarly to web browsing, +you might run into trouble when you are behind a proxy server. Additional +problems may occur in very slow network environments, where you might experience + frequent connection timeouts. In both scenarios, you should check the client's + network preferences (see <<SUBSUBSECTION_PREFERENCES_GENERAL>>). + +[[SUBSUBSECTION_ACCESS_DENIED]] +Services disappear from the Grid Browser after a refresh +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When trying to refresh the client's information about a Grid service that you +are not allowed to access with your user certificate, the service node in the +Grid Browser will change its appearance. Depending on the preferences of the +Grid Browser, inaccessible or failed nodes may also be hidden from the Grid +browser (see <<SUBSUBSECTION_PREFERENCES_GRID_BROWSER>>). + +[[SUBSUBSECTION_OUTDATED_VIEW_OF_THE_GRID]] +Outdated view of the Grid +^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to minimize network traffic, the UNICORE Rich Client caches quite a bit +of information about Grid services it finds. This also helps improve the +performance in many situations. However, it might lead to situations where the +client shows an outdated view of the Grid (e.g. it displays files that have +already been deleted by someone else on the server). Often, a manual refresh +on the affected services or their parent services will help (usually invoked by +double-clicking a service; note: double-clicking files will lead to downloading +them to a temporary folder, instead double-click their parent folder). + +[[SUBSUBSECTION_INVALID_KEY_FOR_SSH]] +Unsupported key format for interactive site access via SSH +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When using a private/public key pair that was created with proprietary Windows +tools e.g. F-Secure, or Secure Shell Client (SSH.com), you might get an error +message when trying to open a terminal. The URC SSH plugin is not able to +process such proprietary private key formats. However, it is possible to +convert the format of your existing private key to OpenSSH format, which can be +handled by the URC. To achieve this you can use the free Third Party Software +PuTTYGen: + +1. Download the Windows application PuttyGen.exe (puttygen.exe). Alternatively, +you can download the whole Putty software (putty-x.xx.installer.exe) from +http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html + +2. Execute PuttyGen (e.g. double-click puttygen.exe) + +3. Click the load button in the Putty Key Generator window to load your existing +private key. Please remember to select All Files (".") from the file filter in +the file browser. By default the PuTTY Private Key file extension (.ppk) is set. +Open the private key file which you want to use in the UNICORE Rich Client. + +4. Enter the passphrase of your private key. You should see some information +about the loaded private key and the associated public key in the panel of the +PuTTY window. + +5. To create a copy of your private key in OpenSSH format, go to the Conversions +menu and select 'Export OpenSSH key'. + +6. Save the newly created private key in OpenSSH format. + +7. Edit the private key in the 'Terminal Config' view and select the newly +created OpenSSH key. You should now be able to authenticate to the desired +target system given your public key has already been placed there before (there +is no need to exchange the public key). Restart the URC if the private key used +before is still cached in the system and open a shell to the target system. + + <<< [[SECTION_REFERENCE]] Reference Modified: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/images_with_markers.odg =================================================================== (Binary files differ) Added: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/original/troubleshooting.png =================================================================== (Binary files differ) Property changes on: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/original/troubleshooting.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/troubleshooting.png =================================================================== (Binary files differ) Property changes on: documentation/trunk/UNICORE 6 Clients, Applications, and APIs/UNICORE Rich Client (URC)/images/troubleshooting.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/plugin.xml =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/plugin.xml 2011-01-28 14:22:57 UTC (rev 8768) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/plugin.xml 2011-01-28 16:06:01 UTC (rev 8769) @@ -36,11 +36,17 @@ <matcher> <simpleMatcher reasonId="BUG"> + <or> <exceptionMatches exceptionClass="java.lang.NullPointerException" position="topmost"> </exceptionMatches> + <messageMatches + messagePattern="Unhandled event loop exception"> + </messageMatches> + </or> </simpleMatcher> + </matcher> <reason> <simpleReason Modified: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/schema/problems.exsd =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/schema/problems.exsd 2011-01-28 14:22:57 UTC (rev 8768) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/schema/problems.exsd 2011-01-28 16:06:01 UTC (rev 8769) @@ -108,6 +108,18 @@ </complexType> </element> + <element name="messageMatches"> + <complexType> + <attribute name="messagePattern" type="string" use="required"> + <annotation> + <documentation> + + </documentation> + </annotation> + </attribute> + </complexType> + </element> + <element name="causedBy"> <complexType> <choice> @@ -147,6 +159,7 @@ <element ref="and"/> <element ref="or"/> <element ref="exceptionMatches"/> + <element ref="messageMatches"/> </choice> <attribute name="reasonId" type="string"> <annotation> @@ -170,6 +183,7 @@ <element ref="and"/> <element ref="or"/> <element ref="exceptionMatches"/> + <element ref="messageMatches"/> </choice> </complexType> </element> @@ -186,6 +200,7 @@ <element ref="and"/> <element ref="or"/> <element ref="exceptionMatches"/> + <element ref="messageMatches"/> </sequence> </complexType> </element> @@ -202,6 +217,7 @@ <element ref="and"/> <element ref="or"/> <element ref="exceptionMatches"/> + <element ref="messageMatches"/> </sequence> </complexType> </element> Modified: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ProblemCenter.java =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ProblemCenter.java 2011-01-28 14:22:57 UTC (rev 8768) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ProblemCenter.java 2011-01-28 16:06:01 UTC (rev 8769) @@ -10,20 +10,18 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; -import de.fzj.unicore.rcp.logmonitor.LoggingConstants; - import eu.unicore.problemutil.Matcher; import eu.unicore.problemutil.Problem; -import eu.unicore.problemutil.ProblemWithSolutions; import eu.unicore.problemutil.Reason; import eu.unicore.problemutil.Solution; import eu.unicore.problemutil.config.ProblemConfig; -import eu.unicore.problemutil.generic.Conjunction; -import eu.unicore.problemutil.generic.Disjunction; -import eu.unicore.problemutil.generic.ExceptionCondition; -import eu.unicore.problemutil.generic.Expression; -import eu.unicore.problemutil.generic.GenericMatcher; -import eu.unicore.problemutil.generic.Negation; +import eu.unicore.problemutil.expressions.Conjunction; +import eu.unicore.problemutil.expressions.Disjunction; +import eu.unicore.problemutil.expressions.ExceptionCondition; +import eu.unicore.problemutil.expressions.Expression; +import eu.unicore.problemutil.expressions.MessageCondition; +import eu.unicore.problemutil.expressions.Negation; +import eu.unicore.problemutil.simple.SimpleMatcher; import eu.unicore.problemutil.simple.SimpleReason; import eu.unicore.problemutil.simple.SimpleSolution; @@ -31,13 +29,12 @@ public static final String EXTENSION_POINT_ID_PROBLEMS = ProblemCenter.class.getPackage().getName(); - private static final String NOT = "not", AND = "and", OR = "or", EXCEPTION_EXPRESSION = "exceptionMatches"; + private static final String NOT = "not", AND = "and", OR = "or", EXCEPTION_EXPRESSION = "exceptionMatches", MESSAGE_EXPRESSION = "messageMatches"; private static ProblemConfig problemConfig; public static ProblemConfig getProblemConfig() { - problemConfig = null; if(problemConfig == null) { problemConfig = new ProblemConfig(); @@ -47,14 +44,7 @@ } public static List<Problem> identifyProblems(IStatus status) { - List<Problem> problems = ProblemCenter.getProblemConfig().matchProblems(status.getException()); - if(problems.isEmpty() && "Unhandled event loop exception".equals(status.getMessage())) - { - Reason r = ProblemCenter.getProblemConfig().getReason(LoggingConstants.REASON_ID_BUG); - List<Solution> s = ProblemCenter.getProblemConfig().getSolutions(r); - ProblemWithSolutions p = new ProblemWithSolutions(r,status.getException(), null,s); - problems.add(p); - } + List<Problem> problems = ProblemCenter.getProblemConfig().matchProblems(status.getMessage(),status.getException()); return problems; } @@ -123,7 +113,7 @@ try { Expression expression = extractExpression(child.getChildren()[0]); String reasonId = child.getAttribute("reasonId"); - GenericMatcher matcher = new GenericMatcher(reasonId, expression); + SimpleMatcher matcher = new SimpleMatcher(reasonId, expression); problemConfig.registerMatcher(matcher); } catch (Exception e) { // do nothing and continue to next element @@ -218,6 +208,12 @@ } return condition; } + else if(MESSAGE_EXPRESSION.equals(element.getName())) + { + String messagePattern = element.getAttribute("messagePattern"); + MessageCondition condition = new MessageCondition(messagePattern); + return condition; + } return null; } } Added: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ShowHelpPageSolution.java =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ShowHelpPageSolution.java (rev 0) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.logmonitor/src/main/java/de/fzj/unicore/rcp/logmonitor/problems/ShowHelpPageSolution.java 2011-01-28 16:06:01 UTC (rev 8769) @@ -0,0 +1,75 @@ +/****************************************************************************** + * Copyright (c) 2007, 2008 g-Eclipse consortium + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Initial development of the original code was made for + * project g-Eclipse founded by European Union + * project number: FP6-IST-034327 http://www.geclipse.eu/ + * + * Contributor(s): + * Mathias Stuempert + *****************************************************************************/ + +package de.fzj.unicore.rcp.logmonitor.problems; + +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.help.IWorkbenchHelpSystem; + +import eu.unicore.problemutil.Problem; + + +/** + * Base class for solutions that open the preferences window at the requested + * properties page. + */ +public abstract class ShowHelpPageSolution + extends GraphicalSolution { + + + public ShowHelpPageSolution() { + super(); + } + + + public ShowHelpPageSolution(String id, String applicability, + String description) { + super(id, applicability, description); + } + + + public ShowHelpPageSolution(String id, String[] applicability, + String description, String[] tags) { + super(id, applicability, description, tags); + } + + + public ShowHelpPageSolution(String id, String[] applicability, + String description) { + super(id, applicability, description); + } + + + protected abstract String getHelpPageRef(); + + + /* + * (non-Javadoc) + * @see eu.geclipse.core.reporting.ISolver#solve() + */ + public boolean solve(String message, Problem[] problems, String details) { + + try { + IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem(); + helpSystem.displayHelpResource( getHelpPageRef() ); + } catch ( Exception exc ) { + // Ignore, no workbench available or no UI thread + } + return false; + } + + + +} Modified: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/plugin.xml =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/plugin.xml 2011-01-28 14:22:57 UTC (rev 8768) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/plugin.xml 2011-01-28 16:06:01 UTC (rev 8769) @@ -44,18 +44,15 @@ </matcher> <reason> <simpleReason + description="The selected private key could not be used for establishing an SSH connection." id="JSCH_INVALID_PRIVATE_KEY" name="Invalid or unknown private key format"> </simpleReason> </reason> <solution> - <simpleSolution - description="Private key format is not accepted and could not be used for establishing an ssh connection. " - id="JSCH_INVALID_PRIVATE_KEY_GEN"> - <applicableFor> - JSCH_INVALID_PRIVATE_KEY - </applicableFor> - </simpleSolution> + <complexSolution + class="de.fzj.unicore.rcp.terminal.ssh.plain.problems.ShowInvalidKeyHelpPageSolution"> + </complexSolution> </solution> </extension> Added: eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/src/main/java/de/fzj/unicore/rcp/terminal/ssh/plain/problems/ShowInvalidKeyHelpPageSolution.java =================================================================== --- eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/src/main/java/de/fzj/unicore/rcp/terminal/ssh/plain/problems/ShowInvalidKeyHelpPageSolution.java (rev 0) +++ eclipseclient/trunk/plugins/de.fzj.unicore.rcp.terminal.ssh.plain/src/main/java/de/fzj/unicore/rcp/terminal/ssh/plain/problems/ShowInvalidKeyHelpPageSolution.java 2011-01-28 16:06:01 UTC (rev 8769) @@ -0,0 +1,21 @@ +package de.fzj.unicore.rcp.terminal.ssh.plain.problems; + +import de.fzj.unicore.rcp.logmonitor.problems.ShowHelpPageSolution; + +public class ShowInvalidKeyHelpPageSolution extends ShowHelpPageSolution { + + + + public ShowInvalidKeyHelpPageSolution() { + super("JSCH_INVALID_PRIVATE_KEY_GEN","JSCH_INVALID_PRIVATE_KEY","Read about unsupported private key formats"); + + } + + + + @Override + protected String getHelpPageRef() { + return "/org.chemomentum.rcp.help.basic/html/RichClient.html#SUBSUBSECTION_INVALID_KEY_FOR_SSH"; + } + +} Deleted: eclipseclient/trunk/plugins/org.chemomentum.rcp.help.basic/html/RichClient.html =================================================================== --- eclipseclient/trunk/plugins/org.chemomentum.rcp.help.basic/html/RichClient.html 2011-01-28 14:22:57 UTC (rev 8768) +++ eclipseclient/trunk/plugins/org.chemomentum.rcp.help.basic/html/RichClient.html 2011-01-28 16:06:01 UTC (rev 8769) @@ -1,2781 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<meta name="generator" content="AsciiDoc 8.5.2" /> -<title>UNICORE Rich Client user manual</title> -<style type="text/css"> -/* Debug borders */ -p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { -/* - border: 1px solid red; -*/ -} - -body { - margin: 1em 5% 1em 5%; -} - -a { - color: blue; - text-decoration: underline; -} -a:visited { - color: fuchsia; -} - -em { - font-style: italic; - color: navy; -} - -strong { - font-weight: bold; - color: #083194; -} - -tt { - color: navy; -} - -h1, h2, h3, h4, h5, h6 { - color: #527bbd; - font-family: sans-serif; - margin-top: 1.2em; - margin-bottom: 0.5em; - line-height: 1.3; -} - -h1, h2, h3 { - border-bottom: 2px solid silver; -} -h2 { - padding-top: 0.5em; -} -h3 { - float: left; -} -h3 + * { - clear: left; -} - -div.sectionbody { - font-family: serif; - margin-left: 0; -} - -hr { - border: 1px solid silver; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -ul, ol, li > p { - margin-top: 0; -} - -pre { - padding: 0; - margin: 0; -} - -span#author { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - font-size: 1.1em; -} -span#email { -} -span#revnumber, span#revdate, span#revremark { - font-family: sans-serif; -} - -div#footer { - font-family: sans-serif; - font-size: small; - border-top: 2px solid silver; - padding-top: 0.5em; - margin-top: 4.0em; -} -div#footer-text { - float: left; - padding-bottom: 0.5em; -} -div#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -div#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.tableblock, div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.0em; - margin-bottom: 2.0em; - margin-right: 10%; - color: #606060; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} - -div.listingblock > div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock, div.verseblock { - padding-left: 1.0em; - margin-left: 1.0em; - margin-right: 10%; - border-left: 5px solid #dddddd; - color: #777777; -} - -div.quoteblock > div.attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock > div.content { - white-space: pre; -} -div.verseblock > div.attribution { - padding-top: 0.75em; - text-align: left; -} -/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ -div.verseblock + div.attribution { - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #527bbd; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 3px solid #dddddd; -} - -div.exampleblock > div.content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -div.imageblock div.content { padding-left: 0; } -span.image img { border-style: none; } -a.image:visited { color: white; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: normal; - color: navy; -} -dd > *:first-child { - margin-top: 0.1em; -} - -ul, ol { - list-style-position: outside; -} -ol.arabic { - list-style-type: decimal; -} -ol.loweralpha { - list-style-type: lower-alpha; -} -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} - -div.tableblock > table { - border: 3px solid #527bbd; -} -thead, p.table.header { - font-family: sans-serif; - font-weight: bold; -} -tfoot { - font-weight: bold; -} -td > div.verse { - white-space: pre; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - - -div.hdlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -div.hdlist tr { - padding-bottom: 15px; -} -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { - vertical-align: top; - font-style: normal; - padding-right: 0.8em; - color: navy; -} -td.hdlist2 { - vertical-align: top; -} -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -.footnote, .footnoteref { - font-size: 0.8em; -} - -span.footnote, span.footnoteref { - vertical-align: super; -} - -#footnotes { - margin: 20px 0 20px 0; - padding: 7px 0 0 0; -} - -#footnotes div.footnote { - margin: 0 0 5px 0; -} - -#footnotes hr { - border: none; - border-top: 1px solid silver; - height: 1px; - text-align: left; - margin-left: 0; - width: 20%; - min-width: 100px; -} - - -@media print { - div#footer-badges { display: none; } -} - -div#toc { - margin-bottom: 2.5em; -} - -div#toctitle { - color: #527bbd; - font-family: sans-serif; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; - font-size: 0.9em; -} -div.toclevel3 { - margin-left: 4em; - font-size: 0.9em; -} -div.toclevel4 { - margin-left: 6em; - font-size: 0.9em; -} -/* Workarounds for IE6's broken and incomplete CSS2. */ - -div.sidebar-content { - background: #ffffee; - border: 1px solid silver; - padding: 0.5em; -} -div.sidebar-title, div.image-title { - color: #527bbd; - font-family: sans-serif; - font-weight: bold; - margin-top: 0.0em; - margin-bottom: 0.5em; -} - -div.listingblock div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock-attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock-content { - white-space: pre; -} -div.verseblock-attribution { - padding-top: 0.75em; - text-align: left; -} - -div.exampleblock-content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -/* IE6 sets dynamically generated links as visited. */ -div#toc a:visited { color: blue; } -/* Debug borders */ -p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { -/* - border: 1px solid red; -*/ -} - -body { - margin: 1em 5% 1em 5%; -} - -a { - color: #145a96; - text-decoration: underline; -} -a:visited { - color: #666666; -} - -em { - font-style: italic; - color: #145a96; -} - -strong { - font-weight: bold; - color: #145a96; -} - -tt { - color: navy; -} - -h1, h2, h3, h4, h5, h6 { - color: #145a96; - font-family: sans-serif; - margin-top: 1.2em; - margin-bottom: 0.5em; - line-height: 1.3; -} - -h1, h2, h3 { - border-bottom: 2px solid silver; -} -h2 { - padding-top: 0.5em; -} -h3 { - float: left; -} -h3 + * { - clear: left; -} - -div.sectionbody { - font-family: serif; - margin-left: 0; -} - -hr { - border: 1px solid silver; -} - -p { - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -ul, ol, li > p { - margin-top: 0; -} - -pre { - padding: 0; - margin: 0; -} - -span#author { - color: #145a96; - font-family: sans-serif; - font-weight: bold; - font-size: 1.1em; -} -span#email { -} -span#revnumber, span#revdate, span#revremark { - font-family: sans-serif; -} - -div#footer { - font-family: sans-serif; - font-size: small; - border-top: 2px solid silver; - padding-top: 0.5em; - margin-top: 4.0em; -} -div#footer-text { - float: left; - padding-bottom: 0.5em; -} -div#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -div#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.tableblock, div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.0em; - margin-bottom: 2.0em; - margin-right: 10%; - color: #606060; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - color: #145a96; - font-family: sans-serif; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffaa; - border: 1px solid silver; - padding: 0.5em; -} - -div.listingblock > div.content { - border: 1px solid silver; - background: #f4f4f4; - padding: 0.5em; -} - -div.quoteblock, div.verseblock { - padding-left: 1.0em; - margin-left: 1.0em; - margin-right: 10%; - border-left: 5px solid #dddddd; - color: #777777; -} - -div.quoteblock > div.attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock > div.content { - white-space: pre; -} -div.verseblock > div.attribution { - padding-top: 0.75em; - text-align: left; -} -/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ -div.verseblock + div.attribution { - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #145a96; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 3px solid #dddddd; -} - -div.exampleblock > div.content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -div.imageblock div.content { padding-left: 0; } -span.image img { border-style: none; } -a.image:visited { color: white; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: normal; - color: navy; -} -dd > *:first-child { - margin-top: 0.1em; -} - -ul, ol { - list-style-position: outside; -} -ol.arabic { - list-style-type: decimal; -} -ol.loweralpha { - list-style-type: lower-alpha; -} -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} - -div.tableblock > table { - border: 3px solid #145a96; -} -thead, p.table.header { - font-family: sans-serif; - font-weight: bold; -} -tfoot { - font-weight: bold; -} -td > div.verse { - white-space: pre; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - - -div.hdlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -div.hdlist tr { - padding-bottom: 15px; -} -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { - vertical-align: top; - font-style: normal; - padding-right: 0.8em; - color: navy; -} -td.hdlist2 { - vertical-align: top; -} -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -.footnote, .footnoteref { - font-size: 0.8em; -} - -span.footnote, span.footnoteref { - vertical-align: super; -} - -#footnotes { - margin: 20px 0 20px 0; - padding: 7px 0 0 0; -} - -#footnotes div.footnote { - margin: 0 0 5px 0; -} - -#footnotes hr { - border: none; - border-top: 1px solid silver; - height: 1px; - text-align: left; - margin-left: 0; - width: 20%; - min-width: 100px; -} - - -@media print { - div#footer-badges { display: none; } -} - -div#toc { - margin-bottom: 2.5em; -} - -div#toctitle { - color: #145a96; - font-family: sans-serif; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; - font-size: 0.9em; -} -div.toclevel3 { - margin-left: 4em; - font-size: 0.9em; -} -div.toclevel4 { - margin-left: 6em; - font-size: 0.9em; -} -</style> -<script type="text/javascript"> -/*<![CDATA[*/ -window.onload = function(){asciidoc.fixReferences();asciidoc.footnotes(); asciidoc.toc(2);} -var asciidoc = { // Namespace. - -///////////////////////////////////////////////////////////////////// -// Table Of Contents generator -///////////////////////////////////////////////////////////////////// - -/* Author: Mihai Bazon, September 2002 - * http://students.infoiasi.ro/~mishoo - * - * Table Of Content generator - * Version: 0.4 - * - * Feel free to use this script under the terms of the GNU General Public - * License, as long as you do not remove or alter this notice. - */ - - /* modified by Troy D. Hanson, September 2006. License: GPL */ - /* modified by Stuart Rackham, 2006, 2009. License: GPL */ - -// toclevels = 1..4. -toc: function (toclevels) { - - function getText(el) { - var text = ""; - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants. - text += i.data; - else if (i.firstChild != null) - text += getText(i); - } - return text; - } - - function TocEntry(el, text, toclevel) { - this.element = el; - this.text = text; - this.toclevel = toclevel; - } - - function tocEntries(el, toclevels) { - var result = new Array; - var re = new RegExp('[hH]([2-'+(toclevels+1)+'])'); - // Function that scans the DOM tree for header elements (the DOM2 - // nodeIterator API would be a better technique but not supported by all - // browsers). - var iterate = function (el) { - for (var i = el.firstChild; i != null; i = i.nextSibling) { - if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { - var mo = re.exec(i.tagName); - if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { - result[result.length] = new TocEntry(i, getText(i), mo[1]-1); - } - iterate(i); - } - } - } - iterate(el); - return result; - } - - var toc = document.getElementById("toc"); - var entries = tocEntries(document.getElementById("content"), toclevels); - for (var i = 0; i < entries.length; ++i) { - var entry = entries[i]; - if (entry.element.id == "") - entry.element.id = "_toc_" + i; - var a = document.createElement("a"); - a.href = "#" + entry.element.id; - a.appendChild(document.createTextNode(entry.text)); - var div = document.createElement("div"); - div.appendChild(a); - div.className = "toclevel" + entry.toclevel; - toc.appendChild(div); - } - if (entries.length == 0) - toc.parentNode.removeChild(toc); -}, - -fixReferences: function () { - - // own implementation of this since it is not supported by all browsers (IE - as usual :) - function getElementsByClassName(element, class_name) - { - var all_obj,ret_obj=new Array(),k=0,teststr; - - if(element.all)all_obj=element.all; - else if(element.getElementsByTagName && !element.all) - all_obj=element.getElementsByTagName("*"); - for(var j=0;j<all_obj.length;j++) - { - if(all_obj[j].className.indexOf(class_name)!=-1) - { - teststr=","+all_obj[j].className.split(" ").join(",")+","; - if(teststr.indexOf(","+class_name+",")!=-1) - { - ret_obj[k]=all_obj[j]; - k++; - } - } - } - return ret_obj; - } - - - function storeSectionNum(refNames,element) { - var id = element.getAttribute("id"); - if(element.innerHTML.match("^[0-9.]+ .*")) - { - var parts = element.innerHTML.split(" "); - var refName = parts[0]; - if(refName.match("\\.$")==".") - { - refName = refName.substr(0,refName.length-1); - } - refNames[id] = "Section "+refName; - } - } - - function storeImageNum(refNames,imageblock) { - - var id = imageblock.getAttribute("id"); - var element = getElementsByClassName(imageblock,"image-title")[0]; - var match; - if(match = element.innerHTML.match("^\\w+\\s+([0-9.]+).*")) - { - var refName = match[1]; - refNames[id] = "Figure "+refName; - } - } - - var refNames = new Array(); - var elements = document.getElementsByTagName("h2"); - for (var i = 0; i < elements.length; ++i) { - storeSectionNum(refNames,elements[i]); - } - - elements = document.getElementsByTagName("h3"); - for (var i = 0; i < elements.length; ++i) { - storeSectionNum(refNames,elements[i]); - } - - elements = document.getElementsByTagName("h4"); - for (var i = 0; i < elements.length; ++i) { - storeSectionNum(refNames,elements[i]); - } - - elements = getElementsByClassName(document,"imageblock"); - for (var i = 0; i < elements.length; ++i) { - storeImageNum(refNames,elements[i]); - } - - for (var i = 0; i < document.links.length; ++i) - { - var link = document.links[i]; - var refName = refNames[link.href.split("#")[1]]; - if(refName != null) - { - link.innerHTML=refName; - } - } -}, - -///////////////////////////////////////////////////////////////////// -// Footnotes generator -///////////////////////////////////////////////////////////////////// - -/* Based on footnote generation code from: - * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html - */ - -footnotes: function () { - var cont = document.getElementById("content"); - var noteholder = document.getElementById("footnotes"); - var spans = cont.getElementsByTagName("span"); - var refs = {}; - var n = 0; - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnote") { - n++; - // Use [\s\S] in place of . so multi-line matches work. - // Because JavaScript has no s (dotall) regex flag. - note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; - noteholder.innerHTML += - "<div class='footnote' id='_footnote_" + n + "'>" + - "<a href='#_footnoteref_" + n + "' title='Return to text'>" + - n + "</a>. " + note + "</div>"; - spans[i].innerHTML = - "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - var id =spans[i].getAttribute("id"); - if (id != null) refs["#"+id] = n; - } - } - if (n == 0) - noteholder.parentNode.removeChild(noteholder); - else { - // Process footnoterefs. - for (i=0; i<spans.length; i++) { - if (spans[i].className == "footnoteref") { - var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); - href = href.match(/#.*/)[0]; // Because IE return full URL. - n = refs[href]; - spans[i].innerHTML = - "[<a href='#_footnote_" + n + - "' title='View footnote' class='footnote'>" + n + "</a>]"; - } - } - } -} - -} -/*]]>*/ -</script> -</head> -<body> -<div id="header"> -<h1>UNICORE Rich Client user manual</h1> -<span id="author">UNICORE Team</span><br /> -<span id="email"><tt><<a href="mailto:uni...@li...">uni...@li...</a>></tt></span><br /> -<span id="revnumber">version 6.3.1,</span> -<span id="revdate">December 2010</span> -<div id="toc"> - <div id="toctitle">Table of Contents</div> - <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript> -</div> -</div> -<div id="content"> -<h2 id="SECTION_INTRODUCTION">1. Introduction</h2> -<div class="sectionbody"> -<div class="paragraph"><p>This document describes how to install and use the Eclipse based Rich Client for -the UNICORE workflow system. UNICORE is a European project that facilitates the -access to modern heterogeneous computer networks, so called ‘Grids’. It offers a -client-server framework for accessing Grid resources. It has a service oriented -architecture (<a href="#SOA">SOA</a>) which means that the functions of the software are -grouped into small coherent chunks (named ‘services’) which can be installed on -different computer systems.</p></div> -<div class="paragraph"><p>The client software enables users to create descriptions of work to be performed -on the Grid, so called ‘jobs’. A single job usually corresponds to the execution -of a computer program on one of the available computer systems in the Grid. Once -a job has been created, the UNICORE Rich Client can submit it to a selected -computer system. The remote execution of the job can be monitored and output -files of the executed program can be downloaded to the user’s computer. In order -to accomplish more complex tasks on the Grid, jobs can be embedded into -workflows. In our terminology, a workflow is a set of activities (the execution -of a single job would be considered an activity), interconnected by transitions -that define the order in which the activities must be performed. Workflows can -be created and edited graphically. Similar to jobs, they can be submitted to a -designated service on the Grid which executes them. Workflow execution can be -monitored in multiple ways and resulting output files can be downloaded to the -local harddisk. Apart from these basic features, the UNICORE Rich Client offers -a bunch of additional functions like browsing and monitoring services on the -Grid, managing user certificates, and transferring files to and from Grid -storages.</p></div> -<div class="paragraph"><p>This document is structured into three main parts: <a href="#SECTION_INSTALLATION">[SECTION_INSTALLATION]</a> -describes the installation procedure and how to startup the client application. -<a href="#SECTION_BASIC_USAGE">[SECTION_BASIC_USAGE]</a> tries to give a brief overview of the basic features and -most frequent use cases of this application. <a href="#SECTION_REFERENCE">[SECTION_REFERENCE]</a> provides a -reference guide to additional functions.</p></div> -<div style="page-break-after:always"></div> -</div> -<h2 id="SECTION_INSTALLATION">2. Installation and Startup</h2> -<div class="sectionbody"> -<h3 id="SUBSECTION_PREREQUISITES">2.1. Prerequisites</h3><div style="clear:left"></div> -<div class="ulist"><ul> -<li> -<p> -Operating Systems: currently Linux and Microsoft Windows are supported. -<span class="footnote"><br />[Eclipse’s windowing toolkit, the Standard Widget Toolkit (SWT) -directly talks to the operating system’s windowing system. While SWT loses its -platform independence through this approach, it allows for seamless integration -with the look and feel of different operating systems.]<br /></span> -</p> -</li> -<li> -<p> -Java Runtime Environment: Sun Java 5 or higher is required. <span class="footnote"><br />[Other -Java implementations (e.g. by GNU or IBM) are not supported.]<br /></span> -</p> -</li> -</ul></div> -<h3 id="SUBSECTION_PROCEDURE">2.2. Procedure</h3><div style="clear:left"></div> -<div class="ulist"><ul> -<li> -<p> -Download the installation archive that matches your operating system. -</p> -</li> -<li> -<p> -Unzip the archive to the desired location. -</p> -</li> -<li> -<p> -Run the executable called ‘UNICORE_Rich_Client.exe’ (or ‘UNICORE_Rich_Client’, -on a Unix/Linux machine). A splash screen will indicate the startup of the -client. -</p> -</li> -<li> -<p> -Specify location and passphrase of the keystore file that holds your -certificates (see <a href="#SUBSECTION_BASIC_SECURITY">[SUBSECTION_BASIC_SECURITY]</a> for details about why this is -necessary). -</p> -</li> -</ul></div> -</div> -<h2 id="SECTION_BASIC_USAGE">3. Basic usage guide</h2> -<div class="sectionbody"> -<h3 id="SUBSECTION_WELCOME_SCREEN">3.1. Welcome screen</h3><div style="clear:left"></div> -<div class="paragraph"><p>When the client is started for the first time, it will display a welcome screen -that provides valuable information and helps in making the first steps with the -UNICORE Rich Client (see <a href="#FIGURE_WELCOME_SCREEN">[FIGURE_WELCOME_SCREEN]</a>).</p></div> -<div class="imageblock" id="FIGURE_WELCOME_SCREEN"> -<div class="content"> -<img src="images/welcome_screen.png" alt="images/welcome_screen.png" width="700" /> -</div> -<div class="image-title">Figure 1: The Welcome screen</div> -</div> -<div class="paragraph"><p>The welcome screen is composed of several web pages that are displayed in the -internal web browser of the client:</p></div> -<div class="ulist"><ul> -<li> -<p> -The <em>Overview</em> page <span style="background-color:#3deb3d; border:solid thin #000000">1</span> contains links to parts of this document and -the Eclipse framework’s user manual. -</p> -</li> -<li> -<p> -The <em>First Steps</em> page <span style="background-color:#3deb3d; border:solid thin #000000">2</span> helps in configuring the client for -accessing different Grids. -</p> -</li> -<li> -<p> -The <em>Tutorials</em> page <span style="background-color:#3deb3d; border:solid thin #000000">3</span> offers links to Flash-based online -tutorials that will be displayed in a web browser. -</p> -</li> -<li> -<p> -The <em>What’s New</em> page <span style="background-color:#3deb3d; border:solid thin #000000">4</span> summarizes the most important new features -of the current client version and lists general UNICORE related news. -</p> -</li> -</ul></div> -<div class="paragraph"><p>A navigation bar on top of each page contains hyperlinks to the other pages. The -toolbar of the welcome screen can also be used to navigate back and forth -between the pages <span style="background-color:#3deb3d; border:solid thin #000000">5</span>. In order to leave the welcome screen and start -working with the client, click the <em>Workbench</em> hyperlink <span style="background-color:#3deb3d; border:solid thin #000000">6</span>. The -welcome screen can later be re-opened via the <em>Help → Welcome</em> pull down menu -item.</p></div> -<h3 id="SUBSECTION_WORKBENCH">3.2. The Eclipse workbench</h3><div style="clear:left"></div> -<div class="paragraph"><p>The client’s main window is called the <em>workbench</em> (see <a href="#FIGURE_WORKBENCH">[FIGURE_WORKBENCH]</a>). -It has different components which can be opened, closed, resized, re-ordered and -even detached from the main window.</p></div> -<div class="imageblock" id="FIGURE_WORKBENCH"> -<div class="content"> -<img src="images/workbench.png" alt="images/workbench.png" width="700" /> -</div> -<div class="image-title">Figure 2: The Eclipse workbench</div> -</div> -<h4 id="SUBSUBSECTION_MENU_TOOL_BAR">3.2.1. Menu bar and tool bar</h4> -<div class="paragraph"><p>At the top of the workbench, there is a menu bar from which different pull down -menus containing ‘global’ actions can be opened <span style="background-color:#3deb3d; border:solid thin #000000">1</span>. For convenience, -some actions are available via shortcuts from the tool bar just below the menu -bar. The items in the tool bar can change depending on the selection of objects -in the client, mirroring the fact that different actions can be performed on -different objects.</p></div> -<h4 id="SUBSUBSECTION_VIEWS">3.2.2. Views</h4> -<div class="paragraph"><p>Resizeable and draggable tab panels containing buttons and other controls are an -integral part of all Eclipse based clients. These panels are called <em>views</em> -<span style="background-color:#3deb3d; border:solid thin #000000">2</span>. Apart from being resized and moved, they can also be closed and -re-opened. Detaching a view from the workbench will embed the view in its own -window. Double-clicking its title will maximise it and double-clicking the title -once more will restore its original size. Some views are ‘singletons’, so only -one instance of the view can be opened, whereas other views can be opened -multiple times, showing a different content in each instance.</p></div> -<h4 id="SUBSUBSECTION_WORKSPACE">3.2.3. The workspace</h4> -<div class="paragraph"><p>The workspace is a directory, usually located on the local hard drive -<span style="background-color:#3deb3d; border:solid thin #000000">3</span>. It is supposed to hold all relevant user data needed for the -daily work with an Eclipse-based client. Inside the workspace, the user data is -organised in subfolders, so-called <em>projects</em>. All files within a project should -be thematically related. In the UNICORE Rich Client, each job description file -(with the extension ‘.job') and each workflow description file (`.flow’ file) is -stored in its own project, together with its input files. -Having a separate project for each job or workflow has the following advantages:</p></div> -<div class="olist arabic"><ol class="arabic"> -<li> -<p> -Jobs and workflows can get complex. They may need a large number of input -files that might be organised in their own directory structure. Mixing up -multiple jobs or workflows in a single project can therefore lead to mixing up -input and/or output files. -</p> -</li> -<li> -<p> -Eclipse has its own notion of importing and exporting projects. This provides -a nice mechanism for exporting jobs and workflows (e.g. to a single zipped file -that contains all necessary input data) and sharing it with co-workers. In the -UNICORE Rich Client, job input files should be put into a directory called -‘input files’ inside the project. Relative paths can then be interpreted -relative to this directory, which makes sharing of projects very easy. -</p> -</li> -</ol></div> -<div class="paragraph"><p>Apart from the data that are relevant to the user, the workspace also contains -metadata that are used in order to manage user preferences and store the state -of the Eclipse workbench. -In the Eclipse framework, there are different views for displaying the content -of the workspace. The most widely used view is called the <em>Navigator</em> view. It -represents the workspace as a file tree and is very similar to most graphical -file browsers. It can be used for creating, renaming, copying, and deleting -projects, files and directories. Projects can also be ‘closed’ if unneeded. This -will hide their content from the Navigator view.</p></div> -<h4 id="SUBSUBSECTION_EDITORS">3.2.4. Editors</h4> -<div class="paragraph"><p>When a file is supposed to be opened (e.g. after double clicking it in the -<em>Navigator</em> view, Eclipse tries to identify a suitable editor by looking at the -file’s extension. If an associated editor can be found, it is invoked and will -display the file content. For example, ‘.txt’ files invoke a text editor, the -‘.flow’ extension invokes the workflow editor <span style="background-color:#3deb3d; border:solid thin #000000">4</span>. File types can also -cause associated external applications to be started; for example, a web browser -for ‘.html’ files. If the filetype is not supported, an error message is -displayed. Associations between file types and editors are defined in the -preference page that can be reached via <em>Window → Preferences → General → -Editors → File Associations</em>.</p></div> -<h4 id="SUBSUBSECTION_CONTEXT_MENUS">3.2.5. Context menus</h4> -<div class="paragraph"><p>Many functions in the client are available via context menus <span style="background-color:#3deb3d; border:solid thin #000000">5</span>. In -order to open a context menu, right click an object or a view. The items -available in the context menu are different, depending on the object on which -the context menu was opened.</p></div> -<h4 id="SUBSUBSECTION_PERSPECTIVES">3.2.6. Perspectives</h4> -<div class="paragraph"><p>The outer appearance of the workbench is very flexible and can change a lot over -time. The user benefits from being able to hide information he does not want to -see at the moment and arrange the remaining components in a way that fits his -needs best. However, less experienced users may have to search for information -they accidentally hid in the first place. In order to deal with this problem, -the Eclipse framework has introduced the notion of <em>perspectives</em>. -A perspective is a well defined arrangement of views and editors in the -workbench. In addition to determining which components are visible in which -spots, it can also influence the actions that can be performed from the tool bar -of the workbench. A given arrangement can be saved as a perspective for later -re-use and a user can always restore the original appearance of a perspective by -resetting the perspective.</p></div> -<h3 id="SUBSECTION_BASIC_SECURITY">3.3. Basic security configuration</h3><div style="clear:left"></div> -<h4 id="SUBSUBSECTION_X509_ENCRYPTION">3.3.1. How does encryption with X.509 certificates work?</h4> -<div class="paragraph"><p>Most security mechanisms on a UNICORE Grid are based on X.509 certificates. For -each X.509 certificate, there is a pair of cryptographic keys, that fit each -other. These keys can be used to encrypt and decrypt messages: whatever has been -encrypted with one of the keys can only be decrypted with the other key - but -the keys are not equal. This is why this type of encryption is called -‘asymmetric’. Such an asymmetric pair of keys can be used in a public key -infrastructure (PKI): The trick is that one of the two keys, called the ‘public’ -key is published and therefore open to everyone, whereas the other key - called -the ‘private’ key - is kept secret by the owner of the key pair. In order to be -able to keep the private key secret, it must be very difficult to reconstruct or -guess the private key by looking at the public key.</p></div> -<div class="paragraph"><p>Everyone can use the public key to encrypt messages that only the owner of the -private key can read. And, equally important, the owner of the private key can -prove that he owns the private key by encrypting a meaningful message with it: -everyone can use the public key to decrypt the message and make sure that it is -meaningful, but only the owner of the private key can produce the encrypted -message. Asymmetric encryption can also be used for digitally signing documents. -With a digital signature, a person can prove that he really is the author of a -document, or that he approves the content of a document. The most common way of -creating digital signatures comprises two steps: first, a checksum for the -document to be signed is computed. The checksum is a relatively short sequence -of characters (compared to the document). It is computed by applying a -well-known checksum function that always generates the same checksum as long as -the content of the document is unchanged. Second, the checksum is encrypted with -a private key. The encrypted checksum is published together with the document -and forms the digital signature. A reader of the document can use it for -checking whether the document was changed. To this end, he applies the same -checksum function to the document and compares the result to the checksum that -he obtains by decrypting the digital signature (using the public key).</p></div> -<div class="paragraph"><p>In order to obtain an X.509 certificate from a key pair, the public key is -stored in a document, together with some information about the certificate’s -owner-to-be (e.g. name, email address, organisation). This document is then -digitally signed with the private key of a certificate authority (<a href="#CA">CA</a>), -which means that the CA approves the creation of the certificate. This process -is called ‘issuing a certificate’. Everyone can use the CA’s public key to -check, whether the certificate has been signed by the CA.</p></div> -<h4 id="SUBSECTION_UNICORE_X509">3.3.2. How does UNICORE use X.509 certificates?</h4> -<div class="paragraph"><p>With X.509 certificates, UNICORE ensures two things: First, each client or -server on the Grid can attest that he is who he claims to be. He does so by -presenting his certificate - which contains the public key - and providing -evidence that he knows the private key belonging to this public key (by -encrypting a previously defined message). Since private keys are kept secret, he -m... [truncated message content] |