From 0e7c78df6e6dd164d820261b275a30db93184ce1 Mon Sep 17 00:00:00 2001 From: apvrille <ludovic.apvrille@eurecom.fr> Date: Wed, 6 Mar 2019 17:55:35 +0100 Subject: [PATCH] Update on help and netowrk aspects --- Makefile | 2 +- src/main/java/help/HelpManager.java | 10 +- .../tonetwork/TaskNetworkInterface.java | 179 ++++++++++++++++++ src/main/java/ui/MainGUI.java | 2 +- src/main/java/ui/window/JFrameHelp.java | 35 +++- src/main/resources/help/architecture.html | 20 +- src/main/resources/help/avatar.html | 21 ++ src/main/resources/help/clockdivider.html | 22 ++- src/main/resources/help/cpu.html | 22 ++- src/main/resources/help/diplodocus.html | 20 +- src/main/resources/help/general.html | 20 +- src/main/resources/help/mapping.html | 27 +++ src/main/resources/help/mapping.md | 9 + src/main/resources/help/taskmapping.html | 22 +++ src/main/resources/help/taskmapping.md | 3 + 15 files changed, 377 insertions(+), 37 deletions(-) create mode 100644 src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java create mode 100644 src/main/resources/help/avatar.html create mode 100644 src/main/resources/help/mapping.html create mode 100644 src/main/resources/help/mapping.md create mode 100644 src/main/resources/help/taskmapping.html create mode 100644 src/main/resources/help/taskmapping.md diff --git a/Makefile b/Makefile index 43b91c8fea..745b5e0bdb 100755 --- a/Makefile +++ b/Makefile @@ -206,7 +206,7 @@ ttoolhelp: html html: $(MD2HTML) %.html: %.md - pandoc $< -f markdown -t html -s -o $@ + pandoc $< -f markdown -t html -s -o $@ --lua-filter=doc/ttoolfilter.lua # ======================================== # ========== DOCUMENTATION ========== diff --git a/src/main/java/help/HelpManager.java b/src/main/java/help/HelpManager.java index d994e763a3..1f673562b0 100644 --- a/src/main/java/help/HelpManager.java +++ b/src/main/java/help/HelpManager.java @@ -263,6 +263,12 @@ public class HelpManager extends HelpEntry { return result; } - - + public HelpEntry getHelpEntryWithHTMLFile(String pathToHTMLFile) { + for(HelpEntry he: allEntries) { + if (he.pathToHTMLFile.compareTo(pathToHTMLFile) == 0) { + return he; + } + } + return null; + } } diff --git a/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java new file mode 100644 index 0000000000..bc1676a6cc --- /dev/null +++ b/src/main/java/tmltranslator/tonetwork/TaskNetworkInterface.java @@ -0,0 +1,179 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ + + +package tmltranslator.tonetwork; + +import tmltranslator.*; + +import java.util.Vector; + + +/** + * Class TaskNetworkInterface + * Creation: 06/03/2019 + * + * @author Ludovic Apvrille + * @version 1.0 06/03/2019 + */ +public class TaskNetworkInterface extends TMLTask { + protected int nbOfVCs; + protected int nbOfTasks; + + public TaskNetworkInterface(String name, Object referenceToClass, Object referenceToActivityDiagram) { + super(name, referenceToClass, referenceToActivityDiagram); + } + + // feedbackEvents: one per vc + // inputEvt, channels: one per task + // outputChannel, output event: only one, common: this is a network interface, only one exit! + public void generate(int nbOfVCs, int nbOfTasks, TMLEvent outputEvent, TMLChannel outputChannel, + Vector<TMLEvent> feedbackEvents, Vector<TMLEvent> inputEvents, + Vector<TMLChannel> inputChannels) { + int i; + + this.nbOfVCs = nbOfVCs; + this.nbOfTasks = nbOfTasks; + + + // Attributes + //TMLAttribute dst = new TMLAttribute("dst", "dst", new TMLType(TMLType.NATURAL), "0"); + //this.addAttribute(dst); + TMLAttribute vc = new TMLAttribute("vc", "vc", new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(vc); + TMLAttribute eop = new TMLAttribute("eop", "eop", new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(eop); + TMLAttribute nEvt = new TMLAttribute("nEvt", "nEvt", new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(nEvt); + TMLAttribute loopExit = new TMLAttribute("loopExit", "loopExit", new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(loopExit); + TMLAttribute higherPrio = new TMLAttribute("higherPrio", "higherPrio", new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(higherPrio); + + + //Attributes per tasks + for (i=0; i<nbOfTasks; i++) { + TMLAttribute pktlen = new TMLAttribute("pktlen"+i, "pktlen"+i, new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(pktlen); + TMLAttribute iA = new TMLAttribute("i"+i, "i"+i, new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(iA); + TMLAttribute ispkt = new TMLAttribute("ispkt"+i, "ispkt"+i, new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(ispkt); + TMLAttribute eopi = new TMLAttribute("eop"+i, "eop"+i, new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(eopi); + TMLAttribute dst = new TMLAttribute("dst"+i, "dst"+i, new TMLType(TMLType.NATURAL), "0"); + this.addAttribute(dst); + + } + + for (i=0; i<nbOfVCs; i++) { + TMLAttribute vci = new TMLAttribute("vc"+i, "vc"+i, new TMLType(TMLType.NATURAL), ""+i); + this.addAttribute(vci); + } + + + // Events and channels + addTMLEvent(outputEvent); + for(TMLEvent evt: feedbackEvents) { + addTMLEvent(evt); + } + for(TMLEvent evt: inputEvents) { + addTMLEvent(evt); + } + addReadTMLChannel(outputChannel); + for(TMLChannel ch: inputChannels) { + addWriteTMLChannel(ch); + } + + // Activity Diagram + TMLStartState start = new TMLStartState("mainStart", referenceObject); + activity.setFirst(start); + + TMLForLoop loop = new TMLForLoop("mainLoop", referenceObject); + loop.setInfinite(true); + activity.addElement(loop); + start.addNext(loop); + + /*TMLWaitEvent waitEvt = new TMLWaitEvent("PacketEvent", referenceObject); + waitEvt.setEvent(inputEvent); + waitEvt.addParam("pktlen"); + waitEvt.addParam("dst"); + waitEvt.addParam("vc"); + waitEvt.addParam("eop"); + activity.addElement(waitEvt); + loop.addNext(waitEvt); + + TMLChoice choice = new TMLChoice("MainChoice", referenceObject); + activity.addElement(choice); + + for(int i=0; i<nbOfVCs; i++) { + TMLSendEvent sendEvt = new TMLSendEvent("SendEvtToVC" + i, referenceObject); + sendEvt.setEvent(outputEvents.get(i)); + sendEvt.addParam("pktlen"); + sendEvt.addParam("dst"); + sendEvt.addParam("vc"); + sendEvt.addParam("eop"); + activity.addElement(sendEvt); + choice.addNext(sendEvt); + choice.addGuard("vc == " + i); + + TMLReadChannel read = new TMLReadChannel("ReadFlit" + i, referenceObject); + read.addChannel(inputChannel); + read.setNbOfSamples("1"); + activity.addElement(read); + sendEvt.addNext(read); + + TMLWriteChannel write = new TMLWriteChannel("WriteFlit" + i, referenceObject); + write.addChannel(outputChannels.get(i)); + write.setNbOfSamples("1"); + activity.addElement(write); + read.addNext(write); + + TMLStopState stopL = new TMLStopState("WriteFlit" + i, referenceObject); + activity.addElement(stopL); + write.addNext(stopL); + }*/ + + // Ending loop + TMLStopState stop = new TMLStopState("StopState", referenceObject); + activity.addElement(stop); + loop.addNext(stop); + + } + +} diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java index bd71d87bed..bdc3901673 100644 --- a/src/main/java/ui/MainGUI.java +++ b/src/main/java/ui/MainGUI.java @@ -714,7 +714,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Per public void openHelpFrame(HelpEntry he) { if (helpFrame == null) { - helpFrame = new JFrameHelp("Help", he); + helpFrame = new JFrameHelp("Help", helpManager, he); helpFrame.setVisible(true); return; } diff --git a/src/main/java/ui/window/JFrameHelp.java b/src/main/java/ui/window/JFrameHelp.java index 4c2e4a6d18..8f3fe0631b 100644 --- a/src/main/java/ui/window/JFrameHelp.java +++ b/src/main/java/ui/window/JFrameHelp.java @@ -43,14 +43,18 @@ package ui.window; import help.HelpEntry; +import help.HelpManager; import myutil.TraceManager; import ui.MainGUI; import ui.util.IconManager; import javax.swing.*; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.net.URL; /** @@ -62,9 +66,10 @@ import java.awt.event.ActionListener; public class JFrameHelp extends JFrame implements ActionListener { private JEditorPane pane; private HelpEntry he; + private HelpManager hm; private JPanel jp01; - public JFrameHelp(String title, HelpEntry he) { + public JFrameHelp(String title, HelpManager hm, HelpEntry he) { super(title); this.he = he; @@ -78,6 +83,34 @@ public class JFrameHelp extends JFrame implements ActionListener { jp01.setBorder(new javax.swing.border.TitledBorder("Help of: " + he.getMasterKeyword())); pane = new JEditorPane("text/html;charset=UTF-8", he.getHTMLContent()); pane.setEditable(false); + pane.addHyperlinkListener(new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + URL url = e.getURL(); + if (url == null) { + return; + } + + String link = e.getURL().toString(); + if (link.startsWith("file://")) { + // Open the corresponding file in TTool + String fileToOpen = link.substring(7, link.length()); + TraceManager.addDev("File to open:" + fileToOpen); + if (hm == null) { + return; + } + HelpEntry he = hm.getHelpEntryWithHTMLFile(fileToOpen); + if (he != null) { + setHelpEntry(he); + } else { + TraceManager.addDev("Null HE"); + } + } + } + } + }); + + //TraceManager.addDev("HMLTContent:" + he.getHTMLContent()); JScrollPane jsp1 = new JScrollPane(pane); jsp1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); diff --git a/src/main/resources/help/architecture.html b/src/main/resources/help/architecture.html index 6d7e98764c..f2544af404 100644 --- a/src/main/resources/help/architecture.html +++ b/src/main/resources/help/architecture.html @@ -1,11 +1,19 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> - <title></title> - <style type="text/css">code{white-space: pre;}</style> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>architecture</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> </head> <body> <p>The architecture is used to capture abstract hardware nodes that can be connected through buses.</p> diff --git a/src/main/resources/help/avatar.html b/src/main/resources/help/avatar.html new file mode 100644 index 0000000000..77432669d8 --- /dev/null +++ b/src/main/resources/help/avatar.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>avatar</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<p>Avatar targets the design of embedded software</p> +</body> +</html> diff --git a/src/main/resources/help/clockdivider.html b/src/main/resources/help/clockdivider.html index 79d5c7b72c..f22aab0ad0 100644 --- a/src/main/resources/help/clockdivider.html +++ b/src/main/resources/help/clockdivider.html @@ -1,14 +1,22 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> - <title></title> - <style type="text/css">code{white-space: pre;}</style> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>clockdivider</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> </head> <body> <p>The clock divider parameter specifies the relation between the main hardware clock (which is assumed to be unique) and the clock of the corresponding hardware node.</p> -<p>Said differently, a clock divider of "x" means that the clock of this nodes runs at mainclock/x MHz.</p> +<p>Said differently, a clock divider of “x” means that the clock of this nodes runs at mainclock/x MHz.</p> </body> </html> diff --git a/src/main/resources/help/cpu.html b/src/main/resources/help/cpu.html index 5638f104bd..35ab96ea24 100644 --- a/src/main/resources/help/cpu.html +++ b/src/main/resources/help/cpu.html @@ -1,13 +1,21 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> - <title></title> - <style type="text/css">code{white-space: pre;}</style> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>cpu</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> </head> <body> -<p>The CPU node abstracts a CPU. It simulation semantics ...</p> +<p>The CPU node abstracts a CPU. It simulation semantics …</p> </body> </html> diff --git a/src/main/resources/help/diplodocus.html b/src/main/resources/help/diplodocus.html index 32817004f1..e3124a2be8 100644 --- a/src/main/resources/help/diplodocus.html +++ b/src/main/resources/help/diplodocus.html @@ -1,11 +1,19 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> - <title></title> - <style type="text/css">code{white-space: pre;}</style> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>diplodocus</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> </head> <body> <p>Diplodocus targets the hardware/software partitioning of embedded systems</p> diff --git a/src/main/resources/help/general.html b/src/main/resources/help/general.html index 9257a784b5..be01403cd6 100644 --- a/src/main/resources/help/general.html +++ b/src/main/resources/help/general.html @@ -1,11 +1,19 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> - <title></title> - <style type="text/css">code{white-space: pre;}</style> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>general</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> </head> <body> <p>TTool is a tool for assisting designer to create the architecture and the software of embedded systems.</p> diff --git a/src/main/resources/help/mapping.html b/src/main/resources/help/mapping.html new file mode 100644 index 0000000000..f9556702f6 --- /dev/null +++ b/src/main/resources/help/mapping.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>mapping</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<h1 id="mapping">Mapping</h1> +<p>The mapping consists in:</p> +<ul> +<li><a href="file://taskmapping.html">mapping tasks</a> to execution nodes: to CPUs, to FPGAS, to hardware accelerators (a.k.a. HwAs).</li> +<li>mapping communication channels to communication paths built upon buses, bridges, memories.</li> +</ul> +<p>If a user makes an incomplete mapping of communication channels, TTool automatically decides of a channel mapping.</p> +</body> +</html> diff --git a/src/main/resources/help/mapping.md b/src/main/resources/help/mapping.md new file mode 100644 index 0000000000..21a17ba8ef --- /dev/null +++ b/src/main/resources/help/mapping.md @@ -0,0 +1,9 @@ +# Mapping + +The mapping consists in: + +* [mapping tasks](file://taskmapping.md) to execution nodes: to CPUs, to FPGAS, to hardware accelerators (a.k.a. HwAs). +* mapping communication channels to communication paths built upon buses, bridges, memories. + +If a user makes an incomplete mapping of communication channels, TTool automatically decides of a channel mapping. + diff --git a/src/main/resources/help/taskmapping.html b/src/main/resources/help/taskmapping.html new file mode 100644 index 0000000000..4be2dd24a6 --- /dev/null +++ b/src/main/resources/help/taskmapping.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>taskmapping</title> + <style> + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<h1 id="task-mapping">Task Mapping</h1> +<p>To map a task on an execution node, select a task artifact, and then click on the corresponding execution node. Depending on the host execution node, you may also select options of the task artifact by double ckicling on the artifact. For instance, on a CPU, the priority of the task can be selected.</p> +</body> +</html> diff --git a/src/main/resources/help/taskmapping.md b/src/main/resources/help/taskmapping.md new file mode 100644 index 0000000000..12b7b28c7b --- /dev/null +++ b/src/main/resources/help/taskmapping.md @@ -0,0 +1,3 @@ +# Task Mapping + +To map a task on an execution node, select a task artifact, and then click on the corresponding execution node. Depending on the host execution node, you may also select options of the task artifact by double ckicling on the artifact. For instance, on a CPU, the priority of the task can be selected. \ No newline at end of file -- GitLab