Custom Nodes
Custom Nodes erweitern Node-RED um eigene Funktionalität. Im AppTemplate wird gezeigt, wie ein Node über External Tasks mit der ProcessCube® Engine kommuniziert.
Was sind Custom Nodes?
Ein Custom Node besteht aus zwei Dateien:
- JavaScript-Datei (
.js) — Enthält die Logik des Nodes - HTML-Datei (
.html) — Definiert die Editor-Oberfläche in Node-RED
Beispiel: Hello Node
Der Hello Node ist ein einfacher Node, der eine konfigurierbare Begrüßung zu einer Nachricht hinzufügt.
JavaScript-Datei (hello.js)
module.exports = function(RED) {
function HelloNode(config) {
RED.nodes.createNode(this, config);
const node = this;
node.on('input', function(msg) {
// Begrüßungstext aus der Konfiguration oder vom Input
const greeting = config.greeting || 'Hello';
msg.payload = `${greeting}, ${msg.payload}!`;
node.send(msg);
});
}
RED.nodes.registerType("hello", HelloNode);
}HTML-Datei (hello.html)
Die HTML-Datei definiert drei Bereiche:
- Node-Registrierung — Kategorie, Farbe, Ein-/Ausgänge und Eigenschaften
- Edit-Dialog — Formularfelder für die Konfiguration
- Hilfetext — Dokumentation im Node-RED Editor
<script type="text/javascript">
RED.nodes.registerType('hello', {
category: 'MyProject',
color: '#f7a823',
defaults: {
name: { value: "" },
greeting: { value: "Hello", required: true }
},
inputs: 1,
outputs: 1,
label: function() {
return this.name || "hello";
}
});
</script>
<script type="text/html" data-template-name="hello">
<div class="form-row">
<label for="node-input-greeting">Begrüßung</label>
<input type="text" id="node-input-greeting" placeholder="Hello">
</div>
</script>
<script type="text/html" data-help-name="hello">
<p>Fügt eine Begrüßung zur Nachricht hinzu.</p>
</script>Registrierung in package.json
Damit Node-RED den Node findet, muss er in der package.json registriert werden:
{
"node-red": {
"nodes": {
"hello": "nodes/sample_node/hello.js"
}
}
}Integration mit External Tasks
Custom Nodes können über External Tasks mit der ProcessCube® Engine kommunizieren. Dabei wird ein BPMN-Prozess in der Engine definiert, der einen External Task enthält. Der Custom Node in Node-RED abonniert diesen Task und führt die Logik aus.
Der zugehörige BPMN-Prozess wird im processes/-Verzeichnis abgelegt und beim Start automatisch in die Engine geladen.