internal RTTrackingProfile GetProfile(TrackingService service, Activity workflow, Version versionId) { if (service == null) { throw new ArgumentNullException("service"); } if (workflow == null) { throw new ArgumentNullException("workflow"); } if (!this._init) { throw new InvalidOperationException(ExecutionStringManager.TrackingProfileManagerNotInitialized); } Type workflowType = workflow.GetType(); RTTrackingProfile profile = null; if (this.TryGetFromCache(service.GetType(), workflowType, versionId, out profile)) { return profile; } TrackingProfile profile2 = service.GetProfile(workflowType, versionId); string str = workflow.GetValue(Activity.WorkflowXamlMarkupProperty) as string; if ((str != null) && (str.Length > 0)) { return this.CreateProfile(profile2, workflow, service.GetType()); } profile = this.CreateProfile(profile2, workflowType, service.GetType()); lock (this._cacheLock) { RTTrackingProfile profile3 = null; if (this.TryGetFromCache(service.GetType(), workflowType, versionId, out profile3)) { return profile3; } if (!this.AddToCache(profile, service.GetType())) { throw new ApplicationException(ExecutionStringManager.ProfileCacheInsertFailure); } return profile; } }
internal RTTrackingProfile GetProfile(TrackingService service, Activity schedule) { if (!this._init) { throw new ApplicationException(ExecutionStringManager.TrackingProfileManagerNotInitialized); } if ((service == null) || (schedule == null)) { WorkflowTrace.Tracking.TraceEvent(TraceEventType.Error, 0, ExecutionStringManager.NullParameters); return null; } Type workflowType = schedule.GetType(); RTTrackingProfile profile = null; if ((service is IProfileNotification) && this.TryGetFromCache(service.GetType(), workflowType, out profile)) { return profile; } TrackingProfile profile2 = null; if (!service.TryGetProfile(workflowType, out profile2)) { this.RemoveProfile(workflowType, service.GetType()); return null; } if (this.TryGetFromCache(service.GetType(), workflowType, profile2.Version, out profile)) { return profile; } string str = schedule.GetValue(Activity.WorkflowXamlMarkupProperty) as string; if ((str != null) && (str.Length > 0)) { return this.CreateProfile(profile2, schedule, service.GetType()); } profile = this.CreateProfile(profile2, workflowType, service.GetType()); lock (this._cacheLock) { RTTrackingProfile profile3 = null; if (this.TryGetFromCache(service.GetType(), workflowType, profile2.Version, out profile3)) { return profile3; } if (!this.AddToCache(profile, service.GetType())) { throw new ApplicationException(ExecutionStringManager.ProfileCacheInsertFailure); } return profile; } }
internal RTTrackingProfile GetProfile(TrackingService service, Activity workflow, Guid instanceId) { TrackingProfile profile = service.GetProfile(instanceId); if (profile == null) { return null; } return new RTTrackingProfile(profile, workflow, service.GetType()); }