Introduction
- Node.js® is an open source, cross-platform JavaScript run-time environment and is a frequently used scripting language available for Linux, MacOS, Windows, and other platforms.
- This article explains how to include Node.js® scripts with JS7 job scripts.
- As a prerequisite to executing Node.js® code it is required to install Node.js on the server for which the JS7 Agent is operated.
Invoking Node.js® from Jobs
Unix
...
Code Block |
---|
language | js |
---|
title | Example how run Node.js® script code with a shebang |
---|
linenumbers | true |
---|
|
#!/usr/bin/node
var name =(process.env.name);
var num = parseInt(process.env.num);
//print value of variable
console.log( name);
console.log( num); |
...
Code Block |
---|
language | js |
---|
title | Example how to run Node.js® script code from a file |
---|
linenumbers | true |
---|
|
node /some/location/JS7-2.5.1/demo_Node.js |
Windows
...
Code Block |
---|
language | js |
---|
title | Example how run PowerShell® script code with a shebang replacement |
---|
linenumbers | true |
---|
|
@@findstr/v "^@@f.*&" "%~f0"|node.exe -&goto:eof
var name =(process.env.name);
var num = parseInt(process.env.num);
//print value of variable
console.log( name);
console.log( num); |
...
Code Block |
---|
language | js |
---|
title | Example how to run Node.js® script code from a file |
---|
linenumbers | true |
---|
|
node.exe C:\Users\Documents\demo_Node.js |
Passing Variables to subsequent Jobs
Users frequently find a situation when a job creates a result which should be forwarded to subsequent jobs in a workflow.
Download
Download Example for Unix (.json upload): pdwVariablesPassingUnix.workflow.json
Download Example for Windows (.json upload): pdwVariablesPassingWindows.workflow.json
First Job: Write Return Variables
Shell jobs can pass results to subsequent jobs:
- by creating a key/value pair with the syntax:
key=value
. - The key/value pair is appended to a temporary file which is provided by JS7 and that is indicated by the
JS7_RETURN_VALUES
environment variable. - The key provided is the name of the variable which can be used by subsequent jobs.
- If the variable does not yet exist it will be created on-the-fly.
- If the variable exists then the value will be overwritten.
...
Code Block |
---|
language | js |
---|
title | Example of a Unix Shell job passing variables |
---|
linenumbers | true |
---|
collapse | true |
---|
|
#!/usr/bin/node
const fs = require('fs');
//fetch the env. variables
var name = (process.env.name);
var num = parseInt(process.env.num);
//print value of variable
console.log(name);
console.log( num);
//Modify the values
var num1 = num + num;
console.log( num1);
var name1 = name + " This is JS7 ";
console.log( name1);
//pass results from a key/value pair that is appended to a temporary file provided by JS7
fs.appendFile(process.env.JS7_RETURN_VALUES ,'num1='+num1+'\n',(err) => {});
fs.appendFile(process.env.JS7_RETURN_VALUES ,'name1='+name1+'\n',(err) => {});
|
Code Block |
---|
language | js |
---|
title | Example of a Windows Shell job passing variables |
---|
linenumbers | true |
---|
collapse | true |
---|
|
@@findstr/v "^@@f.*&" "%~f0"|node.exe -&goto:eof
const fs = require('fs');
//fetch the env. variables
var name = (process.env.name);
var num = parseInt(process.env.num);
//print value of variable
console.log(name);
console.log( num);
//Modify the values
var num1 = num + num;
console.log( num1);
var name1 = name + " This is JS7 ";
console.log( name1);
//pass results from a key/value pair that is appended to a temporary file provided by JS7
fs.appendFile(process.env.JS7_RETURN_VALUES ,'num1='+num1+'\n',(err) => {});
fs.appendFile(process.env.JS7_RETURN_VALUES ,'name1='+name1+'\n',(err) => {}); |
Second Job: Read Variables
Shell jobs access order variables from a mapping to environment variables.
- The JOC Cockpit GUI allows the mapping to be added per job from the right lower corner with the Environment Variables sub-tab.
- The mapping includes free choice of the name of an environment variable which is used in the job script and to assign an existing order variable.
- The spelling of variable names is case-sensitive.
Image Removed
...
Code Block |
---|
language | js |
---|
title | Example of a Unix Shell job reading variables |
---|
linenumbers | true |
---|
collapse | true |
---|
|
#!/usr/bin/node
var name1 =(process.env.name1);
var num1 = parseInt(process.env.num1);
//print value of variable
console.log(name1);
console.log( num1); |
...
language | js |
---|
title | Example of a Windows Shell job reading variables |
---|
linenumbers | true |
---|
collapse | true |
---|
...