⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servicelocator.cs

📁 基于DotNet的开源工作流引擎
💻 CS
字号:
using System;
using log4net;
using NetBpm.Workflow.Definition.EComp;
using NetBpm.Workflow.Delegation.ClassLoader;
using NetBpm.Workflow.Execution.EComp;
using NetBpm.Workflow.Log.EComp;
using NetBpm.Workflow.Organisation.EComp;
using NetBpm.Workflow.Scheduler.EComp;
using NetBpm.Workflow.Scheduler.EComp.Impl;
using NetBpm;

namespace NetBpm.Util.Client
{
	public class ServiceLocator
	{
		private static readonly ServiceLocator instance = new ServiceLocator();
		private readonly SchedulerThread scheduler = new SchedulerThread();
		private static readonly ILog log = LogManager.GetLogger(typeof (ServiceLocator));
//		private static readonly NetBpmContainer container = NetBpmContainer.Instance;

		private ServiceLocator()
		{
		}

		/// <summary> get an instance of this service locator with default params</summary>
		/// <returns>ServiceLocator</returns>
		public static ServiceLocator Instance
		{
			get { return instance; }
		}

		public SchedulerThread Scheduler
		{
			get { return scheduler; }
		}
/*
		public NetBpmContainer Container
		{
			get { return container; }
		}
*/
		/// <summary> Get a netbpm component. Following are valid interfaceClass. If invalid 
		/// interfaceClass are supplied, an error will be logged.
		/// </summary>
		/// <param name="interfaceClass">interfaceClass
		/// </param>
		/// <returns> Object
		/// </returns>
		public Object GetService(Type interfaceClass)
		{
			Object serviceObject = null;

			try
			{
				if (interfaceClass == typeof (IOrganisationSessionLocal))
				{
					serviceObject = NetBpmContainer.Instance["OrganisationSession"];
				}
				else if (interfaceClass == typeof (IDefinitionSessionLocal))
				{
					serviceObject = NetBpmContainer.Instance["DefinitionSession"];
				}
				else if (interfaceClass == typeof (IExecutionSessionLocal))
				{
					serviceObject = NetBpmContainer.Instance["ExecutionSession"];
				}
				else if (interfaceClass == typeof (ISchedulerSessionLocal))
				{
					serviceObject = NetBpmContainer.Instance["SchedulerSession"];
				}
				else if (interfaceClass == typeof (ILogSessionLocal))
				{
					serviceObject = NetBpmContainer.Instance["LogSession"];
				}
				else if (interfaceClass == typeof (IClassLoader))
				{
					serviceObject = NetBpmContainer.Instance["ClassLoader"];
				}
				else
					throw new SystemException("couldn't get unknown service : " + interfaceClass.FullName);
			}
			catch (Exception t)
			{
				log.Error("couldn't get service " + interfaceClass.FullName, t);
				throw new SystemException("couldn't get service " + interfaceClass.FullName);
			}

			return serviceObject;
		}

		public void Release(object releaseObject)
		{
			NetBpmContainer.Instance.Release(releaseObject);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -