Exemple #1
0
 private void detach_ActivityQueues(ActivityQueue entity)
 {
     this.SendPropertyChanging();
     entity.Trigger = null;
 }
Exemple #2
0
 partial void DeleteActivityQueue(ActivityQueue instance);
Exemple #3
0
 partial void UpdateActivityQueue(ActivityQueue instance);
Exemple #4
0
 partial void InsertActivityQueue(ActivityQueue instance);
Exemple #5
0
 private void attach_ActivityQueues(ActivityQueue entity)
 {
     this.SendPropertyChanging();
     entity.Activity = this;
 }
Exemple #6
0
        private static void Triggered(Utilities.Trigger trigger, object state)
        {
            Log.Info(string.Format("Triggered by: {0}", trigger.Entity.Type));

            // queue the trigger for processing
            var activityTriggers = trigger.Entity.ActivityTriggers
                                   .Select(x => Activities
                                           .FirstOrDefault(y => y.Entity.Id == x.ActivityId))
                                   .Where(x => x != null && x.Enabled)
                                   .ToList();

            if (!activityTriggers.Any())
            {
                Log.Info("No enabled activites, exiting.");
                return;
            }

            // try to serialize state information
            try
            {
                using (var mem = new MemoryStream())
                {
                    var serlializer = new SoapFormatter
                    {
                        AssemblyFormat = FormatterAssemblyStyle.Full
                    };

                    // store in an object so we know what to expect
                    if (state as Expression != null)
                    {
                        state = new StoredQuery((Expression)state);
                    }
                    serlializer.Serialize(mem, state);
                    state = Encoding.Default.GetString(mem.ToArray());
                    var insertQueue = activityTriggers.Select(activity =>
                    {
                        Log.Info(string.Format("Queuing activity [{0}] due to trigger [{1}].", activity.Entity.Type,
                                               trigger.Entity.Type));
                        var queue = new ActivityQueue
                        {
                            TriggerId  = trigger.Entity.Id,
                            ActivityId = activity.Entity.Id,
                            State      = state.ToString(),
                            TimeAdded  = DateTime.UtcNow
                        };

                        if (queue.TriggerId == 7 && queue.ActivityId == 8)
                        {
                        }
                        return(queue);
                    });
                    lock (QueueLock)
                    {
                        QueuingContext.ActivityQueues.InsertAllOnSubmit(insertQueue);
                        QueuingContext.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("Error queuing triggered activities.", ex);
            }

            ThreadPool.QueueUserWorkItem(ProcessQueue);
        }