Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / WorkflowPersistenceService.cs / 1305376 / WorkflowPersistenceService.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.IO; using System.IO.Compression; using System.Workflow.Runtime; using System.Workflow.ComponentModel; using System.Diagnostics; namespace System.Workflow.Runtime.Hosting { ///Service for saving engine state. public abstract class WorkflowPersistenceService : WorkflowRuntimeService { ///Saves the state of a workflow instance. /// The workflow instance state to save internal protected abstract void SaveWorkflowInstanceState(Activity rootActivity, bool unlock); ////// internal protected abstract void UnlockWorkflowInstanceState(Activity rootActivity); /// Loads the state of a workflow instance. /// The unique ID of the instance to load ///The workflow instance state internal protected abstract Activity LoadWorkflowInstanceState(Guid instanceId); ///Saves the state of a completed scope. /// The completed scope to save internal protected abstract void SaveCompletedContextActivity(Activity activity); ///Loads the state of a completed scope /// The unique identifier of the completed scope ///The completed scope or null internal protected abstract Activity LoadCompletedContextActivity(Guid scopeId, Activity outerActivity); ////// /// The value of the "UnloadOnIdle" flag internal protected abstract bool UnloadOnIdle(Activity activity); static protected byte[] GetDefaultSerializedForm(Activity activity) { DateTime startTime = DateTime.Now; Byte[] result; Debug.Assert(activity != null, "Null activity"); using (MemoryStream stream = new MemoryStream(10240)) { stream.Position = 0; activity.Save(stream); using (MemoryStream compressedStream = new MemoryStream((int)stream.Length)) { using (GZipStream gzs = new GZipStream(compressedStream, CompressionMode.Compress, true)) { gzs.Write(stream.GetBuffer(), 0, (int)stream.Length); } ActivityExecutionContextInfo executionContextInfo = (ActivityExecutionContextInfo)activity.GetValue(Activity.ActivityExecutionContextInfoProperty); TimeSpan timeElapsed = DateTime.Now - startTime; WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Serialized a {0} with id {1} to length {2}. Took {3}.", executionContextInfo, executionContextInfo.ContextGuid, compressedStream.Length, timeElapsed); result = compressedStream.GetBuffer(); Array.Resize(ref result, Convert.ToInt32(compressedStream.Length)); } } return result; } static protected Activity RestoreFromDefaultSerializedForm(Byte[] activityBytes, Activity outerActivity) { DateTime startTime = DateTime.Now; Activity state; MemoryStream stream = new MemoryStream(activityBytes); stream.Position = 0; using (GZipStream gzs = new GZipStream(stream, CompressionMode.Decompress, true)) { state = Activity.Load(gzs, outerActivity); } Debug.Assert(state != null, "invalid state recovered"); TimeSpan timeElapsed = DateTime.Now - startTime; WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Deserialized a {0} to length {1}. Took {2}.", state, stream.Length, timeElapsed); return state; } static protected internal bool GetIsBlocked(Activity rootActivity) { return (bool)rootActivity.GetValue(WorkflowExecutor.IsBlockedProperty); } static protected internal string GetSuspendOrTerminateInfo(Activity rootActivity) { return (string)rootActivity.GetValue(WorkflowExecutor.SuspendOrTerminateInfoProperty); } static protected internal WorkflowStatus GetWorkflowStatus(Activity rootActivity) { return (WorkflowStatus)rootActivity.GetValue(WorkflowExecutor.WorkflowStatusProperty); } } } // 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
- MobileContainerDesigner.cs
- HttpVersion.cs
- PropertyConverter.cs
- XmlTextAttribute.cs
- GraphicsState.cs
- XmlHelper.cs
- IntSecurity.cs
- SearchExpression.cs
- OrderingExpression.cs
- DataListItem.cs
- TypeDependencyAttribute.cs
- ApplyTemplatesAction.cs
- HuffCodec.cs
- SafeMILHandle.cs
- DropDownButton.cs
- TextEditorMouse.cs
- ScrollItemProviderWrapper.cs
- DuplicateWaitObjectException.cs
- Publisher.cs
- RegionIterator.cs
- ArgIterator.cs
- OrderedDictionary.cs
- TypeUnloadedException.cs
- PolyLineSegment.cs
- DataGridColumnCollection.cs
- processwaithandle.cs
- IndexOutOfRangeException.cs
- Rule.cs
- XsltCompileContext.cs
- ScriptComponentDescriptor.cs
- StylusCollection.cs
- XmlSchemaSimpleContentExtension.cs
- SettingsSavedEventArgs.cs
- GridViewDeletedEventArgs.cs
- NativeMethods.cs
- ActivityExecutorSurrogate.cs
- MsmqIntegrationChannelListener.cs
- DataGridViewColumnCollectionDialog.cs
- NumericUpDown.cs
- DataGridPagerStyle.cs
- XmlAggregates.cs
- DataGridColumnHeadersPresenter.cs
- CodeSubDirectoriesCollection.cs
- SqlDependencyUtils.cs
- ZipIOExtraFieldElement.cs
- xmlglyphRunInfo.cs
- AutomationPatternInfo.cs
- DataServiceRequestOfT.cs
- RelationshipEnd.cs
- UInt16Converter.cs
- BitmapEffectGroup.cs
- SymbolPair.cs
- TablePattern.cs
- TransformDescriptor.cs
- InvariantComparer.cs
- Package.cs
- DataSourceProvider.cs
- FixedLineResult.cs
- NamedPipeHostedTransportConfiguration.cs
- XmlSchemaSimpleContent.cs
- TraceShell.cs
- RegexRunnerFactory.cs
- OracleString.cs
- _ChunkParse.cs
- DesignerLoader.cs
- VScrollBar.cs
- SecurityResources.cs
- sqlmetadatafactory.cs
- XmlPreloadedResolver.cs
- IntegerValidatorAttribute.cs
- XamlSerializationHelper.cs
- BuildProviderAppliesToAttribute.cs
- MappingModelBuildProvider.cs
- SqlGatherConsumedAliases.cs
- XmlNodeWriter.cs
- ImageProxy.cs
- HtmlHead.cs
- CustomValidator.cs
- TransmissionStrategy.cs
- ISO2022Encoding.cs
- FrameDimension.cs
- TextElementCollectionHelper.cs
- CompModHelpers.cs
- OpenFileDialog.cs
- AbandonedMutexException.cs
- Effect.cs
- CompositeCollection.cs
- HtmlInputButton.cs
- SupportingTokenDuplexChannel.cs
- StringFreezingAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- GlyphCache.cs
- OleDbSchemaGuid.cs
- DetailsViewPageEventArgs.cs
- wgx_commands.cs
- DataListItem.cs
- TextEncodedRawTextWriter.cs
- RowType.cs
- WindowsComboBox.cs
- XmlSiteMapProvider.cs