Extension Definitions
Extensibility is an important requirement for business applications built to follow custom processes in Line of Business(LoB) areas. In the cloud toolkit, a generic description of the extension points and extensions is provided without explicitly defining the contract. This a simple but powerful way to define extensions.
Extension Points
An Extension Point
is the place in the core module, which is expected to be enhanced by particular custom created modules. It is a simple JSON
formated *.extensionpoint
file and can be placed anywhere in your project.
{
"extension-point": "/project1/extensionPoint1",
"description": "Description for Extension Point 1"
}
Extensions
An Extension
is the plug-in in the custom module, which extends the core functionality. It is a simple JSON formated *.extension
file and can be placed anywhere in your project.
{
"extension": "/project1/extension1",
"extension-point": "/project1/extensionPoint1",
"description": "Description for Extension 1"
}
The
extension
parameter above should point to a validJavaScript module
.
Calling Extensions
Within the core module, you can iterate over the defined extensions and call theirs functions:
let extensions = extensionManager.getExtensions("/project1/extensionPoint1");
for (let i = 0; i < extensions.length; i++) {
let extension = require(extensions[i]);
response.println(extension.enhanceProcess());
}
In the code above, the extension is a JavaScript module (extension1.js
) within the same project, and it has exposed an enhanceProcess()
function.