Extending the JS system with modules
To extend the JS code we recommend using 2 strategies:
Modules¶
Clarive follows CommonJS specification for loading modules, you can divide your javascript building blocks accross
multiple files, export needed functions and then require them where needed.
For example:
/* foo.js */
var Foo = function () {};
Foo.prototype.log = function () {
console.log('Foo!');
};
exports.Foo = new Foo();
/* foo/bar.js */
module.exports = function(){
console.log('fooBar!');
};
/* index.js */
var foo = require('./foo');
var bar = require('./foo/bar.js');
foo.log(); // Foo!
bar(); // fooBar!
User included modules is recommended to be stored in the filesystem, under CLARIVE_BASE/plugins/[plugin-name]/modules
folder.
To create the modules folder, we recommend creating a plugin first in your CLARIVE_BASE location
// create the file plugins/myplugin/modules/myutil.js:
exports.doThis = function(num) {
print("This is it: " + num);
};
// now use it in your code
var myutils = require("myutil");
myutils.doThis(123);
Rules¶
Write an independent rule with common logic needed by other rules. Then invoke that rule as part of your code.
Write a rule with a JS CODE operation with the following content:
var something = cla.stash("something");
cla.stash("myresults", something * 1000 );
var stash = { something: 123 };
cla.rule.run('my_rule_runner', stash);
print( "results=" + stash.myresults ); // you get 123000
Read more about cla.rule here