windchill视图筛选逻辑分享

windchill筛选分成两部分,第一部分是通过SQL进行筛选;第二部分是通过process筛选;拿第一部分得到的数据去process里面进行筛选;

通过SQL拼接筛选的条件

  • 视图拼接条件
    • 如果筛选条件不包含父视图,那么直接拼接"view = getView() OR view = null"这个条件;
    • 如果包含父视图筛选,那么拼接条件"view = getView() OR view = parentView[...] OR view = null";
  • BOM类型及备用BOM的拼接条件
    • BOM类型为null,拼接条件就是variation1 is null;
    • 备用BOM为null,拼接条件就是variation2 is null;

process的处理条件

  • 先过滤视图
    • 如果视图为空就不进行筛选;
    • 如果视图不为空,找到符合当前视图的数据,如果当前视图不符合,向上查找满足条件的最近的父视图;
  • 再过滤BOM类型
    • 如果备用BOM为空,不过滤;
    • 如果不为空,找到相等的数据;
    • 如果上一步找不到一样的数据,那么拿到所有的BOM类型的集合,按照顺序找符合条件的数据,但凡有一个集合中的元素符合条件,就停止查找;
    • 如果上一步找到的数据还为空,把备用BOM类型为空的数据添加到结果中,也就是默认为BOM类型为空;
  • 再过滤备用BOM
    • 同备用BOM;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。