165 lines
5.8 KiB
C#
165 lines
5.8 KiB
C#
|
//------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------
|
||
|
namespace System.ServiceModel.Configuration
|
||
|
{
|
||
|
using System.ComponentModel;
|
||
|
using System.Configuration;
|
||
|
using System.Diagnostics.CodeAnalysis;
|
||
|
using System.Runtime;
|
||
|
using System.ServiceModel.Description;
|
||
|
using System.Workflow.Runtime;
|
||
|
using System.Workflow.Runtime.Configuration;
|
||
|
|
||
|
[Obsolete("The WF3 types are deprecated. Instead, please use the new WF4 types from System.Activities.*")]
|
||
|
public class WorkflowRuntimeElement : BehaviorExtensionElement
|
||
|
{
|
||
|
const string cachedInstanceExpiration = "cachedInstanceExpiration";
|
||
|
const string commonParameters = "commonParameters";
|
||
|
const string enablePerfCounters = "enablePerformanceCounters";
|
||
|
const string name = "name";
|
||
|
const string services = "services";
|
||
|
const string validateOnCreate = "validateOnCreate";
|
||
|
|
||
|
ConfigurationPropertyCollection configProperties = null;
|
||
|
|
||
|
WorkflowRuntimeSection wrtSection = null;
|
||
|
|
||
|
|
||
|
public WorkflowRuntimeElement()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
// This property is not supposed to be exposed in config.
|
||
|
[SuppressMessage("Configuration", "Configuration102:ConfigurationPropertyAttributeRule", MessageId = "System.ServiceModel.Configuration.WorkflowRuntimeElement.BehaviorType")]
|
||
|
public override Type BehaviorType
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return typeof(WorkflowRuntimeBehavior);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(cachedInstanceExpiration, IsRequired = false, DefaultValue = WorkflowRuntimeBehavior.DefaultCachedInstanceExpirationString)]
|
||
|
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
|
||
|
[PositiveTimeSpanValidator]
|
||
|
public TimeSpan CachedInstanceExpiration
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (TimeSpan) base[cachedInstanceExpiration];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
base[cachedInstanceExpiration] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(commonParameters, DefaultValue = null)]
|
||
|
public NameValueConfigurationCollection CommonParameters
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (NameValueConfigurationCollection) base[commonParameters];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(enablePerfCounters, DefaultValue = true)]
|
||
|
public bool EnablePerformanceCounters
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (bool) base[enablePerfCounters];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
base[enablePerfCounters] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
[ConfigurationProperty(name, DefaultValue = "")]
|
||
|
[StringValidator(MinLength = 0)]
|
||
|
public string Name
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (string) base[name];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
base[name] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(services, DefaultValue = null)]
|
||
|
public ExtendedWorkflowRuntimeServiceElementCollection Services
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (ExtendedWorkflowRuntimeServiceElementCollection) base[services];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(validateOnCreate, DefaultValue = WorkflowRuntimeBehavior.DefaultValidateOnCreate)]
|
||
|
public bool ValidateOnCreate
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return (bool) base[validateOnCreate];
|
||
|
}
|
||
|
set
|
||
|
{
|
||
|
base[validateOnCreate] = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected override ConfigurationPropertyCollection Properties
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (this.configProperties == null)
|
||
|
{
|
||
|
this.configProperties = new ConfigurationPropertyCollection();
|
||
|
configProperties.Add(new ConfigurationProperty(name, typeof(string), null));
|
||
|
configProperties.Add(new ConfigurationProperty(validateOnCreate, typeof(bool), true));
|
||
|
configProperties.Add(new ConfigurationProperty(enablePerfCounters, typeof(bool), true));
|
||
|
configProperties.Add(new ConfigurationProperty(services, typeof(ExtendedWorkflowRuntimeServiceElementCollection), null));
|
||
|
configProperties.Add(new ConfigurationProperty(commonParameters, typeof(NameValueConfigurationCollection), null));
|
||
|
configProperties.Add(new ConfigurationProperty(cachedInstanceExpiration, typeof(TimeSpan), WorkflowRuntimeBehavior.DefaultCachedInstanceExpiration));
|
||
|
}
|
||
|
|
||
|
return this.configProperties;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected internal override object CreateBehavior()
|
||
|
{
|
||
|
return new WorkflowRuntimeBehavior(new WorkflowRuntime(CreateWorkflowRuntimeSection()), this.CachedInstanceExpiration, this.ValidateOnCreate);
|
||
|
}
|
||
|
|
||
|
WorkflowRuntimeSection CreateWorkflowRuntimeSection()
|
||
|
{
|
||
|
if (wrtSection == null)
|
||
|
{
|
||
|
wrtSection = new WorkflowRuntimeSection();
|
||
|
wrtSection.Name = this.Name;
|
||
|
wrtSection.ValidateOnCreate = false;
|
||
|
wrtSection.EnablePerformanceCounters = this.EnablePerformanceCounters;
|
||
|
|
||
|
foreach (WorkflowRuntimeServiceElement wrtSvcElement in this.Services)
|
||
|
{
|
||
|
wrtSection.Services.Add(wrtSvcElement);
|
||
|
}
|
||
|
|
||
|
foreach (NameValueConfigurationElement nameValueElement in this.CommonParameters)
|
||
|
{
|
||
|
wrtSection.CommonParameters.Add(nameValueElement);
|
||
|
}
|
||
|
}
|
||
|
return wrtSection;
|
||
|
}
|
||
|
}
|
||
|
}
|