importPackage(Packages.de.elo.ix.client); //@include lib_Class.js /** * @abstract * * Basic operations used by elo business solutions are modularized as ELOas function modules. * * Implementations should allow using functions in different ways: * - As a workflow node * - Executed within ELOas Scripts * * # Implementing a function * * A function must extend the class FunctionBase. * * sol.define("custom.solution.as.function.MyFunction", { * extend: "sol.common.as.FunctionBase", * * requiredConfig: ["objId", "myParam"], * * initialize: function (config) { * var me = this; * me.$super("sol.common.as.FunctionBase", "initialize", [config]); * }, * * process: function() { * // function logic goes here * var me = this; * me.myParam; * }, * }); * * * @eloix */ sol.define("sol.common.as.FunctionBase", { /** * @property {sol.Logger} * @protected * The logger for the module */ logger: undefined, /** * @cfg {string} * Object ID for the element */ objId: undefined, initialize: function (config) { var me = this; me.$super("sol.Base", "initialize", [config]); }, /** * Execution of the function module * @return {String} */ execute: function () { var me = this, result; try { result = me.process(); } catch (ex) { if (me.ixCall) { elo.setAnswer("Exception: " + ex); } else { throw ex; } } return result; }, /** * @abstract * Implementation of function modules' process. * This function must be implemented by the child class and should contain the logic of the function module. */ process: function () { throw "cannot call 'process' of abstract FunctionBase"; } });