@servisbot/npm-sb-flow-validation
v1.2.1
Published
Validates node red flows
Downloads
1,300
Readme
npm-sb-flow-validation
Determines wether a flow contains a cycle.
Get started
Install the npm module
npm install --save @servisbot/npm-sb-flow-validation
Implement the code
const detectCyclesInFlow = require('@servisbot/npm-sb-flow-validation');
// Expects the following flow structure, which is the Data object from the worker
const flow = { worker.Data }
// Returns true / false
const result = detectCyclesInFlow(flow);
console.log('Has Cycles : ', !!result); // will give a true/false value
console.log('Found cycle at node id', result) // if the above is true, result will be the vertex
Tests
Run all test suites
npm run test
Run unit tests
npm run test-unit
Run integration tests
npm run test-integration
Black list
If you do not want to detect cycles that contain specific nodes eg. input node, you can add the node type to the /src/nodeBlacklist.js file and the node will be ignored.
Eg. use case: dialog node -> input node -> dialog node, this is regarded as a valid cycle and will be ignored as it's currently declared within the blacklist.
What this will detect
Designed to detect cycles within multiple flows and subflows.
Sample flows that contain cycles
- Flow: start -> dialogA -> dialogB -> dialogA
- Flow: start -> dialogA -> SubFlow -> dialogB Subflow: input -> dialogC -> dialogD -> dialogC -> output
- Flow: start -> dialogA -> Flow2 Flow2: input -> dialogB -> output -> Flow1
- Flow: start -> dialogA -> SubFlow -> dialogA Subflow: input -> dialogB -> output
Sample flows that do not contain cycles
- FLow: start -> dialogA -> Input -> dialogA
- Flow: start -> dialogA -> input -> Flow2 Flow2: input -> dialogB -> output -> Flow1
- Flow: start -> dialogA -> SubFlow -> dialogB Subflow: input -> dialogC -> Input -> dialogC -> output