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
- WindowsTooltip.cs
- ISAPIWorkerRequest.cs
- SectionXmlInfo.cs
- RoutedEventHandlerInfo.cs
- TableCell.cs
- XmlStreamNodeWriter.cs
- OpCopier.cs
- PartialTrustValidationBehavior.cs
- SQLByteStorage.cs
- Track.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- Listen.cs
- HttpCookiesSection.cs
- MailMessageEventArgs.cs
- Helper.cs
- ImageConverter.cs
- ClientRuntimeConfig.cs
- PropertyTab.cs
- ZoneMembershipCondition.cs
- ReferentialConstraint.cs
- Point3DConverter.cs
- MarshalDirectiveException.cs
- DocumentViewerBaseAutomationPeer.cs
- altserialization.cs
- PathSegment.cs
- CacheChildrenQuery.cs
- ItemAutomationPeer.cs
- SizeKeyFrameCollection.cs
- MediaTimeline.cs
- AspCompat.cs
- IncrementalHitTester.cs
- AuthenticatedStream.cs
- StrongNameHelpers.cs
- ListManagerBindingsCollection.cs
- HMACSHA384.cs
- NamespaceInfo.cs
- Compilation.cs
- MsmqInputChannelListener.cs
- UIntPtr.cs
- ProjectionPlanCompiler.cs
- ResourceProviderFactory.cs
- RefreshPropertiesAttribute.cs
- NegatedConstant.cs
- MethodToken.cs
- NullableDoubleAverageAggregationOperator.cs
- TransformGroup.cs
- ClientSettingsStore.cs
- NameValuePair.cs
- GeneralTransform3DGroup.cs
- WebPartUserCapability.cs
- SQLMoneyStorage.cs
- ServiceNameCollection.cs
- UnsafeNativeMethods.cs
- AsymmetricAlgorithm.cs
- WebPartCatalogCloseVerb.cs
- UIElement.cs
- Expressions.cs
- ListControl.cs
- Blend.cs
- PerformanceCounters.cs
- TypedAsyncResult.cs
- XmlCountingReader.cs
- EmptyEnumerable.cs
- ResponseBodyWriter.cs
- GroupLabel.cs
- StandardToolWindows.cs
- MiniCustomAttributeInfo.cs
- ThicknessAnimation.cs
- AppDomain.cs
- TreeViewBindingsEditor.cs
- FormViewUpdatedEventArgs.cs
- BitSet.cs
- panel.cs
- _ProxyChain.cs
- Transform3DCollection.cs
- DependencyPropertyConverter.cs
- WebReferenceOptions.cs
- PrintDocument.cs
- OperationCanceledException.cs
- Latin1Encoding.cs
- CompoundFileStorageReference.cs
- ProcessModuleDesigner.cs
- _FtpDataStream.cs
- UrlUtility.cs
- ManipulationDevice.cs
- XmlSchemaElement.cs
- DataGridViewSelectedCellCollection.cs
- MetadataItemEmitter.cs
- UnionCodeGroup.cs
- DataSpaceManager.cs
- WebPartUtil.cs
- ObjectQueryExecutionPlan.cs
- XPathDocument.cs
- PriorityBinding.cs
- ICspAsymmetricAlgorithm.cs
- GetRecipientListRequest.cs
- WindowsGraphicsCacheManager.cs
- EmptyImpersonationContext.cs
- HwndSubclass.cs
- ArgIterator.cs