importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.SordUtils.js //@include lib_sol.common.ix.DynKwlUtils.js //@include lib_sol.common.ix.FunctionBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.ApplyDynKwl" }); /** * Applies data from a dynamic keywordlist using a lookup field. * * # As workflow node * * ObjId is set based on the element that the workflow is attached to. * Following additional configuration can be applied to the comments field. * * { * "lookupFields": [ "MY_INDEX_FIELD" ] * } * * # As IX function call * * In addition to the workflow node configuration the objId must be passed. * * sol.common.IxUtils.execute("RF_sol_function_ApplyDynKwl", { * objId: "4712", * lookupFields: [ "MY_INDEX_FIELD" ] * }); * * * @author PZ, ELO Digital Office GmbH * @version 1.0 * * @eloix * @requires sol.common.JsonUtils * @requires sol.common.SordUtils * @requires sol.common.WfUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.DynKwlUtils * @requires sol.common.ix.FunctionBase * */ sol.define("sol.common.ix.functions.ApplyDynKwl", { extend: "sol.common.ix.FunctionBase", requiredConfig: ["objId", "lookupFields"], /** * @cfg {String} objId (required) */ /** * @cfg {String} lookupFields (required) * Field from which the keywordlist will be user and which contains the lookup value */ initialize: function (config) { var me = this; me.$super("sol.common.ix.FunctionBase", "initialize", [config]); }, /** * Performes the lookup. */ process: function () { var me = this, dirty = false, sord, name; try { me.logger.info(["apply dynamic keywordlist to sord: objId={0}; lookupFields={1}", me.objId, me.lookupFields]); sord = ixConnect.ix().checkoutSord(me.objId, SordC.mbAllIndex, LockC.NO); me.lookupFields.forEach(function (lookupField) { dirty = sol.common.ix.DynKwlUtils.fillSord(sord, lookupField, { ignoreMissingFields: true }) || dirty; }); if (dirty === true) { ixConnect.ix().checkinSord(sord, SordC.mbAllIndex, LockC.NO); } else { me.logger.debug("no changes applied"); } } catch (ex) { name = (sord) ? sord.name : "--no_sord--"; me.logger.error(["error applying values from dynamic keywordlist to sord: objId={0}; name={1}; lookupFields={2}", me.objId, name, me.lookupFields], ex); } } }); /** * @member sol.common.ix.functions.ApplyDynKwl * @static * @inheritdoc sol.common.ix.FunctionBase#onEnterNode */ function onEnterNode(clInfo, userId, wFDiagram, nodeId) { logger.enter("onEnterNode_ApplyDynKwl", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId), module; params.objId = wFDiagram.objId; module = sol.create("sol.common.ix.functions.ApplyDynKwl", params); module.process(); logger.exit("onEnterNode_ApplyDynKwl"); } /** * @member sol.common.ix.functions.ApplyDynKwl * @static * @inheritdoc sol.common.ix.FunctionBase#onExitNode */ function onExitNode(clInfo, userId, wFDiagram, nodeId) { logger.enter("onExitNode_ApplyDynKwl", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId), module; params.objId = wFDiagram.objId; module = sol.create("sol.common.ix.functions.ApplyDynKwl", params); module.process(); logger.exit("onExitNode_ApplyDynKwl"); } /** * @member sol.common.ix.functions.ApplyDynKwl * @method RF_sol_function_ApplyDynKwl * @static * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName */ function RF_sol_function_ApplyDynKwl(iXSEContext, args) { logger.enter("RF_sol_function_ApplyDynKwl", args); var params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "objId", "lookupFields"), module = sol.create("sol.common.ix.functions.ApplyDynKwl", params); module.process(); logger.exit("RF_sol_function_ApplyDynKwl"); }