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

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

?? serializableworkflowstore.cs

?? 基于DotNet的工作流引擎實現
?? CS
字號:
using System;
using System.Collections;
using System.IO;
using DotNetTools.PropertySet;
using DotNetTools.Workflow.Query;
using log4net;
/*
* Copyright (c) 2002-2003 by OpenSymphony
* All rights reserved.
*/
namespace DotNetTools.Workflow.Spi.Memory
{
	/// <summary> Simple flat file implementation.
	/// *
	/// Following properties are <b>required</b>:
	/// <ul>
	/// <li><b>storeFile</b> - the absolute path to the store file
	/// (<i>ex:c:\workflow.store</i>)</li>
	/// </ul>
	/// *
	/// </summary>
	/// <author>  <a href="mailto:gbort@msn.com">Guillaume Bort</a>
	/// 
	/// </author>
	public class SerializableWorkflowStore:MemoryWorkflowStore
	{
		public static String StoreFile
		{
			get
			{
				return storeFile;
			}
			
			set
			{
				SerializableWorkflowStore.storeFile = value;
			}
			
		}
		//~ Static fields/initializers /////////////////////////////////////////////
		
		protected internal static readonly ILog log;
		internal static String storeFile;
		
		//~ Methods ////////////////////////////////////////////////////////////////
		
		public override IPropertySet GetPropertySet(long entryId)
		{
			IPropertySet ps = (IPropertySet) SerializableCache.Instance.propertySetCache[entryId];
			
			if (ps == null)
			{
				ps = PropertySetManager.GetInstance("serializable", null);
				SerializableCache.Instance.propertySetCache[entryId]= ps;
			}
			
			return ps;
		}
		
		
		
		public override IStep CreateCurrentStep(long entryId, int stepId, String owner, DateTime startDate, DateTime dueDate, String status, long[] previousIds)
		{
			long id = SerializableCache.Instance.globalStepId++;
			SimpleStep step = new SimpleStep(id, entryId, stepId, 0, owner, startDate, dueDate, DateTime.MaxValue, status, previousIds, null);
			
			IList currentSteps = (IList) SerializableCache.Instance.currentStepsCache[entryId];
			
			if (currentSteps == null)
			{
				currentSteps = new ArrayList();
				SerializableCache.Instance.currentStepsCache[entryId]=currentSteps;
			}
			
			currentSteps.Add(step);
			SerializableCache.store();
			
			return step;
		}
		
		public override IWorkflowEntry CreateEntry(String workflowName)
		{
			long id = SerializableCache.Instance.globalEntryId++;
			SimpleWorkflowEntry entry = new SimpleWorkflowEntry(id, workflowName, SimpleWorkflowEntry.CREATED);
			SerializableCache.Instance.entryCache[id]= entry;
			SerializableCache.store();
			
			return entry;
		}
		
		public override IList FindCurrentSteps(long entryId)
		{
			IList currentSteps = (IList) SerializableCache.Instance.currentStepsCache[entryId];
			
			if (currentSteps == null)
			{
				currentSteps = new ArrayList();
				SerializableCache.Instance.currentStepsCache[entryId]= currentSteps;
			}
			
			return currentSteps;
		}
		
		public override IWorkflowEntry FindEntry(long entryId)
		{
			return (IWorkflowEntry) SerializableCache.Instance.entryCache[entryId];
		}
		
		public override IList FindHistorySteps(long entryId)
		{
			IList historySteps = (IList) SerializableCache.Instance.historyStepsCache[entryId];
			
			if (historySteps == null)
			{
				historySteps = new ArrayList();
				SerializableCache.Instance.historyStepsCache[entryId]= historySteps;
			}
			
			return historySteps;
		}
		
		public override void  Init(IDictionary props)
		{
			storeFile = (String) props["storeFile"];
			
			// check whether the file denoted by the storeFile property is a normal file.
			if (!File.Exists(new FileInfo(storeFile).FullName))
			{
				log.Fatal("storePath property should indicate a normal file");
			}
			
			// check wheter the directory containing the storeFile exist
			if (!new FileInfo(storeFile).Directory.Exists)
			{
				log.Fatal("directory " + new FileInfo(storeFile).DirectoryName + " not found");
			}
		}
		
		public override IStep MarkFinished(IStep step, int actionId, DateTime finishDate, String status, String caller)
		{
			IList currentSteps = (IList) SerializableCache.Instance.currentStepsCache[step.EntryId];
			
			foreach(SimpleStep theStep in currentSteps){
				
				if (theStep.Id == step.Id)
				{
					theStep.Status = status;
					theStep.ActionId = actionId;
					theStep.FinishDate = finishDate;
					theStep.Caller = caller;
					
					return theStep;
				}
			}
			
			SerializableCache.store();
			
			return null;
		}
		
		public override void  MoveToHistory(IStep step)
		{
			IList currentSteps = (IList) SerializableCache.Instance.currentStepsCache[step.EntryId];
			
			IList historySteps = (IList) SerializableCache.Instance.historyStepsCache[step.EntryId];
			
			if (historySteps == null)
			{
				historySteps = new ArrayList();
				SerializableCache.Instance.historyStepsCache[step.EntryId]=historySteps;
			}
			
			SimpleStep simpleStep = (SimpleStep) step;
			for(int i=0;i<currentSteps.Count;i++){
				IStep currentStep=(IStep)currentSteps[i];
				if (simpleStep.Id == currentStep.Id)
				{
					currentSteps.Remove(currentStep);
					historySteps.Add(simpleStep);
					
					break;
				}
			}
			
			SerializableCache.store();
		}
		static SerializableWorkflowStore()
		{
			log = LogManager.GetLogger(typeof(SerializableWorkflowStore));
		}
	}
	
	
	[Serializable]
	class SerializableCache 
	{
		internal static SerializableCache Instance
		{
			get
			{
				if (instance == null)
				{
					instance = load();
				}
				
				return instance;
			}
			
		}
		//~ Static fields/initializers /////////////////////////////////////////////
		
		[NonSerialized()]
		private static SerializableCache instance;
		
		//~ Instance fields ////////////////////////////////////////////////////////
		
		internal IDictionary currentStepsCache;
		internal IDictionary entryCache;
		internal IDictionary historyStepsCache;
		internal IDictionary propertySetCache;
		internal long globalEntryId = 1;
		internal long globalStepId = 1;
		
		//~ Constructors ///////////////////////////////////////////////////////////
		
		private SerializableCache()
		{
			entryCache = new Hashtable();
			currentStepsCache = new Hashtable();
			historyStepsCache = new Hashtable();
			propertySetCache = new Hashtable();
		}
		
		//~ Methods ////////////////////////////////////////////////////////////////
		
		public virtual IList query(WorkflowQuery query)
		{
			// not implemented
			return  new ArrayList();
		}
		
		
		internal static SerializableCache load()
		{
			try
			{
				FileStream fis = new FileStream(new FileInfo(SerializableWorkflowStore.storeFile).FullName, FileMode.Open, FileAccess.Read);
				BinaryReader ois = new BinaryReader(fis);
				
				SerializableCache o = (SerializableCache) SupportClass.Deserialize(ois);
				fis.Close();
				
				return o;
			}
			catch (Exception )
			{
				SerializableWorkflowStore.log.Fatal("cannot store in file " + SerializableWorkflowStore.storeFile + ". Create a new blank store.");
			}
			
			return new SerializableCache();
		}
		
		internal static void  store()
		{
			try
			{
				FileStream fos = new FileStream(new FileInfo(SerializableWorkflowStore.storeFile).FullName, FileMode.Create);
				BinaryWriter oos = new BinaryWriter(fos);
				SupportClass.Serialize(oos, Instance);
				fos.Close();
			}
			catch (Exception )
			{
				SerializableWorkflowStore.log.Fatal("cannot store in file " + SerializableWorkflowStore.storeFile + ".");
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合视频在线观看| 欧洲一区二区三区在线| 亚洲欧美日韩综合aⅴ视频| 欧美亚洲日本一区| 国产成人丝袜美腿| 日韩一区精品视频| 亚洲精品国产品国语在线app| 日韩一区二区免费视频| 在线观看国产精品网站| 国产成人精品免费在线| 黄色小说综合网站| 青娱乐精品视频| 亚洲黄色尤物视频| 中文字幕国产一区二区| 精品99一区二区| 7777精品伊人久久久大香线蕉的| 91日韩一区二区三区| 国产精品1024| 国精产品一区一区三区mba视频 | 欧美三级视频在线播放| 波多野结衣视频一区| 国产在线国偷精品免费看| 免费在线看成人av| 亚洲国产sm捆绑调教视频| 亚洲视频狠狠干| 国产精品天干天干在观线| 久久久国产精品午夜一区ai换脸| 精品成人在线观看| 在线综合视频播放| 91麻豆精品国产自产在线| 欧美日韩视频专区在线播放| 在线看不卡av| 91久久精品日日躁夜夜躁欧美| zzijzzij亚洲日本少妇熟睡| 成人成人成人在线视频| 丁香婷婷综合网| 高清成人免费视频| 成人永久免费视频| 成人在线综合网| 成人精品一区二区三区中文字幕| 成人午夜看片网址| 粉嫩蜜臀av国产精品网站| 国产99久久久国产精品| 粉嫩一区二区三区性色av| 成人精品免费网站| av一二三不卡影片| 色吊一区二区三区| 欧洲色大大久久| 欧美日韩国产在线播放网站| 欧美精品久久一区| 日韩精品在线网站| 久久久久久99精品| 成人欧美一区二区三区小说| 亚洲理论在线观看| 亚洲国产精品自拍| 日本v片在线高清不卡在线观看| 男女男精品视频网| 国产一区视频网站| www.亚洲人| 欧美天天综合网| 精品区一区二区| 亚洲国产成人在线| 亚洲精品国产a久久久久久 | 亚洲一区二区在线免费观看视频 | 韩国精品在线观看| 国产精品一区二区不卡| 91丨porny丨国产入口| 91亚洲精品久久久蜜桃网站| 欧美性猛片aaaaaaa做受| 欧美福利视频一区| 久久久欧美精品sm网站| 中文字幕日韩一区| 日韩精品电影一区亚洲| 国产69精品久久777的优势| 色妹子一区二区| 欧美成人a在线| 国产精品国产三级国产| 亚洲成a人片综合在线| 国产美女一区二区三区| 日本高清无吗v一区| 2021国产精品久久精品| 亚洲天堂免费看| 强制捆绑调教一区二区| 成人av在线网| 日韩视频一区在线观看| 亚洲天堂免费看| 精品亚洲国产成人av制服丝袜 | 日韩欧美中文字幕精品| 国产精品久99| 日韩电影免费一区| 暴力调教一区二区三区| 精品女同一区二区| 一区二区三区丝袜| 国产精品91一区二区| 欧美另类z0zxhd电影| 国产精品美女视频| 免费欧美日韩国产三级电影| 99精品黄色片免费大全| 欧美成人一区二区三区在线观看 | 日韩激情在线观看| 91在线观看一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲国产综合人成综合网站| 懂色av一区二区三区免费观看| 欧美群妇大交群中文字幕| 中文字幕在线不卡国产视频| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美性生交片4| 国产精品久久看| 国产一区二区三区四| 日韩欧美国产三级| 色综合一个色综合| 麻豆国产精品一区二区三区| 欧美吞精做爰啪啪高潮| 亚洲美女屁股眼交3| 成人av集中营| 国产日韩精品一区二区三区在线| 久久99热国产| 欧美一区二区啪啪| 亚洲成人资源网| 日本精品一级二级| 中文字幕一区二区三区av| 国产精品自在欧美一区| 日韩三级在线观看| 日本亚洲一区二区| 欧美高清性hdvideosex| 婷婷久久综合九色综合伊人色| 91天堂素人约啪| 最新国产成人在线观看| 99re这里都是精品| 国产精品久久久久一区二区三区共| 国产精品一区二区视频| 精品国精品自拍自在线| 精品一区二区三区在线观看| 日韩欧美中文一区二区| 日本伊人精品一区二区三区观看方式 | 丰满放荡岳乱妇91ww| 久久精品视频一区二区| 国产成人免费视频网站高清观看视频| 久久久久久久精| 成人午夜激情视频| 成人免费一区二区三区视频 | 欧美大片免费久久精品三p| 久久99久国产精品黄毛片色诱| 欧美xxxxxxxxx| 国内偷窥港台综合视频在线播放| 精品国产不卡一区二区三区| 国内外精品视频| 国产精品欧美精品| 色欧美日韩亚洲| 国产精品一二二区| 精品久久久久久久人人人人传媒 | 日韩欧美卡一卡二| 免费高清在线视频一区·| 日韩一区二区三区av| 久久精品国产亚洲aⅴ| 国产亚洲制服色| av男人天堂一区| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩激情一区二区| 精品在线你懂的| 国产精品伦理一区二区| 欧美日韩一区二区三区高清| 蜜臀精品久久久久久蜜臀| 久久久亚洲综合| 99re热视频精品| 五月天网站亚洲| 精品粉嫩超白一线天av| av在线不卡免费看| 亚洲r级在线视频| 久久影院午夜论| 色老头久久综合| 视频一区二区三区在线| 国产亚洲一区二区在线观看| 91丨国产丨九色丨pron| 日本中文一区二区三区| 欧美国产欧美综合| 欧美高清一级片在线| 成熟亚洲日本毛茸茸凸凹| 一区二区视频在线看| 日韩一区二区免费在线观看| 9l国产精品久久久久麻豆| 美女网站色91| 亚洲色图欧美激情| 欧美精品一区二区三区蜜臀| 91国产精品成人| 国产精品自拍三区| 婷婷久久综合九色综合伊人色| 日韩毛片在线免费观看| 91精品国产色综合久久不卡电影| 成人动漫在线一区| 石原莉奈在线亚洲二区| 日韩一区日韩二区| 久久亚洲欧美国产精品乐播| 欧美亚洲高清一区| 风间由美性色一区二区三区| 日韩国产精品久久久久久亚洲| 国产精品久久久久天堂| 精品免费日韩av| 91精品欧美久久久久久动漫|