/// <summary> /// Inizializzazione regola di pubblicazione /// </summary> /// <param name="request">Dati della richiesta di pubblicazione</param> /// <param name="ruleInfo">Dati della regola</param> public virtual void InitializeRule(Subscriber.Listener.ListenerRequest request, Subscriber.RuleInfo ruleInfo) { this.ListenerRequest = request; this.Response = new RuleResponse { Rule = ruleInfo }; }
public Subscriber.Listener.ListenerResponse NotifyEvent(Subscriber.Listener.ListenerRequest request) { _logger.Info("BEGIN"); Subscriber.Listener.ListenerResponse response = new Subscriber.Listener.ListenerResponse(); try { List <Subscriber.Rules.RuleResponse> ruleResponseList = new List <Subscriber.Rules.RuleResponse>(); // Reperimento delle regole definite per l'istanza RuleInfo[] instanceRules = Subscriber.DataAccess.RuleDataAdapter.GetRules(request.ChannelInfo.Id); if (instanceRules != null) { foreach (RuleInfo r in instanceRules) { Type t = Type.GetType(r.RuleClassFullName, false); if (t == null) { // Regola non istanziata _logger.ErrorFormat(string.Format(ErrorDescriptions.INVALID_RULE_TYPE, r.RuleClassFullName)); r.Error = new ErrorInfo { Id = ErrorCodes.INVALID_RULE_TYPE, Message = string.Format(ErrorDescriptions.INVALID_RULE_TYPE, r.RuleClassFullName) }; ruleResponseList.Add(new Rules.RuleResponse { Rule = r }); } else { // Esecuzione delle azioni che estendono la classe astratta "AvvocaturaBaseRule" using (Subscriber.Rules.IRule rule = (Subscriber.Rules.IRule)Activator.CreateInstance(t)) { _logger.InfoFormat("Creazione RULE '{0}'", rule.GetType().FullName); // Inizializzazione ed esecuzione della regola rule.InitializeRule(request, r); _logger.InfoFormat("Inizializzazione RULE '{0}'", rule.GetType().FullName); if (rule.Response.Rule.Enabled) { _logger.InfoFormat("RULE '{0}' abilitata", rule.GetType().FullName); // Se la regola risulta abilitata, viene eseguita rule.Execute(); _logger.InfoFormat("RULE '{0}' eseguita", rule.GetType().FullName); // Esito del calcolo della regola Subscriber.Rules.RuleResponse ruleResponse = rule.Response; ruleResponseList.Add(ruleResponse); } else { _logger.InfoFormat("RULE '{0}' non abilitata", rule.GetType().FullName); } } } } } // Esito dell'esecuzione delle regole response.RuleResponseList = ruleResponseList.ToArray(); } catch (Exception ex) { // Errore non gestito nel listener _logger.Error(ex.Message, ex); response.Error = new ErrorInfo { Id = ErrorCodes.UNHANDLED_ERROR, Message = ex.Message, Stack = ex.ToString() }; } finally { _logger.Info("END"); } return(response); }