CheckConditionStatement.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using IwbZero.IocNamed;
  2. using IwbZero.IwbBase;
  3. using IwbZero.ToolCommon.LogHelpers;
  4. using WeEngine.Components.InterfaceFactory;
  5. using WeEngine.ComponentInfo;
  6. namespace WeEngine.Components.Statements
  7. {
  8. /// <summary>
  9. /// 检验条件
  10. /// </summary>
  11. [IocNamed(CompStmtType.CheckCondition)]
  12. public class CheckConditionStatement : IStatementRunner
  13. {
  14. public bool Run(ComponentRunner runner, IwbXmlNode poStatement)
  15. {
  16. this.LogDebug($"============[开始执行事务]====>[检验条件]======>{runner.CurrentNode.NodePath}");
  17. var flag = false;
  18. string expression = poStatement.GetChildValue("Condition");
  19. if (expression != "")
  20. {
  21. flag = runner.EvaluateBool(expression);
  22. }
  23. var variable = new IwbRtVariable(DefaultVariable.RunValidate).SetValue(flag.ToString());
  24. if (runner.Variables.ContainsKey(DefaultVariable.RunValidate))
  25. {
  26. runner.Variables[DefaultVariable.RunValidate] = variable;
  27. }
  28. else
  29. {
  30. runner.Variables.Add(DefaultVariable.RunValidate, variable);
  31. }
  32. this.LogDebug($"============[执行事务完成]====>[检验条件]======>{flag}");
  33. return flag;
  34. }
  35. }
  36. }