importPackage(Packages.de.elo.ix.client); //@include lib_Class.js //@include lib_sol.common.SordUtils.js //@include lib_sol.common.AclUtils.js //@include lib_sol.common.AsyncUtils.js //@include lib_sol.common.Map.js //@include lib_sol.common.ix.DynAdHocFlowUtils.js //@include lib_sol.common.ix.FunctionBase.js var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.CheckDynAdHocFlowEnd" }); /** * Checks wether the dynamic ad-hoc worflow cycle should be existed * * This function module checks whether there is a next user defined in the workflow map of the given object * respectively the workflow status was set to 'CANCELED' or 'REJECTED'. * In this case the worklow cycle will be left. * * The function can only be used as a workflow start script of a cycle end node. * * @author MW, ELO Digital Office GmbH * @version 1.0 * * @eloix * * @requires sol.common.WfUtils * @requires sol.common.WfMap * @requires sol.common.MapTable * @requires sol.common.ix.FunctionBase * @requires sol.common.ix.DynAdHocFlowUtils * */ sol.define("sol.common.ix.functions.CheckDynAdHocFlowEnd", { extend: "sol.common.ix.FunctionBase", requiredConfig: ["wfDiagram"], /** * @cfg {de.elo.ix.client.WFDiagram} wfDiagram (required) * The WFDiagram to which the changes should me applied to */ initialize: function (config) { var me = this; me.params = config; me.$super("sol.common.ix.FunctionBase", "initialize", [config]); }, wfStatusCanceledValues: ["CANCEL", "CANCELED", "REJECT", "REJECTED"], /** * Performs the check whether the dynamic ad-hoc workflow should be left * @return {Boolean} */ process: function () { var me = this, wfStatus, result = true; wfStatus = sol.common.WfUtils.getWorkflowStatus(me.wfDiagram); if (me.wfStatusCanceledValues.indexOf(wfStatus) > -1) { return false; } sol.common.ix.DynAdHocFlowUtils.clearCurrentUser(me.wfDiagram.id, me.wfDiagram.objId, me.params); if (!sol.common.ix.DynAdHocFlowUtils.hasNextUser(me.wfDiagram.id, me.wfDiagram.objId, me.params)) { return false; } return result; } }); /** * @member sol.common.ix.functions.CheckDynAdHocFlowEnd * @static * @inheritdoc sol.common.ix.FunctionBase#onEnterNode */ function onEnterNode(clientInfo, userId, wfDiagram, nodeId) { logger.enter("onExitNode_CheckDynAdHocFlowEnd", { flowId: wfDiagram.id, nodeId: nodeId }); var params = sol.common.WfUtils.parseAndCheckParams(wfDiagram, nodeId), module, result; params.wfDiagram = wfDiagram; module = sol.create("sol.common.ix.functions.CheckDynAdHocFlowEnd", params); result = module.process(); logger.exit("onExitNode_CheckDynAdHocFlowEnd"); return result; } /* ____ * ___ .-~ '. * `-._~-. / / ~@\ ) * \ \ | / \~\. `\ * ] | / | |< ~\(..) * / ! _.--~T \ \< .,, * / / ____.--~ . _ /~\ \< / * / / .-~~' /| /o\ /-~\ \_| * / / / ) |o| / /|o/_ '--' * / / .-'( l__ _j \_/ / /\|~ . * / l / \ ~~~| `/ / / \.__/l_ * | \ _.-' ~-\__ l /_/~-.___.--~ * | ~---~ / ~~'---\_ __[o, * l . _. ___ _>-/~ * \ \ . .-~ .-~ ~>--' / * \ ~---' / _.-' * '-.,_____.,_ _.--~\ _.-~ * ~~ ( _} * `. ~( * ) \ DYNADHOC SAURUS, the * /,`--'~\--'~\ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * */