1 #pragma warning disable 1634, 1691 2 using System; 3 using System.Globalization; 4 using System.Collections; 5 using System.Collections.Generic; 6 using System.Collections.Specialized; 7 using System.Collections.ObjectModel; 8 using System.ComponentModel.Design.Serialization; 9 using System.Diagnostics; 10 using System.IO; 11 using System.Reflection; 12 using System.Text; 13 using System.Threading; 14 using System.Xml; 15 using System.Transactions; 16 using SES = System.EnterpriseServices; 17 using System.Workflow.ComponentModel; 18 using System.Workflow.Runtime.Hosting; 19 20 namespace System.Workflow.Runtime 21 { 22 #region ContextActivityUtils Class 23 24 internal static class ContextActivityUtils 25 { ContextId(Activity activity)26 internal static int ContextId(Activity activity) 27 { 28 return ((ActivityExecutionContextInfo)ContextActivity(activity).GetValue(Activity.ActivityExecutionContextInfoProperty)).ContextId; 29 } 30 ContextActivity(Activity activity)31 internal static Activity ContextActivity(Activity activity) 32 { 33 Activity contextActivity = activity; 34 while (contextActivity != null && contextActivity.GetValue(Activity.ActivityExecutionContextInfoProperty) == null) 35 contextActivity = contextActivity.Parent; 36 return contextActivity; 37 } ParentContextActivity(Activity activity)38 internal static Activity ParentContextActivity(Activity activity) 39 { 40 Activity contextActivity = ContextActivity(activity); 41 ActivityExecutionContextInfo executionContextInfo = (ActivityExecutionContextInfo)contextActivity.GetValue(Activity.ActivityExecutionContextInfoProperty); 42 if (executionContextInfo.ParentContextId == -1) 43 return null; 44 45 return RetrieveWorkflowExecutor(activity).GetContextActivityForId(executionContextInfo.ParentContextId); 46 } RetrieveWorkflowExecutor(Activity activity)47 internal static IWorkflowCoreRuntime RetrieveWorkflowExecutor(Activity activity) 48 { 49 // fetch workflow executor 50 IWorkflowCoreRuntime workflowExecutor = null; 51 Activity rootActivity = activity; 52 while (rootActivity != null && rootActivity.Parent != null) 53 rootActivity = rootActivity.Parent; 54 if (rootActivity != null) 55 workflowExecutor = (IWorkflowCoreRuntime)rootActivity.GetValue(WorkflowExecutor.WorkflowExecutorProperty); 56 57 return workflowExecutor; 58 } RootContextActivity(Activity activity)59 internal static Activity RootContextActivity(Activity activity) 60 { 61 return RetrieveWorkflowExecutor(activity).RootActivity; 62 } 63 } 64 #endregion 65 } 66