Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / RuleEngine.cs / 1305376 / RuleEngine.cs
// ----------------------------------------------------------------------------
// Copyright (C) 2006 Microsoft Corporation All Rights Reserved
// ---------------------------------------------------------------------------
#define CODE_ANALYSIS
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Workflow.ComponentModel;
namespace System.Workflow.Activities.Rules
{
public class RuleEngine
{
private string name;
private RuleValidation validation;
private IList analyzedRules;
public RuleEngine(RuleSet ruleSet, RuleValidation validation)
: this(ruleSet, validation, null)
{
}
public RuleEngine(RuleSet ruleSet, Type objectType)
: this(ruleSet, new RuleValidation(objectType, null), null)
{
}
internal RuleEngine(RuleSet ruleSet, RuleValidation validation, ActivityExecutionContext executionContext)
{
// now validate it
if (!ruleSet.Validate(validation))
{
string message = string.Format(CultureInfo.CurrentCulture, Messages.RuleSetValidationFailed, ruleSet.name);
throw new RuleSetValidationException(message, validation.Errors);
}
this.name = ruleSet.Name;
this.validation = validation;
Tracer tracer = null;
if (WorkflowActivityTrace.Rules.Switch.ShouldTrace(TraceEventType.Information))
tracer = new Tracer(ruleSet.Name, executionContext);
this.analyzedRules = Executor.Preprocess(ruleSet.ChainingBehavior, ruleSet.Rules, validation, tracer);
}
[SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "0#")]
public void Execute(object thisObject, ActivityExecutionContext executionContext)
{
Execute(new RuleExecution(validation, thisObject, executionContext));
}
[SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "0#")]
public void Execute(object thisObject)
{
Execute(new RuleExecution(validation, thisObject, null));
}
internal void Execute(RuleExecution ruleExecution)
{
Tracer tracer = null;
if (WorkflowActivityTrace.Rules.Switch.ShouldTrace(TraceEventType.Information))
{
tracer = new Tracer(name, ruleExecution.ActivityExecutionContext);
tracer.StartRuleSet();
}
Executor.ExecuteRuleSet(analyzedRules, ruleExecution, tracer, RuleSet.RuleSetTrackingKey + name);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CustomCredentialPolicy.cs
- PropertyEmitter.cs
- ListView.cs
- DataObjectCopyingEventArgs.cs
- CompiledIdentityConstraint.cs
- HMACSHA1.cs
- PropertyTabAttribute.cs
- AdministrationHelpers.cs
- SiteMapDataSourceView.cs
- XmlSchemaAnyAttribute.cs
- SafeRegistryHandle.cs
- MappedMetaModel.cs
- VisualStyleRenderer.cs
- StringArrayConverter.cs
- StructuredCompositeActivityDesigner.cs
- TypeConverterHelper.cs
- ToolStripContentPanel.cs
- DataGridAutoFormat.cs
- SqlMethodAttribute.cs
- SiteMapNode.cs
- SecurityManager.cs
- AutoResetEvent.cs
- DataGridPreparingCellForEditEventArgs.cs
- ClientUIRequest.cs
- SyndicationSerializer.cs
- SamlConditions.cs
- SmtpCommands.cs
- CodeDOMProvider.cs
- CheckedPointers.cs
- WebPartEditorCancelVerb.cs
- NamedPermissionSet.cs
- EmissiveMaterial.cs
- NullableFloatSumAggregationOperator.cs
- UrlPath.cs
- RankException.cs
- CommonRemoteMemoryBlock.cs
- CustomErrorCollection.cs
- DbConnectionInternal.cs
- SmtpSection.cs
- CommandLineParser.cs
- PropertyMapper.cs
- SelectionBorderGlyph.cs
- PathSegmentCollection.cs
- NativeMethodsCLR.cs
- UrlAuthorizationModule.cs
- UpdateProgress.cs
- HttpRawResponse.cs
- ConstrainedDataObject.cs
- SessionParameter.cs
- SingleConverter.cs
- Not.cs
- RangeBase.cs
- FixedPosition.cs
- SpoolingTask.cs
- WsdlExporter.cs
- XmlTextWriter.cs
- FixedPageProcessor.cs
- TypeConverterHelper.cs
- Attributes.cs
- TargetInvocationException.cs
- LambdaCompiler.Expressions.cs
- FragmentQueryProcessor.cs
- SelectorItemAutomationPeer.cs
- StylusCaptureWithinProperty.cs
- ExtractedStateEntry.cs
- RijndaelManaged.cs
- WebPageTraceListener.cs
- DataServiceException.cs
- KeyValuePair.cs
- _AutoWebProxyScriptWrapper.cs
- Deflater.cs
- ColorConvertedBitmap.cs
- WsdlBuildProvider.cs
- DateTimeFormatInfo.cs
- _Win32.cs
- XmlSchemaInferenceException.cs
- SiblingIterators.cs
- HttpInputStream.cs
- PowerEase.cs
- AtomServiceDocumentSerializer.cs
- SettingsPropertyValueCollection.cs
- Monitor.cs
- Html32TextWriter.cs
- GridViewDeletedEventArgs.cs
- Gdiplus.cs
- EnumValidator.cs
- ProcessHostServerConfig.cs
- DoubleLinkListEnumerator.cs
- SBCSCodePageEncoding.cs
- BamlBinaryReader.cs
- Image.cs
- ApplicationTrust.cs
- TextRunCacheImp.cs
- ByteRangeDownloader.cs
- InstanceCreationEditor.cs
- OpCellTreeNode.cs
- ConfigXmlCDataSection.cs
- FilteredDataSetHelper.cs
- AppliedDeviceFiltersDialog.cs
- DocumentSchemaValidator.cs