/** * Extends contracts. * * This class uses the monitoring module to determine which contracts are due. * If a contract is due and is flaged for automatic extension, a workflow will be started. * * # Configuration * * |Property|Description| * |:------|:------| * |fields.extensionDate|This field holds the due date of the contract| * |mapFields.extensionFlag|This field holds the value if the cintract should be extended automatically| * |extension.referenceValue|This is the value which has to be set on the `extension.referenceValue` so the contract is recognized as extendable| * |extension.retrospection|The number of days contracts will be processed in the past| * |extension.workflow|The workflow that will be started| * * @author PZ, ELO Digital Office GmbH * @version 1.0 * * @requires sol.common.Config * @requires sol.common.ObjectUtils * @requires sol.common.JsonUtils * @requires sol.common.SordUtils * @requires sol.common.DateUtils * @requires sol.common.RepoUtils * @requires sol.common_monitoring.as.MonitorUtils * @requires sol.common_monitoring.as.Monitor * @requires sol.common_monitoring.as.collectors.NextRunCollector * @requires sol.common_monitoring.as.analyzers.ValueAnalyzer * @requires sol.common_monitoring.as.executors.SimpleExecutor */ sol.define("sol.contract.as.ExtendContracts", { process: function () { var logger = sol.create("sol.Logger", { scope: "sol.common.as.ExtendContracts" }), contractConfig, collectorNextPossibleTermination, collectorContractEnd, analyzer, executor, extendMonitorNextPossibleTermination, extendMonitorContractEnd; logger.enter("ExtendContracts"); contractConfig = sol.create("sol.common.Config", { compose: "/contract/Configuration/contract.config" }).config; collectorNextPossibleTermination = sol.create("sol.common_monitoring.as.collectors.NextRunCollector", { retrospection: contractConfig.extension.retrospection, nextRunField: contractConfig.fields.nextPossibleTermination }); collectorContractEnd = sol.create("sol.common_monitoring.as.collectors.NextRunCollector", { retrospection: contractConfig.extension.retrospection, nextRunField: contractConfig.fields.contractEnd }); analyzer = sol.create("sol.common_monitoring.as.analyzers.ValueAnalyzer", { action: { type: "WORKFLOW", templateId: contractConfig.extension.workflow }, values: [ { type: "MAP", key: contractConfig.mapFields.extensionFlag, referenceValue: contractConfig.extension.referenceValue }, { type: "GRP", key: contractConfig.fields.contractStatus, localizedKwl: true, referenceValues: contractConfig.extension.extensionStatus } ] }); executor = sol.create("sol.common_monitoring.as.executors.SimpleExecutor", {}); extendMonitorNextPossibleTermination = sol.create("sol.common_monitoring.as.Monitor", { collector: collectorNextPossibleTermination, analyzer: analyzer, executor: executor }); extendMonitorNextPossibleTermination.run(); extendMonitorNextPossibleTermination.close(); extendMonitorContractEnd = sol.create("sol.common_monitoring.as.Monitor", { collector: collectorContractEnd, analyzer: analyzer, executor: executor }); extendMonitorContractEnd.run(); extendMonitorContractEnd.close(); logger.exit("ExtendContracts"); } });