public Task ProcessAsync(Element definition, ElementState result)
        {
            //result.Status = Status.Ok;

            var rules = new Rules.RuleProcessor(definition.StateRules);

            rules.Run(result);

            return(Task.CompletedTask);
        }
        public Task ProcessAsync(Element definition, IEnumerable <ElementState> states)
        {
            var rules = new Rules.RuleProcessor(definition.StateRules);

            foreach (var result in states)
            {
                //result.Status = Status.Ok;

                rules.Run(result);
            }

            return(Task.CompletedTask);
        }
        protected void BringResults(Message message)
        {
            var rootItem = RootItemDataContext.GetFolder();

            // Activate buttons
            btnExecuteAll.Disabled =
                btnExecuteSelected.Disabled = btnSelectAll.Disabled = false;

            // Switch Context DB for the query
            var currentDb = Context.Database;
            Context.Database = rootItem.Database;

            // Execute query
            var query = rootItem.GetItemXPath() + "//*";
            var scQuery = new Query(query) { Max = 100000 };
            var queryResult = scQuery.Execute();

            // Get Items from Query
            var allItems = new List<Item>();
            if (queryResult.GetType() == typeof(QueryContext))
                allItems.Add(((QueryContext)queryResult).GetQueryContextItem());
            else
                allItems = ((QueryContext[])queryResult).Select(p => p.GetQueryContextItem()).ToList();
            allItems.Insert(0, rootItem);

            // Switch Context DB back
            Context.Database = currentDb;

            // Render results
            ResultItems.Controls.Clear();
            var processor = new Rules.RuleProcessor(Rules, RuleItem);
            foreach (var item in allItems)
            {
                if (!processor.ValidateRule(item))
                    continue;

                // Create and add the new ListviewItem control to the Listview.
                // We have to assign an unique ID to each control on the page.
                var listItem = new ListviewItem();
                Context.ClientPage.AddControl(ResultItems, listItem);
                listItem.ID = Control.GetUniqueID("I");

                // Populate the list item with data.
                listItem.Header = item.Name;
                listItem.Icon = item.Appearance.Icon;
                listItem.Value = item.ID.ToString();
                listItem.ColumnValues["path"] = item.Paths.Path;
                listItem.ColumnValues["language"] = item.Language.Name;
                listItem.ColumnValues["version"] = item.Version.ToString();
            }

            // We need to replace the html in order to avoid duplicate ID's
            Context.ClientPage.ClientResponse.SetOuterHtml("ItemList", ResultItems);
            ResultItems.Refresh();
        }