This documentation is for WSO2 Business Activity Monitor 2.0.0. View documentation for the latest release.

Creating a Custom Toolbox

A toolbox can contain three main artifacts as follows:

All three artifacts are optional. You can have all three types or either one of them in one toolbox, and only the available artifacts will be deployed. 

Toolbox Structure

Toolbox artifacts should be placed in the structure shown below:

Analytic Artifacts

The analytics scripts (Eg: Hive script) should be placed in the analytics folder under toolbox. All the scripts which are placed under the analytics folder will be deployed. The analyzers.properties file should be included as follows in case the script needs to be scheduled.

The following are the properties to be included in the analyzers.properties file, if there ar two scripts by the names 'my_script' and 'my_another_script' that need to be included to the toolbox.

analyzers.scripts=script1, script2

analyzers.scripts.script1.filename=my_script
analyzers.scripts.script1.description=Description about my script
analyzers.scripts.script1.cron=1 * * * * ? *

analyzers.scripts.script2.filename=my_another_script
analyzers.scripts.script2.description=Description about my another script
analyzers.scripts.script2.cron=1 * * * * ? *

As shown above, linking the analyzer script to the toolbox occurs through 'analyzers.scripts.script1.filename' property.

The cron property is optional. It should be mentioned in this property file if you want to schedule the script. Both scripts shown above are scheduled with cron expression '1 * * * * ? *'. If a script doesn't need to be schedules to run, avoid this cron property in the analyzers.properties file.

Stream Definition Artifacts

As shown in the structure of the toolbox, the stream definitions should be placed under streamDefn folder. The stream definitions are the definitions of your data stream published to BAM. You can have any number of stream definitions within one toolbox, but they should be defined in different files.

For example, if your data is published with the stream definition shown below, it should be copied to a file and placed under the streamDefn folder. (The file name is not important but the content of the files is).

{
                   'name':'org.wso2.bam.mystream',
                   'version':'1.0.0',
                   'nickName': 'My_Stream',
                   'description': 'This is the stream definition used to send data to bam',
                   'metaData':[
                           {'name':'clientType','type':'STRING'}
                   ],
                   'payloadData':[
                           {'name':'my_field_1','type':'STRING'},
                           {'name':'my_field_2','type':'INT'},
                           {'name':'my_field_3','type':'INT'},
                           {'name':'my_field_4','type':'STRING'}
                   ]
}

Dashboard Artifacts

As shown in the toolbox structure, the dashboard artifacts should be placed under the dashboard directory. Dashboard artifacts can be for Gadget Dashboard or Jasper Dashboard or both. You need to have the respective artifacts for the dashboard in which your data is visualized. The following section describes how to include artifacts in the toolbox.

Gadget Dashboard Artifacts

Gadget Dashboard related artifacts are given below.

As shown above, all gadget xmls to be included in the dashboard should be placed under the 'gadgets' folder, including any .css/.js files, if any. If jaggery files are used in the gadget xmls, they should be placed in the 'jaggery' folder in the 'dashboard' folder. Finally, the dashboard tabs and gadgets for the tabs should be mentioned in the 'dashboard.properties' file. According to what is mentioned in the dashboard.properties file, the gadgets and tabs will be organized in the gadget dashboard.

Note

Jaggery is a 100% open source framework to write Web applications and HTTP-focused Web services purely in Java Script, for all aspects of the application: front-end, server-side logic, communication and persistence. For more information on Jaggery, refer to: http://jaggeryjs.org

Assume you have gadget xmls as My_Gadget_1.xml, My_Gadget_2.xml, My_Gadget_3.xml, My_Gadget_4.xml under the gadgets folder. You are want to add My_Gadget_1.xml, My_Gadget_2.xml to the first tab, and My_Gadget_3.xml, My_Gadget_4.xml to the second. Then the dashboard.properties should be as follows.

dashboard.tabs=tab1, tab2
dashboard.tabs.tab1.name=Tab-1 Title
dashboard.tabs.tab1.gadgets=My_Gadget_1.xml, My_Gadget_2.xml
dashboard.tabs.tab2.name=Tab-2 Title
dashboard.tabs.tab2.gadgets=My_Gadget_3.xml, My_Gadget_4.xml

Similar to anayzers.properties file, tab1, tab2 are reference in the properties. 'dashboard.tabs.tab1.name' denotes the title of the tab denoted by reference tab1. tab1, will have the gadgets My_Gadget_1.xml, My_Gadget_2.xml in the that order. Similarly. for the tab2, the title is 'Tab-2 Title' and the gadgets will be My_Gadget_3.xml, My_Gadget_4.xml in that order.

Packing the Toolbox

After including all required artifacts as described above in a directory, zip archive it and change the file extension to .tbox. The name of the .tbox is taken as the name of the toolbox. You are now ready to install your toolbox. For information, refer to section Installing custom toolbox.