Пример #1
0
 private void ApplyRecurrence(RecurrencePeriod period, RecurrenceTrigger trigger)
 {
     foreach (var condition in Conditions)
     {
         if (condition.Condition?.Recurrence?.Is(period, trigger) == true)
         {
             condition.Condition.ApplyEffects(null, this);
         }
     }
 }
Пример #2
0
 public bool Is(RecurrencePeriod period, RecurrenceTrigger trigger)
 {
     return(period == Period && trigger == Trigger);
 }
Пример #3
0
        public void CreateAggregateTask(string sysname, out Guid taskId)
        {
            ServiceInfo qds = Client.GetServices(ServiceTypes.QlikViewDistributionService).FirstOrDefault();

            if (qds == null)
            {
                throw new System.Exception("No QDS found.");
            }

            List <DocumentNode> sourceDocuments = Client.GetSourceDocuments(qds.ID);

            DocumentNode templateDocument = sourceDocuments.FirstOrDefault(t =>
                                                                           t.Name.Equals("Aggregator.qvw", StringComparison.InvariantCultureIgnoreCase) &&
                                                                           t.RelativePath.Equals("_TEMPLATE", StringComparison.InvariantCultureIgnoreCase));

            if (templateDocument == null)
            {
                throw new System.Exception("Template \"Aggregator.qvw\" not found.");
            }

            DocumentNode customerDocument = sourceDocuments.FirstOrDefault(t =>
                                                                           t.Name.Equals("Aggregator.qvw", StringComparison.InvariantCultureIgnoreCase) &&
                                                                           t.RelativePath.Equals(sysname, StringComparison.InvariantCultureIgnoreCase));

            if (customerDocument == null)
            {
                throw new System.Exception("Customer \"Aggregator.qvw\" not found.");
            }

            TaskInfo templateTaskInfo = Client.GetTasksForDocument(templateDocument.ID).FirstOrDefault(x => x.Type == TaskType.DocumentTask);

            if (templateTaskInfo == null)
            {
                throw new System.Exception("Document task for the template \"Aggregator.qvw\" not found.");
            }

            string   taskName         = GetCustomerAggregatorTaskName(sysname);
            TaskInfo existingTaskInfo = Client.FindTask(qds.ID, TaskType.DocumentTask, taskName);

            if (existingTaskInfo != null)
            {
                taskId = existingTaskInfo.ID;
                return;
            }

            DocumentTask task = Client.GetDocumentTask(templateTaskInfo.ID, DocumentTaskScope.All);

            task.ID                          = Guid.NewGuid();
            task.Document                    = customerDocument;
            task.General.Enabled             = true;
            task.General.TaskName            = taskName;
            task.DocumentInfo.Category       = "Data aggregators";
            task.Reload.ScriptParameterValue = sysname;
            task.Triggering.Triggers.Clear();
            Client.SaveDocumentTask(task);

            task = Client.GetDocumentTask(task.ID, DocumentTaskScope.All);
            var recurrenceTrigger = new RecurrenceTrigger
            {
                Hourly = new RecurrenceTrigger.RecurrenceTriggerHourly
                {
                    DayOfWeekConstraints = new List <DayOfWeek>
                    {
                        DayOfWeek.Monday,
                        DayOfWeek.Tuesday,
                        DayOfWeek.Wednesday,
                        DayOfWeek.Thursday,
                        DayOfWeek.Friday,
                        DayOfWeek.Saturday,
                        DayOfWeek.Sunday
                    },
                    RecurEvery         = 20,
                    TimeConstraintFrom = DateTime.MinValue,
                    TimeConstraintTo   = DateTime.MaxValue
                },
                Enabled = true,
                Type    = TaskTriggerType.HourlyTrigger
            };

            task.Triggering.Triggers.Add(recurrenceTrigger);
            Client.SaveDocumentTask(task);

            taskId = task.ID;
        }