指令在执行的时候,执行当前的指令前,需要进行判断当前的指令是否需要执行,则需要对条件进行判断,根据前面设计的条件判断方式和对象,则现在的条件执行需要嵌套递归执行,也就是(条件组(条件组(条件组(条件组))))

 1 public class GroupConditionExector {
 2     private List<Param> paramList;
 3     public GroupConditionExector(List<Param> paramList){
 4         this.paramList = paramList;
 5     }
 6     public GroupConditionExector(){}
 7     public boolean execute(GroupCondition groupCondition){
 8         //组成员的判断
 9         IConditionOperation iConditionOperation = groupCondition.getiConditionOperation();
10         IConditionOperation iConditionOperationGroup;
11         Param paramA = groupCondition.getParamA();
12         Param paramB = groupCondition.getParamB();
13         //组成员
14         if(paramList!=null&&!paramList.isEmpty()){
15             for(Param param:paramList){
16                 if(paramA!=null){
17                     if(param.getParamKey()!=null
18                             &&paramA.getParamKey()!=null
19                             &&param.getParamKey().getKeyId()!=null
20                             &&paramA.getParamKey().getKeyId()!=null
21                             &&param.getParamKey().getKeyId().equals(paramA.getParamKey().getKeyId())){
22                         //将当前的值复制给 判断的值
23                         if(param.getParamValue()!=null) {
24                             paramA.setParamValue(param.getParamValue());
25                         }
26                     }
27                 }
28             }
29         }
30         boolean paramFlag;
31         //组属性的判断
32         boolean groupFlag;
33         boolean groupResult;
34         /**
35          * 如果设置了组判断的条件就进行判断
36          * 如果没有设置组判断条件则直接返回
37          * 递归处理条件
38          */
39         if(groupCondition.getGroupCondition()!=null) {
40             groupFlag = execute(groupCondition.getGroupCondition());
41             if(paramA!=null&&paramB!=null) {
42                 //如果当前组的条件是存在的则进行处理
43                 paramFlag= iConditionOperation.operation(paramA, paramB);
44             }else {
45                 //如果不存在则使用组的结果直接进行判断
46                 paramFlag = groupFlag;
47             }
48             iConditionOperationGroup = groupCondition.getiConditionOperationGroup();
49             groupResult = iConditionOperationGroup.operationLogic(paramFlag,groupFlag);
50             /**
51              * 经过组判断 返回组判断的结果
52              */
53             return groupResult;
54         }else {
55             //没有组进行判断
56             paramFlag= iConditionOperation.operation(paramA, paramB);
57             /**
58              * 没有经过组判断 返回结果
59              * 递归判断返回的结果
60              */
61             return paramFlag;
62         }
63
64     }
65 }

View Code

递归判断执行对象 能够决定是否执行当前的指令,设置的是Instruction当中的isCondition属性,true为执行,false为否

转载于:https://www.cnblogs.com/binarysheep/p/7441884.html

指令数据采集(五)--指令的条件的执行判断相关推荐

  1. 深入理解操作系统(10)第四章:处理器体系结构(2)Y86-64的顺序实现(包括:SEQ/指令的各阶段操作:取指,解码,执行,访存,回写,更新PC/序列指令/硬件结构/时序/阶段的实现/SEQ+)

    深入理解操作系统(10)第四章:处理器体系结构(2)Y86-64的顺序实现(包括:SEQ/指令的各阶段操作:取指,解码,执行,访存,回写,更新PC/序列指令/硬件结构/时序/阶段的实现/SEQ+) 1 ...

  2. 【ABB】ABB机器人\RAPID中FOR重复执行判断指令

    1.FOR指令结构定义 (1)FOR指令结构 FOR <ID> FROM <EXP> TO <EXP> STEP <EXP> DO <SMT> ...

  3. 抗去除花指令(一)——花指令基础

    转自 http://blog.csdn.net/yangbostar/article/details/6194133 入门知识,高手勿读 一. 概述 花指令是对抗反汇编的有效手段之一,正常代码添加了花 ...

  4. ISA——x86指令、ARM指令、、

    ISA(instruction set architecture)指令集维基定义https://en.wikipedia.org/wiki/Instruction_set_architecture 无 ...

  5. ARM指令和Thumb指令的区别

    一.现在先区分下ARM指令集与Thumb指令集        Thumb 指令可以看作是 ARM 指令压缩形式的子集,是针对代码密度的问题而提出的,它具有 16 位的代码密度但是它不如ARM指令的效率 ...

  6. std在汇编语言是什么指令_汇编语言指令

    汇编指令英文全称 1.通用数据传送指令 MOV----> move MOV dest,src ;dest←src MOV指令把一个字节或字的操作数从源地址src传送至目的地址dest. MOVS ...

  7. scp命令 二进制_plc中scl指令和scp指令的作用与应用案例

    一.plc scl指令和scp指令的作用 1.RSLOGIX 500中的SCL和SCP的作用是什么? 2.这二个指令作用相同,但是可支持的SLC型号有区别. SCL是通过计算偏移来整定,就相当于一次方 ...

  8. 2020-12-4((ARM汇编)mov指令,LDR指令,LDR伪指令)

    首先说明一下 ARM是RISC("reduced instruction set computer",即"精简指令集计算机")结构 x86是CISC(" ...

  9. mo汇编指令_汇编指令大全

    一.数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字 ...

最新文章

  1. ACM_模拟——数学问题
  2. 新书问答:Company-Wide Agility
  3. 你值得拥有:25个Linux性能监控工具
  4. 网站优化之如何提升快照的更新时间?
  5. 电动力学每日一题 2021/10/14
  6. python 读grid 数据_科学网—Python_机器学习_总结14:Grid search - 李军的博文
  7. 2.3.4 操作系统之信号量机制(整型信号量、记录型信号量P、V)
  8. 怎么恢复oracle的包,【学习笔记】使用dbms_backup_restore包恢复数据库
  9. vue 实现瀑布流布局的 组件/插件总汇:vue-waterfall、vue-waterfall-easy、vue-virtual-collection、vue-grid-layout
  10. 这些道理,未必正确,一定准确
  11. 华为机试HJ3:明明的随机数
  12. 判断是否是质数 c++java
  13. idea 中 配置tomcat 启动 jsp项目
  14. Symantec Endpoint Protection v14.2企业版介绍
  15. .net学科-杨中科-Unity3D视频教程
  16. 深度学习在内窥镜图像方面的研究:
  17. 如何将excel转换成word文档图文教程
  18. 如何测试服务器端口是否打开?
  19. sodo 赋予非管理员用户临时权限
  20. 不知道如何分析选择基金、股票?Python来教你

热门文章

  1. syslog和syslog-ng详解
  2. mysql mongodb插件_FLinkX的Mongodb插件优化(三)
  3. php proc open 返回,PHP proc_open多次打开
  4. go调用ffmpeg
  5. 安装工程造价课程设计_安装工程造价课程设计的图纸-上海装修报价
  6. coreboot学习4:启动流程跟踪之romstage阶段
  7. 点阵字体显示系列之一:ASCII码字库的显示
  8. 【java】java JVM如何科学的设置内存参数 虚拟机调优案例
  9. 【clickhouse】clickhouse表引擎之 kafka 表引擎 卡死
  10. 【Spring】Unable to start ServletWebServerApplicationContext due to miss ServletWebServerFactory bean