memoryworkflowstore.cs

来自「基于DotNet的工作流引擎实现」· CS 代码 · 共 1,070 行 · 第 1/2 页

CS
1,070
字号
			return false;
		}

		private bool query_Renamed2(long entryId, WorkflowExpressionQuery query)
		{
			Expression expression = query.Expression;

			if (expression.Nested)
			{
				return this.checkNestedExpression(entryId, (NestedExpression) expression);
			}
			else
			{
				return this.checkExpression(entryId, (FieldExpression) expression);
			}
		}

		private bool queryBasic(Int64 entryId, WorkflowQuery query)
		{
			// the query object is a comparison
			Object value_Renamed = query.Value;
			int operator_Renamed = query.Operator;
			int field = query.Field;
			int type = query.Type;

			switch (operator_Renamed)
			{
				case WorkflowQuery.EQUALS:
					return queryEquals(entryId, field, type, value_Renamed);


				case WorkflowQuery.NOT_EQUALS:
					return queryNotEquals(entryId, field, type, value_Renamed);


				case WorkflowQuery.GT:
					return queryGreaterThan(entryId, field, type, value_Renamed);


				case WorkflowQuery.LT:
					return queryLessThan(entryId, field, type, value_Renamed);
			}

			return false;
		}

		private bool queryEquals(Int64 entryId, int field, int type, Object value_Renamed)
		{
			IList steps;

			if (type == WorkflowQuery.CURRENT)
			{
				steps = (IList) currentStepsCache[entryId];
			}
			else
			{
				steps = (IList) historyStepsCache[entryId];
			}

			switch (field)
			{
				case WorkflowQuery.ACTION:

					long actionId = DataUtil.getInt((Int32) value_Renamed);

					foreach (SimpleStep step in steps)
					{
						if (step.ActionId == actionId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.CALLER:

					String caller = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Caller).Equals(caller))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.FINISH_DATE:

					DateTime finishDate = (DateTime) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (finishDate.Equals(step.FinishDate))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.OWNER:

					String owner = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Owner).Equals(owner))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.START_DATE:

					DateTime startDate = (DateTime) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (startDate.Equals(step.StartDate))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STEP:

					int stepId = DataUtil.getInt((Int32) value_Renamed);

					foreach (SimpleStep step in steps)
					{
						if (stepId == step.StepId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STATUS:

					String status = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Status).Equals(status))
						{
							return true;
						}
					}

					return false;
			}

			return false;
		}

		private bool queryGreaterThan(Int64 entryId, int field, int type, Object value_Renamed)
		{
			IList steps;

			if (type == WorkflowQuery.CURRENT)
			{
				steps = (IList) currentStepsCache[entryId];
			}
			else
			{
				steps = (IList) historyStepsCache[entryId];
			}

			switch (field)
			{
				case WorkflowQuery.ACTION:

					long actionId = DataUtil.getLong((Int64) value_Renamed);

					foreach (SimpleStep step in steps)
					{
						if (step.ActionId > actionId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.CALLER:

					String caller = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Caller).CompareTo(caller) > 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.FINISH_DATE:

					DateTime finishDate = (DateTime) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (step.FinishDate.CompareTo(finishDate) > 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.OWNER:

					String owner = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Owner).CompareTo(owner) > 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.START_DATE:

					DateTime startDate = (DateTime) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (step.StartDate.CompareTo(startDate) > 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STEP:

					int stepId = DataUtil.getInt((Int32) value_Renamed);
					foreach (SimpleStep step in steps)
					{
						if (step.StepId > stepId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STATUS:

					String status = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Status).CompareTo(status) > 0)
						{
							return true;
						}
					}

					return false;
			}

			return false;
		}

		private bool queryLessThan(Int64 entryId, int field, int type, Object value_Renamed)
		{
			IList steps;

			if (type == WorkflowQuery.CURRENT)
			{
				steps = (IList) currentStepsCache[entryId];
			}
			else
			{
				steps = (IList) historyStepsCache[entryId];
			}

			switch (field)
			{
				case WorkflowQuery.ACTION:

					long actionId = DataUtil.getLong((Int64) value_Renamed);

					foreach (SimpleStep step in steps)
					{
						if (step.ActionId < actionId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.CALLER:

					String caller = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Caller).CompareTo(caller) < 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.FINISH_DATE:

					DateTime finishDate = (DateTime) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (step.FinishDate.CompareTo(finishDate) < 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.OWNER:

					String owner = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Owner).CompareTo(owner) < 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.START_DATE:

					DateTime startDate = (DateTime) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (step.StartDate.CompareTo(startDate) < 0)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STEP:

					int stepId = DataUtil.getInt((Int32) value_Renamed);
					foreach (SimpleStep step in steps)
					{
						if (step.StepId < stepId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STATUS:

					String status = (String) value_Renamed;
					foreach (SimpleStep step in steps)
					{
						if (TextUtils.NoNull(step.Status).CompareTo(status) < 0)
						{
							return true;
						}
					}

					return false;
			}

			return false;
		}

		private bool queryNotEquals(Int64 entryId, int field, int type, Object value_Renamed)
		{
			IList steps;

			if (type == WorkflowQuery.CURRENT)
			{
				steps = (IList) currentStepsCache[entryId];
			}
			else
			{
				steps = (IList) historyStepsCache[entryId];
			}

			switch (field)
			{
				case WorkflowQuery.ACTION:

					long actionId = DataUtil.getLong((Int64) value_Renamed);

					foreach (SimpleStep step in steps)
					{
						if (step.ActionId != actionId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.CALLER:

					String caller = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (!TextUtils.NoNull(step.Caller).Equals(caller))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.FINISH_DATE:

					DateTime finishDate = (DateTime) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (!finishDate.Equals(step.FinishDate))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.OWNER:

					String owner = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (!TextUtils.NoNull(step.Owner).Equals(owner))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.START_DATE:

					DateTime startDate = (DateTime) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (!startDate.Equals(step.StartDate))
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STEP:

					int stepId = DataUtil.getInt((Int32) value_Renamed);
					foreach (SimpleStep step in steps)
					{
						if (stepId != step.StepId)
						{
							return true;
						}
					}

					return false;


				case WorkflowQuery.STATUS:

					String status = (String) value_Renamed;

					foreach (SimpleStep step in steps)
					{
						if (!TextUtils.NoNull(step.Status).Equals(status))
						{
							return true;
						}
					}

					return false;
			}

			return false;
		}

		static MemoryWorkflowStore()
		{
			entryCache = new Hashtable();
			currentStepsCache = new Hashtable();
			historyStepsCache = new Hashtable();
			propertySetCache = new Hashtable();
		}
	}
}

⌨️ 快捷键说明

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