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
- AccessDataSourceView.cs
- SqlInternalConnection.cs
- XmlSerializationWriter.cs
- EntitySetDataBindingList.cs
- ImageClickEventArgs.cs
- IdentityHolder.cs
- ReceiveCompletedEventArgs.cs
- Roles.cs
- KeyGestureConverter.cs
- OperationCanceledException.cs
- TokenFactoryCredential.cs
- ThreadStaticAttribute.cs
- XmlDataSourceView.cs
- DBConcurrencyException.cs
- KeyToListMap.cs
- MemberDescriptor.cs
- WmlListAdapter.cs
- KnownIds.cs
- StaticDataManager.cs
- CaseInsensitiveComparer.cs
- EventKeyword.cs
- DispatchChannelSink.cs
- MissingFieldException.cs
- CodeSnippetTypeMember.cs
- ClientBuildManager.cs
- OpacityConverter.cs
- DoubleLinkListEnumerator.cs
- prompt.cs
- ListViewDataItem.cs
- TextPenaltyModule.cs
- WindowsStartMenu.cs
- BamlWriter.cs
- DataGridColumn.cs
- OdbcCommandBuilder.cs
- AdjustableArrowCap.cs
- RangeBaseAutomationPeer.cs
- RulePatternOps.cs
- HtmlInputPassword.cs
- Solver.cs
- QilTargetType.cs
- SetterTriggerConditionValueConverter.cs
- ConnectionPointCookie.cs
- MemberInfoSerializationHolder.cs
- XmlTypeMapping.cs
- DbConnectionFactory.cs
- MimeTypeMapper.cs
- ComPlusTraceRecord.cs
- BackEase.cs
- IsolatedStorageFile.cs
- WSFederationHttpBinding.cs
- ObjectListItem.cs
- CompoundFileReference.cs
- InternalResources.cs
- UnionExpr.cs
- WmlTextBoxAdapter.cs
- BaseCodeDomTreeGenerator.cs
- Rules.cs
- HttpHandlersInstallComponent.cs
- SmtpFailedRecipientException.cs
- ProxyFragment.cs
- FormViewActionList.cs
- DirtyTextRange.cs
- connectionpool.cs
- SyndicationElementExtensionCollection.cs
- MenuTracker.cs
- OnOperation.cs
- GlobalItem.cs
- CommonRemoteMemoryBlock.cs
- CallbackBehaviorAttribute.cs
- DataExpression.cs
- Transform3DCollection.cs
- X509Certificate2.cs
- Renderer.cs
- ParseHttpDate.cs
- StoryFragments.cs
- MatchingStyle.cs
- ReadOnlyDictionary.cs
- TypeNameConverter.cs
- RolePrincipal.cs
- DataGridViewComboBoxCell.cs
- ConnectionManagementElementCollection.cs
- InputMethodStateChangeEventArgs.cs
- PopOutPanel.cs
- SystemTcpStatistics.cs
- ModuleBuilderData.cs
- BitmapEditor.cs
- ConfigurationValues.cs
- MultiDataTrigger.cs
- EncryptedPackageFilter.cs
- OracleDateTime.cs
- Utils.cs
- ThrowHelper.cs
- ToolboxItemCollection.cs
- PrinterSettings.cs
- BindingMemberInfo.cs
- UnsafeNativeMethodsTablet.cs
- CompilerParameters.cs
- PathTooLongException.cs
- NotifyInputEventArgs.cs
- Compiler.cs