@servisbot/npm-sb-flow-validation

1.2.1 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i @servisbot/npm-sb-flow-validation

Weekly Downloads

292

Version

1.2.1

License

ISC

Unpacked Size

609 kB

Total Files

78

Last publish

Collaborators

  • servisbotnpm