importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_handlebars.js //@include lib_sol.common.Config.js //@include lib_sol.common.WfUtils.js //@include lib_sol.common.Template.js //@include lib_sol.common.TranslateTerms.js //@include lib_sol.common.ix.ServiceBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.services.DMSDesktop" }); /** * @private * Provides service functions for the DMS Desktop. * * This class is for internal use only. The behavior could be changed without notice. * * # Usage * * ## Load ELOas configuration * * sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopLoadAsConfig", { * solution: "contract" // optional, fallback would be the common as.config * }); * * // result // * { * protocol: "http", * serverName: "localhost", * port: "8080", * serviceName": "as-contract" * } * * ## Retrieve workflow status * * sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopGetWfStatus", { * flowId: "4711" * }); * * // result // * { * wfstatus: "CANCELED" * } * * ## Translate terms * * sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopTranslate", { * keys: ["sol.contract.client.ribbon.tabContract"], * language: "en" // optional, default is the IXConnection language * }); * * // result // * [ * { * key: "sol.contract.client.ribbon.tabContract", * lang: "en", * text: "Contracts" * } * ] * * ## Apply handlebars * * sol.common.IxUtils.execute("RF_sol_common_service_DMSDesktopHandlebars", { * transformations: [ * { source: "Hello {{name}}.", context: { name: "Max" } }, * { source: "Hello {{name}}.", context: { name: "Moritz" } } * ] * }); * * // result // * [ * { source: "Hello {{name}}.", context: { name: "Max" }, text: "Hello Max." }, * { source: "Hello {{name}}.", context: { name: "Moritz"}, text: "Hello Moritz." } * ] * * @author PZ, ELO Digital Office GmbH * @version 1.03.004 * * @eloix * @requires handlebars * @requires sol.common.Config * @requires sol.common.WfUtils * @requires sol.common.TranslateTerms * @requires sol.common.ix.RfUtils * @requires sol.common.ix.ServiceBase */ sol.define("sol.common.ix.services.DMSDesktop", { extend: "sol.common.ix.ServiceBase", initialize: function (config) { var me = this; me.$super("sol.common.ix.ServiceBase", "initialize", [config]); }, /** * Loads the ELOas server configuration * @return {Object} The ELOas server configuration * @return {String} return.protocol * @return {String} return.server * @return {String} return.port * @return {String} return.name */ loadAsConfig: function () { var me = this, config; config = sol.create("sol.common.Config"); return config.loadEloAsConfig(me.solution); }, /** * Retrieves the status of a workflow. * @return {Object} * @return {String} return.wfstatus */ getWfStatus: function () { var me = this, result; if (typeof me.flowId === "undefined") { throw "IllegalArgumentException: no 'flowId' set"; } result = { wfstatus: sol.common.WfUtils.getWorkflowStatus(me.flowId) }; return result; }, /** * Translates a key. * @return {Object[]} * @return {String} return.key * @return {String} return.lang * @return {String} return.text */ translate: function () { var me = this, result = [], language; if (typeof me.keys === "undefined") { throw "IllegalArgumentException: no 'keys' set"; } language = me.language || ixConnect.loginResult.clientInfo.language; sol.common.TranslateTerms.require(me.keys); me.keys.forEach(function (key) { var text = sol.common.TranslateTerms.getTerm(language, key); result.push({ key: key, lang: language, text: text }); }); return result; }, getConfigString: function (cfgTemplate, data) { return cfgTemplate ? Handlebars.compile(cfgTemplate)(data) : null; }, prepareCfgObj: function (cfgTemplate, actionCfg) { var me = this, cfgObj, regex, objIdReplacement; cfgTemplate = cfgTemplate.replace(/\\{{/g, "{{"); if (cfgTemplate.indexOf("\"{{objId}}\"") > -1) { regex = new RegExp("\"{{objId}}\"", "g"); objIdReplacement = (actionCfg.objId) ? "\"" + actionCfg.objId + "\"" : null; } else { regex = new RegExp("{{objId}}", "g"); objIdReplacement = (actionCfg.objId) ? actionCfg.objId : null; } cfgTemplate = cfgTemplate.replace(regex, objIdReplacement); try { cfgTemplate = me.getConfigString(cfgTemplate, actionCfg); } catch (ex) { } cfgObj = cfgTemplate ? JSON.parse(cfgTemplate) : {}; cfgObj.$templating = { $type: actionCfg.type, $tree: actionCfg.tree, $preconditions: actionCfg.preconditions }; return cfgObj; }, handlebars: function () { var me = this, result = []; if (typeof me.transformations === "undefined") { throw "IllegalArgumentException: no 'transformations' set"; } me.transformations.forEach(function (transformation) { if (transformation.source && transformation.context) { transformation.text = JSON.stringify(me.prepareCfgObj(transformation.source, transformation.context)); } result.push(transformation); }); return result; } }); /** * @member sol.common.ix.services.DMSDesktop * @method RF_sol_common_service_DMSDesktopLoadAsConfig * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_DMSDesktopLoadAsConfig(ec, args) { var rfUtils = sol.common.ix.RfUtils, params, service, result; logger.enter("RF_sol_common_service_DMSDesktopLoadAsConfig", args); params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args); service = sol.create("sol.common.ix.services.DMSDesktop", params); result = rfUtils.stringify(service.loadAsConfig()); logger.exit("RF_sol_common_service_DMSDesktopLoadAsConfig", result); return result; } /** * @member sol.common.ix.services.DMSDesktop * @method RF_sol_common_service_DMSDesktopGetWfStatus * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_DMSDesktopGetWfStatus(ec, args) { var rfUtils = sol.common.ix.RfUtils, params, service, result; logger.enter("RF_sol_common_service_DMSDesktopGetWfStatus", args); params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "flowId"); service = sol.create("sol.common.ix.services.DMSDesktop", params); result = rfUtils.stringify(service.getWfStatus()); logger.exit("RF_sol_common_service_DMSDesktopGetWfStatus", result); return result; } /** * @member sol.common.ix.services.DMSDesktop * @method RF_sol_common_service_DMSDesktopTranslate * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_DMSDesktopTranslate(ec, args) { var rfUtils = sol.common.ix.RfUtils, params, service, result; logger.enter("RF_sol_common_service_DMSDesktopTranslate", args); params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "keys"); service = sol.create("sol.common.ix.services.DMSDesktop", params); result = rfUtils.stringify(service.translate()); logger.exit("RF_sol_common_service_DMSDesktopTranslate", result); return result; } /** * @member sol.common.ix.services.DMSDesktop * @method RF_sol_common_service_DMSDesktopHandlebars * @static * @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName */ function RF_sol_common_service_DMSDesktopHandlebars(ec, args) { var rfUtils = sol.common.ix.RfUtils, params, service, result; logger.enter("RF_sol_common_service_DMSDesktopHandlebars", args); params = rfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "transformations"); service = sol.create("sol.common.ix.services.DMSDesktop", params); result = rfUtils.stringify(service.handlebars()); logger.exit("RF_sol_common_service_DMSDesktopHandlebars", result); return result; }