示例#1
0
        internal static IEnumerable <PsComplianceRulePredicateBase> ConvertEngineConditionToTaskConditions(Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition condition)
        {
            List <PsComplianceRulePredicateBase> list = new List <PsComplianceRulePredicateBase>();
            QueryPredicate queryPredicate             = condition as QueryPredicate;

            if (queryPredicate != null)
            {
                AndCondition andCondition = queryPredicate.SubCondition as AndCondition;
                if (andCondition == null)
                {
                    return(list);
                }
                using (List <Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition> .Enumerator enumerator = andCondition.SubConditions.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        Microsoft.Office.CompliancePolicy.PolicyEvaluation.Condition condition2 = enumerator.Current;
                        list.AddRange(PsHoldRule.ConvertEngineConditionToTaskConditions(condition2));
                    }
                    return(list);
                }
            }
            if (condition is PredicateCondition)
            {
                PredicateCondition predicate = condition as PredicateCondition;
                list.Add(PsComplianceRulePredicateBase.FromEnginePredicate(predicate));
            }
            else if (!(condition is TrueCondition))
            {
                throw new UnexpectedConditionOrActionDetectedException();
            }
            return(list);
        }
示例#2
0
 internal override void PopulateTaskProperties(Task task, IConfigurationSession configurationSession)
 {
     base.PopulateTaskProperties(task, configurationSession);
     if (!string.IsNullOrEmpty(base.RuleBlob))
     {
         PolicyRule policyRuleFromRuleBlob = this.GetPolicyRuleFromRuleBlob();
         if (policyRuleFromRuleBlob.IsTooAdvancedToParse)
         {
             base.ReadOnly = true;
         }
         else
         {
             this.SetTaskConditions(PsHoldRule.ConvertEngineConditionToTaskConditions(policyRuleFromRuleBlob.Condition));
             this.SetTaskActions(PsHoldRule.ConvertEngineActionsToTaskActions(policyRuleFromRuleBlob.Actions));
         }
         base.ResetChangeTracking();
     }
 }