Log in or sign up to continue


Hi Evgeny,

Please take a look at the documentation on custom actions. You will need to create a KPI class and define the actions you want to make available in it. You can then add widget controls that correspond to these actions. For a real-world example that includes an action to rebuild a cube, take a look at this class from the CubeEventMonitor.

I think you know this, but to clarify for other readers - this allows developers to write any methods they would like and end-users to execute the defined methods at any time. It doesn't allow end-users to define and execute arbitrary methods of their own.

Thanks Sam!

What troubles me is should I choose the KPI as a source to make these actions available?

The trick is that I don't want to change the data source that I already have for the widget, but want to introduce actions on it.

The KPI doesn't need to be the data source for the widget. You can specify the KPI class as the actionClass for a cube (this is an attribute of a <cube> element) and then the actions in it will be available to pivots based on that cube. That will in turn make those actions available as controls on widgets whose data source is a pivot based on that cube.

If the data source for a widget isn't a pivot or a KPI, I'm not sure whether it's possible to use custom actions on that widget.

Aha! This is what I forgot.

Anyway, this leaves a room for enhancement: we have such a simple button to open an URL, and we need to add a class, then add a description in another class (cube class) just to add a button to call for code. 

Do we want just to add the button that could run an arbitrary cube's method, e.g. like %cube.Method()?

would be much handier.

Hi Evgeny,

I have previously played around with this concept of a custom action manager that would allow mapping classes/methods in an easier way without needing to manually create new action classes and modify your cube. This is still in an Alpha version, but if you want to give it a test and offer any suggestions before it goes into Beta or OpenExchange, I would be glad to hear any thoughts