e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
98 lines
3.4 KiB
C#
98 lines
3.4 KiB
C#
namespace System.Workflow.Activities
|
|
{
|
|
using System;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
using System.Collections;
|
|
using System.CodeDom;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.ComponentModel.Design.Serialization;
|
|
using System.Drawing;
|
|
using System.Workflow.ComponentModel;
|
|
using System.Workflow.ComponentModel.Design;
|
|
using System.Collections.Generic;
|
|
using System.Workflow.Activities.Rules;
|
|
using System.Workflow.Activities.Rules.Design;
|
|
using System.Workflow.Runtime;
|
|
using System.Workflow.ComponentModel.Compiler;
|
|
using System.Drawing.Design;
|
|
using System.Workflow.Activities.Common;
|
|
|
|
#region Class Policy
|
|
|
|
[SRDescription(SR.PolicyActivityDescription)]
|
|
[ToolboxBitmap(typeof(PolicyActivity), "Resources.Rule.png")]
|
|
[ToolboxItem(typeof(ActivityToolboxItem))]
|
|
[Designer(typeof(PolicyDesigner), typeof(IDesigner))]
|
|
[SRCategory(SR.Standard)]
|
|
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
|
|
public sealed class PolicyActivity : Activity
|
|
{
|
|
#region Public Dependency Properties
|
|
|
|
public static readonly DependencyProperty RuleSetReferenceProperty = DependencyProperty.Register("RuleSetReference", typeof(RuleSetReference), typeof(PolicyActivity), new PropertyMetadata(DependencyPropertyOptions.Metadata, new Attribute[] { new ValidationOptionAttribute(ValidationOption.Required) }));
|
|
|
|
#endregion
|
|
|
|
#region Constructors
|
|
|
|
public PolicyActivity()
|
|
{
|
|
}
|
|
|
|
public PolicyActivity(string name)
|
|
: base(name)
|
|
{
|
|
}
|
|
|
|
#endregion
|
|
|
|
protected override void Initialize(IServiceProvider provider)
|
|
{
|
|
// if there is no parent, then there will be no validation of RuleSetReference
|
|
// as well, there will be no RuleDefinitions
|
|
if (this.Parent == null)
|
|
throw new InvalidOperationException(SR.GetString(SR.Error_MustHaveParent));
|
|
|
|
base.Initialize(provider);
|
|
}
|
|
|
|
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
|
|
{
|
|
if (executionContext == null)
|
|
throw new ArgumentNullException("executionContext");
|
|
|
|
Activity declaringActivity = Helpers.GetDeclaringActivity(this);
|
|
if (declaringActivity == null)
|
|
declaringActivity = Helpers.GetRootActivity(this);
|
|
|
|
RuleDefinitions ruleDefinitions = (RuleDefinitions)declaringActivity.GetValue(RuleDefinitions.RuleDefinitionsProperty);
|
|
if (ruleDefinitions != null)
|
|
{
|
|
RuleSet ruleSet = ruleDefinitions.RuleSets[this.RuleSetReference.RuleSetName];
|
|
if (ruleSet != null)
|
|
{
|
|
ruleSet.Execute(declaringActivity, executionContext);
|
|
}
|
|
}
|
|
return ActivityExecutionStatus.Closed;
|
|
}
|
|
|
|
[SRDescription(SR.RuleSetDescription)]
|
|
[MergableProperty(false)]
|
|
public RuleSetReference RuleSetReference
|
|
{
|
|
get
|
|
{
|
|
return (RuleSetReference)base.GetValue(RuleSetReferenceProperty);
|
|
}
|
|
set
|
|
{
|
|
base.SetValue(RuleSetReferenceProperty, value);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|