/** * Creates reminders for contracts. * * This class uses the monitoring module to determine for which contracts a reminder should be created. * If the reminder date is reached (and the reminder was not executed before), a workflow will be started. * * |Property|Description| * |:------|:------| * |fields.nextReminderDate|This field holds the reminder date of the contract| * |mapFields.reminderExecutionDate|To this map field the date will be written, at which the reminder was started| * |reminder.retrospection|The number of days contracts will be processed in the past| * |reminder.workflow|The workflow that will be started| * * @author PZ, ELO Digital Office GmbH * @version 1.1 * * @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.ObjectFormatter * @requires sol.common.TranslateTerms * @requires sol.common.Template * @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.RuleAnalyzer * @requires sol.common_monitoring.as.executors.SimpleExecutor */ sol.define("sol.contract.as.ContractReminder", { process: function () { var logger = sol.create("sol.Logger", { scope: "sol.common.as.ContractReminder" }), contractConfig, collector, analyzer, executor, reminderMonitor, reminderStatus; logger.enter("ContractReminder"); contractConfig = sol.create("sol.common.Config", { compose: "/contract/Configuration/contract.config" }).config; reminderStatus = contractConfig.reminder.reminderStatus || ["S"]; reminderStatus = reminderStatus.map(function (status) { return status + "*"; }); collector = sol.create("sol.common_monitoring.as.collectors.NextRunCollector", { retrospection: contractConfig.reminder.retrospection, nextRunField: contractConfig.fields.nextReminderDate, additionalSearchCriteria: [{ key: contractConfig.fields.contractStatus, value: reminderStatus }] }); analyzer = sol.create("sol.common_monitoring.as.analyzers.RuleAnalyzer", { rules: [ { action: { type: "WORKFLOW", templateId: contractConfig.reminder.workflow, nameTemplate: contractConfig.reminder.workflowName }, date: { type: "GRP", key: contractConfig.fields.nextReminderDate }, ignoreFilingDate: contractConfig.reminder.ignoreFilingDate, execution: { type: "MAP", key: contractConfig.mapFields.reminderExecutionDate } } ] }); executor = sol.create("sol.common_monitoring.as.executors.SimpleExecutor", {}); reminderMonitor = sol.create("sol.common_monitoring.as.Monitor", { collector: collector, analyzer: analyzer, executor: executor }); reminderMonitor.run(); reminderMonitor.close(); logger.exit("ContractReminder"); } });