importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.SordUtils.js //@include lib_sol.common.ix.FunctionBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.IsoDate" }); /** * Writes the current date as ISO date into a index field. * * Formats: * * - Standard: 'yyyyMMddHHmmss' * - Without time: 'yyyyMMdd' * * # As workflow node * * `ObjId` is set based on the element that the workflow is attached to. * Following configuration should be applied to the comments field. * * { * "group": "COMPLETED_DATE", * "withoutTime": true * } * * # As IX function call * * In addition to the workflow node configuration the `objId` must be passed. * * sol.common.IxUtils.execute("RF_sol_function_ix_IsoDate", { * objId: "4711", * group: "COMPLETED_DATE", * withoutTime: true * }); * * @author PZ, ELO Digital Office GmbH * @version 1.0 * * @eloix * @requires sol.common.SordUtils * @requires sol.common.JsonUtils * @requires sol.common.WfUtils * @requires sol.common.ix.RfUtils * @requires sol.common.ix.FunctionBase */ sol.define("sol.common.ix.functions.IsoDate", { extend: "sol.common.ix.FunctionBase", requiredConfig: ["objId", "group"], /** * @cfg {String} objId (required) * Object ID */ /** * @cfg {String} group (required) * Group field to write the change to */ /** * @cfg {Boolean} [withoutTime=false] (optional) * If `true`, the time will be omitted from the ISO string */ withoutTime: false, /** * @private * @property {java.text.SimpleDateFormat} formatter */ formatter: new java.text.SimpleDateFormat("yyyyMMddHHmmss"), /** * @private * @property {java.text.SimpleDateFormat} formatter */ withoutTimeFormatter: new java.text.SimpleDateFormat("yyyyMMdd"), initialize: function (config) { var me = this; me.$super("sol.common.ix.FunctionBase", "initialize", [config]); }, /** * Sets the ISO date. */ process: function () { var me = this, sord = ixConnect.ix().checkoutSord(me.objId, SordC.mbAllIndex, LockC.NO), dateField = sol.common.SordUtils.getObjKey(sord, me.group), date = new Date(), isoString; if (me.withoutTime === true) { isoString = me.withoutTimeFormatter.format(date); } else { isoString = me.formatter.format(date); } if (dateField) { dateField.data = [isoString]; ixConnect.ix().checkinSord(sord, SordC.mbAllIndex, LockC.NO); me.logger.info(["write ISO date to [objId='{0}', objKey='{1}']: {2}", me.objId, me.group, isoString]); } } }); /** * @member sol.common.ix.functions.IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#onEnterNode */ function onEnterNode(clInfo, userId, wFDiagram, nodeId) { logger.enter("onEnterNode_IsoDate", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "group"), module; params.objId = wFDiagram.objId; module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("onEnterNode_IsoDate"); } /** * @member sol.common.ix.functions.IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#onExitNode */ function onExitNode(clInfo, userId, wFDiagram, nodeId) { logger.enter("onExitNode_IsoDate", { flowId: wFDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId, "group"), module; params.objId = wFDiagram.objId; module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("onExitNode_IsoDate"); } /** * @member sol.common.ix.functions.IsoDate * @method RF_sol_function_IsoDate * @static * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName */ function RF_sol_function_IsoDate(iXSEContext, args) { logger.enter("RF_sol_function_IsoDate", args); var params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "objId", "group"), module = sol.create("sol.common.ix.functions.IsoDate", params); module.process(); logger.exit("RF_sol_function_IsoDate"); }