ConditionalBranchesStatement.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using IwbZero.IocNamed;
  2. using IwbZero.IwbBase;
  3. using IwbZero.ToolCommon.LogHelpers;
  4. using WeEngine.ComponentInfo;
  5. using WeEngine.Components.InterfaceFactory;
  6. namespace WeEngine.Components.Statements
  7. {
  8. /// <summary>
  9. /// 条件分支
  10. /// </summary>
  11. [IocNamed(CompStmtType.ConditionalBranching)]
  12. public class ConditionalBranchesStatement : IStatementRunner
  13. {
  14. public bool Run(ComponentRunner runner, IwbXmlNode poStatement)
  15. {
  16. var flag = false;
  17. string childValue = poStatement.GetChildValue("Condition");
  18. this.LogDebug($"============[开始执行事务]====>[条件分支]======>{runner.CurrentNode.NodePath}");
  19. var childNode = poStatement.GetChildNode("Yes");
  20. var node2 = poStatement.GetChildNode("No");
  21. if (childValue == "")
  22. {
  23. flag= true;
  24. }else if (runner.EvaluateBool(childValue))
  25. {
  26. flag= runner.RunStatements(childNode.Nodes);
  27. }
  28. else
  29. {
  30. flag = runner.RunStatements(node2.Nodes);
  31. }
  32. this.LogDebug($"============[执行事务完成]====>[条件分支]======>{flag}");
  33. return flag;
  34. }
  35. }
  36. }