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
- ISSmlParser.cs
- __Filters.cs
- GB18030Encoding.cs
- CommonProperties.cs
- AssemblyUtil.cs
- GroupBox.cs
- CaseInsensitiveOrdinalStringComparer.cs
- CqlQuery.cs
- DataGridViewBand.cs
- XmlArrayItemAttribute.cs
- WinEventTracker.cs
- ProviderManager.cs
- ClientRoleProvider.cs
- UndoEngine.cs
- NotSupportedException.cs
- InternalsVisibleToAttribute.cs
- MinimizableAttributeTypeConverter.cs
- StandardToolWindows.cs
- DynamicPropertyReader.cs
- XmlSchemaDatatype.cs
- FunctionParameter.cs
- ByteAnimationBase.cs
- InputLanguageCollection.cs
- ViewBase.cs
- ContainerControl.cs
- WebPartDisplayModeCancelEventArgs.cs
- BrushValueSerializer.cs
- ActivityUtilities.cs
- DeobfuscatingStream.cs
- IntersectQueryOperator.cs
- CompositeControl.cs
- ConfigErrorGlyph.cs
- OutputScope.cs
- CultureData.cs
- SignatureConfirmations.cs
- CacheMemory.cs
- RelAssertionDirectKeyIdentifierClause.cs
- DictationGrammar.cs
- WorkflowDefinitionDispenser.cs
- TableRowCollection.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ChineseLunisolarCalendar.cs
- BuildManagerHost.cs
- GridErrorDlg.cs
- ColumnResizeUndoUnit.cs
- DragDeltaEventArgs.cs
- SqlReferenceCollection.cs
- TreeViewDesigner.cs
- SignedInfo.cs
- Compensation.cs
- ManualResetEvent.cs
- NGCSerializationManagerAsync.cs
- codemethodreferenceexpression.cs
- translator.cs
- IncrementalHitTester.cs
- FileRecordSequence.cs
- CustomAssemblyResolver.cs
- IndexerReference.cs
- CellParagraph.cs
- ClientProxyGenerator.cs
- EmptyControlCollection.cs
- QilXmlWriter.cs
- TextEditorSpelling.cs
- OutputCacheProfile.cs
- GestureRecognizer.cs
- ObjectPersistData.cs
- SvcMapFileSerializer.cs
- MatrixAnimationUsingKeyFrames.cs
- SystemWebExtensionsSectionGroup.cs
- Duration.cs
- VisualTreeHelper.cs
- RequestTimeoutManager.cs
- InertiaExpansionBehavior.cs
- BinarySecretSecurityToken.cs
- ReadOnlyCollection.cs
- List.cs
- SeverityFilter.cs
- HtmlButton.cs
- EventLog.cs
- JsonFaultDetail.cs
- DictionaryManager.cs
- InvokePatternIdentifiers.cs
- StringOutput.cs
- DiscoveryDocumentLinksPattern.cs
- RealProxy.cs
- SqlRecordBuffer.cs
- SafeRightsManagementPubHandle.cs
- RootBuilder.cs
- DataTableReader.cs
- WinCategoryAttribute.cs
- EntityConnectionStringBuilderItem.cs
- DetailsViewPagerRow.cs
- SerializableAttribute.cs
- Matrix3DStack.cs
- LinqToSqlWrapper.cs
- As.cs
- AllMembershipCondition.cs
- RegexFCD.cs
- CodeCompiler.cs
- DefaultAuthorizationContext.cs