diff --git a/Makefile b/Makefile index 43b91c8fead3f9117c4b43d226600d4bc616adc9..745b5e0bdb1eee2f0b6b56c1c9f1dc3b5345146a 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 d994e763a3c130aa9569b324987aeda5262fcb17..1f673562b04f76e857521d782548ba7e3001168b 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 0000000000000000000000000000000000000000..bc1676a6cc436e09a0f9bd6d097d1f23eec5c903 --- /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 bd71d87beda5a38c0198e80826baf54a20611a5e..bdc3901673141daa6b91eb2cd213f01416ef460b 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 4c2e4a6d1827c0cd812162232c2effb698a5bbac..8f3fe0631b34ce3f6f33c6ec6e6d8faefadddd8b 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 6d7e98764cfebc595c82678e1475d9c343b7b733..f2544af4044fc2f9f1cea52964e25742156c3766 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 0000000000000000000000000000000000000000..77432669d8dc7b1e46f9daf9cbed4a5b8764352d --- /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 79d5c7b72c40e318173446935595f19f22d579fc..f22aab0ad0c0381b0fe98fee695c2bfbd3d3c07b 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 5638f104bd689d3025634d227b45fbc44ade0ea7..35ab96ea24f60becbe24a06a83bc42608c6f2dd4 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 32817004f1b95019d7f06e2f750468d099d4bc9a..e3124a2be82b14501ec56c298a7ef6899bc69165 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 9257a784b55a2bbf1f1c1c2bca6e0183b785a86f..be01403cd658e4f13fd45bdaa8721a9a8f49388b 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 0000000000000000000000000000000000000000..f9556702f63afbe474914b3496189b384cff54c0 --- /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 0000000000000000000000000000000000000000..21a17ba8efc38373b214703fd626f27c88b981e7 --- /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 0000000000000000000000000000000000000000..4be2dd24a66a6119b45ae4303083e5c2ff821992 --- /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 0000000000000000000000000000000000000000..12b7b28c7b82962725766608b9268e4719544f29 --- /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