Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / DefaultWorkflowTransactionService.cs / 1305376 / DefaultWorkflowTransactionService.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Transactions;
using System.Collections.Specialized;
using System.Diagnostics;
using System.Configuration;
namespace System.Workflow.Runtime.Hosting
{
/// A simple TransactionService that creates
/// System.Transactions.CommittableTransaction .
public class DefaultWorkflowCommitWorkBatchService : WorkflowCommitWorkBatchService
{
private bool _enableRetries = false;
private bool _ignoreCommonEnableRetries = false;
public DefaultWorkflowCommitWorkBatchService()
{
}
public DefaultWorkflowCommitWorkBatchService(NameValueCollection parameters)
{
if (parameters == null)
throw new ArgumentNullException("parameters", ExecutionStringManager.MissingParameters);
if (parameters.Count > 0)
{
foreach (string key in parameters.Keys)
{
if (0 == string.Compare("EnableRetries", key, StringComparison.OrdinalIgnoreCase))
{
_enableRetries = bool.Parse(parameters[key]);
_ignoreCommonEnableRetries = true;
}
}
}
}
public bool EnableRetries
{
get { return _enableRetries; }
set
{
_enableRetries = value;
_ignoreCommonEnableRetries = true;
}
}
protected internal override void Start()
{
WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService: Starting");
//
// If we didn't find a local value for enable retries
// check in the common section
if ((!_ignoreCommonEnableRetries)&&(null != base.Runtime))
{
NameValueConfigurationCollection commonConfigurationParameters = base.Runtime.CommonParameters;
if (commonConfigurationParameters != null)
{
// Then scan for connection string in the common configuration parameters section
foreach (string key in commonConfigurationParameters.AllKeys)
{
if (string.Compare("EnableRetries", key, StringComparison.OrdinalIgnoreCase) == 0)
{
_enableRetries = bool.Parse(commonConfigurationParameters[key].Value);
break;
}
}
}
}
base.Start();
}
protected override void OnStopped()
{
WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService: Stopping");
base.OnStopped();
}
internal protected override void CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)
{
DbRetry dbRetry = new DbRetry(_enableRetries);
short retryCounter = 0;
while (true)
{
if (null != Transaction.Current)
{
//
// Can't retry as we don't own the tx
// Set the counter to only allow one iteration
retryCounter = dbRetry.MaxRetries;
}
try
{
base.CommitWorkBatch(commitWorkBatchCallback);
break;
}
catch( Exception e )
{
WorkflowTrace.Host.TraceEvent(TraceEventType.Error, 0, "DefaultWorkflowCommitWorkBatchService caught exception from commitWorkBatchCallback: " + e.ToString());
if (dbRetry.TryDoRetry(ref retryCounter))
{
WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "DefaultWorkflowCommitWorkBatchService retrying commitWorkBatchCallback (retry attempt " + retryCounter.ToString(System.Globalization.CultureInfo.InvariantCulture) + ")");
continue;
}
else
throw;
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaChoice.cs
- ContextBase.cs
- CreatingCookieEventArgs.cs
- XPathNodeIterator.cs
- HttpWebRequest.cs
- TreeNodeStyle.cs
- WebPartEditorOkVerb.cs
- DbDataSourceEnumerator.cs
- DataGridViewColumnStateChangedEventArgs.cs
- StreamWithDictionary.cs
- ApplicationTrust.cs
- SiteOfOriginPart.cs
- ActivityMarkupSerializationProvider.cs
- HighlightComponent.cs
- PersonalizationProviderHelper.cs
- Schedule.cs
- AutomationPatternInfo.cs
- xmlglyphRunInfo.cs
- UserControl.cs
- TextEvent.cs
- SynchronizationContextHelper.cs
- Error.cs
- ToolStripSplitButton.cs
- TrackingServices.cs
- FormViewUpdatedEventArgs.cs
- FieldNameLookup.cs
- InstanceCompleteException.cs
- EmptyQuery.cs
- StandardTransformFactory.cs
- Panel.cs
- KnownTypes.cs
- Metafile.cs
- WinEventTracker.cs
- DeferredTextReference.cs
- BrowserCapabilitiesFactory.cs
- GeometryGroup.cs
- MailMessageEventArgs.cs
- CapabilitiesAssignment.cs
- XmlChoiceIdentifierAttribute.cs
- WebPart.cs
- DesigntimeLicenseContext.cs
- ViewGenResults.cs
- DefaultSerializationProviderAttribute.cs
- TextTreeDeleteContentUndoUnit.cs
- NoClickablePointException.cs
- ResetableIterator.cs
- Scripts.cs
- ImageFormat.cs
- PatternMatcher.cs
- SafeNativeMethods.cs
- EntityDataSourceReferenceGroup.cs
- MarkupExtensionReturnTypeAttribute.cs
- WebResourceAttribute.cs
- InternalBase.cs
- CheckBoxPopupAdapter.cs
- CanonicalFontFamilyReference.cs
- CounterSample.cs
- SQLCharsStorage.cs
- CollectionTraceRecord.cs
- DeviceContext2.cs
- HtmlButton.cs
- XmlSchemaResource.cs
- TraceListener.cs
- CultureMapper.cs
- FormViewAutoFormat.cs
- WebPartDescription.cs
- RegexParser.cs
- UrlMappingCollection.cs
- KeyboardDevice.cs
- FileSecurity.cs
- TrackingCondition.cs
- QilValidationVisitor.cs
- MouseActionValueSerializer.cs
- _OSSOCK.cs
- UnitySerializationHolder.cs
- DllNotFoundException.cs
- SectionInformation.cs
- Error.cs
- ToolStripTextBox.cs
- EntityDataSourceContainerNameConverter.cs
- SecureConversationServiceElement.cs
- ListViewDesigner.cs
- MDIClient.cs
- InputLangChangeEvent.cs
- ScriptComponentDescriptor.cs
- WinCategoryAttribute.cs
- PrintDocument.cs
- MediaTimeline.cs
- X509UI.cs
- XmlSchemaAny.cs
- InvokeHandlers.cs
- TypedRowGenerator.cs
- smtppermission.cs
- TimeManager.cs
- RemoteX509Token.cs
- Root.cs
- __Filters.cs
- GeneralTransformGroup.cs
- Icon.cs
- SqlXml.cs