Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- ScriptingProfileServiceSection.cs
- ValidatorCollection.cs
- PrimitiveType.cs
- GridViewColumn.cs
- DictionaryEntry.cs
- PointF.cs
- ResourceReferenceExpression.cs
- DispatcherHookEventArgs.cs
- ExtendedProtectionPolicy.cs
- DataGridViewCellValidatingEventArgs.cs
- BufferCache.cs
- SelectionItemPattern.cs
- CommonGetThemePartSize.cs
- StreamProxy.cs
- FlowPosition.cs
- Rectangle.cs
- Signature.cs
- TraceContextEventArgs.cs
- EmptyEnumerator.cs
- DataKey.cs
- TemplateBindingExpressionConverter.cs
- TextEditorSpelling.cs
- CodeTypeMemberCollection.cs
- PerformanceCounterCategory.cs
- OperationGenerator.cs
- PropertyTabChangedEvent.cs
- GestureRecognitionResult.cs
- RemotingAttributes.cs
- DataGridCellEditEndingEventArgs.cs
- BmpBitmapDecoder.cs
- Span.cs
- CodeTypeDeclarationCollection.cs
- ReflectionHelper.cs
- FileBasedResourceGroveler.cs
- DecimalAnimationBase.cs
- IgnoreFileBuildProvider.cs
- MaskedTextBoxTextEditorDropDown.cs
- DSASignatureFormatter.cs
- SHA384.cs
- PreservationFileReader.cs
- SynchronizedDispatch.cs
- CacheChildrenQuery.cs
- HttpStreamMessageEncoderFactory.cs
- SqlUnionizer.cs
- SafeLocalMemHandle.cs
- DateTime.cs
- XsltConvert.cs
- GenericsNotImplementedException.cs
- WindowsFont.cs
- RewritingProcessor.cs
- GetLedgerRequest.cs
- VisualProxy.cs
- GenericWebPart.cs
- XmlSchemaAttributeGroup.cs
- FormParameter.cs
- NetDataContractSerializer.cs
- XslUrlEditor.cs
- IndexingContentUnit.cs
- IListConverters.cs
- XmlComment.cs
- SByteConverter.cs
- HttpCapabilitiesSectionHandler.cs
- EntityDesignerUtils.cs
- SettingsAttributes.cs
- Int32.cs
- NestedContainer.cs
- StringReader.cs
- ListView.cs
- ProgressBarRenderer.cs
- DataGridViewTopRowAccessibleObject.cs
- SoapReflectionImporter.cs
- TypeNameHelper.cs
- CompareInfo.cs
- ProfilePropertyNameValidator.cs
- CapabilitiesRule.cs
- TypeSystem.cs
- SerializerProvider.cs
- Util.cs
- ServiceDebugElement.cs
- DependencyObjectProvider.cs
- XmlSerializationGeneratedCode.cs
- GridView.cs
- SoapAttributeAttribute.cs
- RubberbandSelector.cs
- AnimationTimeline.cs
- StylusPointPropertyUnit.cs
- ToolboxItemCollection.cs
- SystemIcmpV6Statistics.cs
- MatrixAnimationUsingKeyFrames.cs
- ShutDownListener.cs
- WrappedIUnknown.cs
- EntityDataReader.cs
- QueryableDataSource.cs
- TraceFilter.cs
- ProcessHost.cs
- ModelItemExtensions.cs
- CodeMethodReturnStatement.cs
- EdmTypeAttribute.cs
- CustomAttributeSerializer.cs
- RequiredFieldValidator.cs