亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hibernateworkflowstore.cs

?? 基于DotNet的工作流引擎實現
?? CS
?? 第 1 頁 / 共 2 頁
字號:
using System;
using System.Collections;
using DotNetTools.PropertySet;
using DotNetTools.Util;
using DotNetTools.Workflow.Query;
using log4net;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Expression;
using Iesi.Collections;
using Expression = NHibernate.Expression.Expression;
/*
* Copyright (c) 2002-2003 by OpenSymphony
* All rights reserved.
*/
namespace DotNetTools.Workflow.Spi.Hibernate
{
	/// <summary> A workflow store backed by Hibernate for persistence.  To use this with the standard
	/// persistence factory, pass to the DefaultConfiguration.persistenceArgs the SessionFactory to
	/// use:
	/// <code>DefaultConfiguration.persistenceArgs.put("sessionFactory", DatabaseHelper.getSessionFactory());</code>
	/// See the HibernateFunctionalWorkflowTestCase for more help.
	/// *
	/// </summary>
	/// <author>jjx (.net)</author>
	public class HibernateWorkflowStore : IWorkflowStore
	{
		//~ Static fields/initializers /////////////////////////////////////////////
		
		private static readonly ILog log;
		
		//~ Instance fields ////////////////////////////////////////////////////////
		
		internal ISession session;
		internal ISessionFactory sessionFactory;
		
		//~ Constructors ///////////////////////////////////////////////////////////
		
		public HibernateWorkflowStore()
		{
		}
		public HibernateWorkflowStore(IDictionary props)
		{
			Init(props);
		}
		
		public HibernateWorkflowStore(ISessionFactory sessionFactory)
		{
			this.sessionFactory = sessionFactory;
			
			try
			{
				this.session = sessionFactory.OpenSession();
			}
			catch (HibernateException he)
			{
				log.Error("constructor", he);
				throw new StoreException("constructor", he);
			}
		}
		
		//~ Methods ////////////////////////////////////////////////////////////////
		
		public virtual void  SetEntryState(long entryId, int state)
		{
			try
			{
				HibernateWorkflowEntry entry = (HibernateWorkflowEntry) session.Find("FROM  " + typeof(HibernateWorkflowEntry).FullName + " as entry WHERE entry.Id = ?", entryId, NHibernateUtil.Int64)[0];
				entry.State = state;
				session.Save(entry);
			}
			catch (HibernateException e)
			{
				log.Error("An exception occured", e);
				
				return ;
			}
		}
		//todo: 使用ado代替
		public virtual IPropertySet GetPropertySet(long entryId)
		{

			IDictionary args = new Hashtable(1);
			args.Add("globalKey", "osff_" + entryId);

			return PropertySetManager.GetInstance("ado", args);
//			IDictionary args = new Hashtable();
//			args.Add("entityName", "OSWorkflowEntry");
//			args.Add("entityId", entryId);
//			
//			DefaultHibernateConfigurationProvider configurationProvider = new DefaultHibernateConfigurationProvider();
//			configurationProvider.setSessionFactory(sessionFactory);
//			
//			args.put("configurationProvider", configurationProvider);
			
//			return PropertySetManager.GetInstance("hibernate", args);
		}
		
		public virtual IStep CreateCurrentStep(long entryId, int stepId, String owner, DateTime startDate, DateTime dueDate, String status, long[] previousIds)
		{
			HibernateCurrentStep step = new HibernateCurrentStep();
			HibernateWorkflowEntry entry;
			
			ITransaction tx;
			
			try
			{
				tx = session.BeginTransaction();
				entry = (HibernateWorkflowEntry) session.Find("FROM  " + typeof(HibernateWorkflowEntry).FullName + " as entry WHERE entry.Id = ?", entryId, NHibernateUtil.Int64)[0];
			}
			catch (HibernateException he)
			{
				log.Error("Looking for workflow entry " + entryId, he);
				throw new StoreException("Looking for workflow entry " + entryId, he);
			}
			
			step.Entry = entry;
			step.StepId = stepId;
			step.Owner = owner;
			step.StartDate = startDate;
			
			step.DueDate = dueDate;
			step.Status = status;
			step.FinishDate=DateTime.MaxValue;
			
			IList stepIdList = new ArrayList(previousIds.Length);
			
			for (int i = 0; i < previousIds.Length; i++)
			{
				long previousId = previousIds[i];
				stepIdList.Add(previousId);
			}
			
			if (stepIdList.Count!=0)
			{
				String stepIds = TextUtils.Join(", ", stepIdList);
				
				try
				{
					step.PreviousSteps=session.Find("FROM  " + typeof(HibernateCurrentStep).FullName + "  as step WHERE step.Id IN (" + stepIds + ")");
				}
				catch (HibernateException he)
				{
					log.Error("Looking for step in " + stepIds, he);
					throw new StoreException("Looking for step in " + stepIds, he);
				}
			}
			else
			{
				step.PreviousSteps=Collections.EMPTY_LIST;
			}
			
			if (entry.CurrentSteps == null)
			{
				ArrayList cSteps = new ArrayList(1);
				cSteps.Add(step);
				entry.CurrentSteps=(cSteps);
			}
			else
			{
				entry.CurrentSteps.Add(step);
			}
			
			try
			{
				session.Save(entry);
				tx.Commit();
				
				//session.save(step);
				return step;
			}
			catch (HibernateException he)
			{
				log.Error("Saving new workflow entry", he);
				throw new StoreException("Saving new workflow entry", he);
			}
		}
		
		public virtual IWorkflowEntry CreateEntry(String workflowName)
		{
			HibernateWorkflowEntry entry = new HibernateWorkflowEntry();
			entry.State = SimpleWorkflowEntry.CREATED;
			entry.WorkflowName = workflowName;
			
			ITransaction tx;
			
			try
			{
				tx = session.BeginTransaction();
				session.Save(entry);
				tx.Commit();
			}
			catch (HibernateException he)
			{
				log.Error("Saving new workflow entry", he);
				throw new StoreException("Saving new workflow entry", he);
			}
			
			return entry;
		}
		
		public virtual IList FindCurrentSteps(long entryId)
		{
			HibernateWorkflowEntry entry;
			
			try
			{
				entry = (HibernateWorkflowEntry) session.Find("FROM  " + typeof(HibernateWorkflowEntry).FullName + " as entry WHERE entry.Id = ?", entryId, NHibernateUtil.Int64)[0];
			}
			catch (HibernateException he)
			{
				log.Error("Looking for entryId " + entryId, he);
				throw new StoreException("Looking for entryId " + entryId, he);
			}
			
			try
			{
				return session.Find("FROM  " + typeof(HibernateCurrentStep).FullName + " as step WHERE step.Entry = ?", entry, NHibernateUtil.Entity(entry.GetType()));
			}
			catch (HibernateException he)
			{
				log.Error("Looking for step id" + entry, he);
				throw new StoreException("Looking for step id" + entry, he);
			}
		}
		
		public virtual IWorkflowEntry FindEntry(long entryId)
		{
			try
			{
				IList result = session.Find("FROM  " + typeof(HibernateWorkflowEntry).FullName + "  as entry WHERE entry.Id = ?", entryId, NHibernateUtil.Int64);
				
				return (IWorkflowEntry) result[0];
			}
			catch (HibernateException he)
			{
				log.Error("Looking for entry " + entryId, he);
				throw new StoreException("Loooking for entry " + entryId, he);
			}
		}
		
		public virtual IList FindHistorySteps(long entryId)
		{
			HibernateWorkflowEntry entry;
			
			try
			{
				entry = (HibernateWorkflowEntry) session.Find("FROM  " + typeof(HibernateWorkflowEntry).FullName + " as entry WHERE entry.Id = ?", entryId, NHibernateUtil.Int64)[0];
			}
			catch (HibernateException he)
			{
				log.Error("Finding entry " + entryId, he);
				throw new StoreException("Finding entry " + entryId, he);
			}
			
			try
			{
				return session.Find("FROM  " + typeof(HibernateHistoryStep).FullName + " as step WHERE step.Entry = ? order by step.StepId desc", entry, NHibernateUtil.Entity(entry.GetType()));
			}
			catch (HibernateException he)
			{
				log.Error("Looking for step with entry " + entry, he);
				throw new StoreException("Looking for step with entry " + entry, he);
			}
		}
		protected ISessionFactory buildSessionFactory(IDictionary hibernateProperties)
		{
			Configuration configuration=new Configuration();
			
			configuration.AddProperties(hibernateProperties);

			//configuration.AddAssembly("DotNetTools.Workflow");
			configuration.AddAssembly(GetType().Assembly);

			
			return configuration.BuildSessionFactory();
		}
	
		public virtual void  Init(IDictionary props)
		{
			try
			{
				//if(1==2){
				//sessionFactory = (ISessionFactory) props["sessionFactory"];
				sessionFactory=buildSessionFactory(props);
				session = sessionFactory.OpenSession();
				
				//}
			}
			catch (HibernateException he)
			{
				log.Error("Setting sessionFactory", he);
				throw new StoreException("Setting sessionFactory", he);
			}
		}
		
		public virtual IStep MarkFinished(IStep step, int actionId, DateTime finishDate, String status, String caller)
		{
			HibernateCurrentStep currentStep = (HibernateCurrentStep) step;
			
			currentStep.ActionId = actionId;
			currentStep.FinishDate = finishDate;
			currentStep.Status = status;
			currentStep.Caller = caller;
			
			try
			{
				ITransaction tx = session.BeginTransaction();
				session.Save(currentStep);
				tx.Commit();
				
				return currentStep;
			}
			catch (HibernateException he)
			{
				log.Error("Saving current step with action " + actionId, he);
				throw new StoreException("Saving current step with action " + actionId, he);
			}
		}
		
		public virtual void  MoveToHistory(IStep step)
		{
			HibernateWorkflowEntry entry;
			
			ITransaction tx;
			
			try
			{
				tx = session.BeginTransaction();
				entry = (HibernateWorkflowEntry) session.Find("FROM " + typeof(HibernateWorkflowEntry).FullName + " as entry WHERE entry.Id = ?", step.EntryId, NHibernateUtil.Int64)[0];
			}
			catch (HibernateException he)
			{
				log.Error("Looking for workflow entry " + step.EntryId, he);
				throw new StoreException("Looking for workflow entry " + step.EntryId, he);
			}
			
			HibernateHistoryStep hStep = new HibernateHistoryStep((HibernateStep) step);
			
			entry.CurrentSteps.Remove(step);
			
			if (entry.HistorySteps == null)
			{
				ArrayList hSteps = new ArrayList(1);
				hSteps.Add(hStep);
				entry.HistorySteps=(hSteps);
			}
			else
			{
				entry.HistorySteps.Add(hStep);
			}
			
			try
			{
				session.Save(hStep);
				session.Save(entry);
				tx.Commit();
				
				//session.delete(step);
				//session.save(hStep, new Long(hStep.getId()));
			}
			catch (HibernateException he)
			{
				log.Error("Saving workflow entry " + entry.Id, he);
				throw new StoreException("Saving workflow entry " + entry.Id, he);
			}
		}
		
		public virtual IList Query(WorkflowExpressionQuery query)
		{
			Query.Expression expression = query.Expression;
			
			ICriterion expr;
			
			Type entityClass = getQueryClass(expression, null);
			

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区成人| 久久亚区不卡日本| 一区二区三区在线视频播放| a亚洲天堂av| 亚洲三级视频在线观看| 在线观看三级视频欧美| 丝袜美腿亚洲一区| 日韩一级黄色大片| 丰满岳乱妇一区二区三区| 国产精品嫩草99a| 色婷婷综合久色| 日韩电影在线观看电影| 精品理论电影在线观看| 粉嫩嫩av羞羞动漫久久久| 亚洲欧洲成人精品av97| 欧美日韩精品久久久| 捆绑调教一区二区三区| 国产午夜亚洲精品不卡| av网站一区二区三区| 亚洲一区二区在线观看视频 | 久久久久久久久久久黄色| 国产在线精品一区二区三区不卡| 国产视频一区二区在线| 色婷婷综合久久久中文字幕| 日本中文字幕一区二区视频 | 欧美性videosxxxxx| 三级成人在线视频| 国产精品视频你懂的| 欧美三级电影网站| 精品一区二区三区免费毛片爱| 日本一区二区免费在线| 在线观看免费成人| 韩国视频一区二区| 亚洲影视在线观看| 久久这里只有精品视频网| 91免费版在线| 国产最新精品精品你懂的| 亚洲一区二区欧美日韩| 久久久亚洲精品石原莉奈 | 欧美在线视频全部完| 蜜臀av一区二区三区| 尤物在线观看一区| 国产欧美视频一区二区三区| 欧美日韩和欧美的一区二区| 成人白浆超碰人人人人| 免费观看在线综合| 亚洲一区二区在线免费看| 国产精品天干天干在线综合| 日韩一区二区三区在线| 在线观看日韩一区| 91日韩精品一区| 国产精品456| 日韩av网站免费在线| 樱花草国产18久久久久| 国产欧美一区二区精品性色| 欧美一级片在线看| 欧美久久久久久蜜桃| www.日韩精品| 国产ts人妖一区二区| 国内精品不卡在线| 日本欧美一区二区三区| 香蕉久久一区二区不卡无毒影院| 1024精品合集| 亚洲天堂a在线| 国产精品美女www爽爽爽| 久久久蜜桃精品| www激情久久| 久久这里只有精品6| 日韩欧美一级二级三级| 欧美丰满高潮xxxx喷水动漫| 在线亚洲高清视频| 在线日韩国产精品| 91在线视频在线| av在线不卡观看免费观看| 国产福利91精品一区二区三区| 国内成+人亚洲+欧美+综合在线| 久久99九九99精品| 蜜臀久久99精品久久久久久9| 日韩高清中文字幕一区| 日本亚洲电影天堂| 蜜桃久久久久久久| 激情偷乱视频一区二区三区| 久久精品国产99国产精品| 精品一区二区在线观看| 国产成人综合自拍| jlzzjlzz欧美大全| 欧美在线免费观看视频| 欧美精品1区2区3区| 欧美一区二区三区喷汁尤物| 欧美一区日本一区韩国一区| 日韩欧美一级二级三级| 久久精品一二三| 最新国产精品久久精品| 一区二区三区在线观看欧美| 亚洲国产精品自拍| 日韩黄色片在线观看| 国产自产高清不卡| www.欧美色图| 欧美三片在线视频观看| 日韩美女主播在线视频一区二区三区| 精品国产三级电影在线观看| 久久精品一区八戒影视| 樱花影视一区二区| 日韩av电影免费观看高清完整版| 久久精品国产免费看久久精品| 国产乱人伦偷精品视频不卡 | 精品国产乱码久久久久久久| 久久精品一区二区三区四区| 亚洲美女视频在线| 天堂久久久久va久久久久| 国产一区美女在线| 色综合久久中文综合久久牛| 欧美精品成人一区二区三区四区| www日韩大片| 亚洲一区二区三区国产| 韩国毛片一区二区三区| 波多野结衣精品在线| 欧美精品18+| 日韩一区中文字幕| 日韩国产欧美一区二区三区| 成人永久免费视频| 在线播放亚洲一区| 亚洲欧洲日产国码二区| 久久精品久久精品| 日本久久一区二区| 久久精品人人做| 亚洲chinese男男1069| 成人免费看视频| 日韩精品一区二区三区四区| 亚洲激情在线激情| 国产成人在线免费观看| 69精品人人人人| 亚洲丝袜自拍清纯另类| 国产一区美女在线| 91精品国产全国免费观看| 亚洲色图欧洲色图| 国产麻豆精品视频| 日韩一级片在线播放| 亚洲精品大片www| 国产大片一区二区| 精品国产凹凸成av人网站| 亚洲成人av中文| 91毛片在线观看| 中国av一区二区三区| 九九热在线视频观看这里只有精品| 91高清视频在线| 国产精品嫩草久久久久| 国产剧情在线观看一区二区| 6080亚洲精品一区二区| 一区二区在线观看免费| 91在线观看地址| 国产精品婷婷午夜在线观看| 国产精品91一区二区| 久久九九影视网| 国产在线视视频有精品| 欧美不卡视频一区| 日本 国产 欧美色综合| 欧美片在线播放| 亚洲va韩国va欧美va精品| 欧美性淫爽ww久久久久无| 亚洲欧美色图小说| www.亚洲免费av| 亚洲欧美日韩国产成人精品影院 | 久久99九九99精品| 日韩一级免费观看| 蜜臀av一级做a爰片久久| 7777精品伊人久久久大香线蕉的| 亚洲一区二区三区四区在线观看 | 丝瓜av网站精品一区二区| 欧美亚洲精品一区| 天堂av在线一区| 欧美一级精品大片| 久久精品免费观看| 久久久久久久国产精品影院| 国产精品综合一区二区| 久久精品在这里| 成人黄色小视频| 亚洲人快播电影网| 欧美性大战久久久久久久| 亚洲第一福利一区| 欧美一级欧美三级| 国产综合色产在线精品| 国产精品色在线| 色婷婷av一区二区三区大白胸| 亚洲电影在线免费观看| 日韩欧美一区二区免费| 国产suv精品一区二区883| 国产精品久久久久国产精品日日| 97se亚洲国产综合自在线不卡| 亚洲欧美影音先锋| 欧美精品在线观看播放| 日本不卡中文字幕| 国产亚洲欧美色| 91黄色激情网站| 蜜桃视频在线观看一区二区| 国产欧美日韩在线视频| 欧美在线观看视频在线| 久久国产三级精品| 中文字幕永久在线不卡| 欧美日韩视频第一区|