当前位置: 首页 > news >正文

PromotionNotice对象获取异常记录

项目场景:

项目场景:通过类型为PromotionNotice的数据审批流程发布部件及关联的模型数据,并对模型进行可视化处理,最后将可视化文件传递至生产系统


问题描述

生产系统反馈缺失部分图纸,到PLM系统查阅相关流程发现,流程中是存在这些缺失图纸的,只是这些图纸没有进行可视化处理。
查看系统中获取流程对象的代码:

    public static Set<Persistable> getPromotionTargets(PromotionNotice pn) throws WTException {
        Set<Persistable> persistables = new HashSet<>();
        boolean enforce = SessionServerHelper.manager.setAccessEnforced(false);
        try {
            QueryResult queryResult = MaturityHelper.service.getPromotionTargets(pn);
            while (queryResult.hasMoreElements()) {
                Object object = queryResult.nextElement();
                if (object instanceof WTPart) {
                    WTPart part = (WTPart) object;
                    persistables.add(part);
                } else if (object instanceof EPMDocument) {
                    EPMDocument epm = (EPMDocument) object;
                    persistables.add(epm);
                } else if (object instanceof WTDocument) {
                    WTDocument doc = (WTDocument) object;
                    persistables.add(doc);
                }
            }
        } finally {
            SessionServerHelper.manager.setAccessEnforced(enforce);
        }
        return persistables;
    }

原因分析:

这里的方法获取的是流程的升级对象,系统中查看流程的升级对象发现数据与表单中的数据不一致,查看流程的相关对象,数据与表单数据是一致的。猜测可能是流程中执行添加数据时导致的,一种可能是添加功能本身异常,只添加到了流程的相关对象,未添加到升级对象,另一种可能就是系统不稳定导致的添加异常。经测试,添加功能是正常的,查看代码,也都有添加相关对象和升级对象的逻辑。暂定此次异常为偶发问题。


解决方案:

如果在不考虑性能的情况下,可以用Set既收集升级对象又收集相关对象。
也可以只针对流程重要数据处理节点增加流程相关对象的收集。

下面是获取流程对象的方法:
方法一:

QueryResult queryResult = MaturityHelper.service.getPromotionTargets(pn);

方法二:

MaturityBaseline baseline = pn.getConfiguration();
QueryResult queryResult = BaselineHelper.service.getBaselineItems(baseline);

方法三:

Collection<Promotable> items = PromotionNoticeUtils.getPromotionNoticeItems(pn);

以上方法都是获取流程升级对象的方法。
方法四:

String typeName = ObjectTypeUtils.getInternalTypeName(pn);
PromotionNoticeOptions option = PromotionNoticeHelper.getPromotionNoticeOptions(typeName);
String groupId = option.mappingToRelatedObjectGroupId();
RelatedObjectGroupService service = XWorksHelper.getRelatedObjectGroupService();
RelatedObjectGroup group = service.getRelatedObjectGroup(pn, groupId);
List<Persistable> members = service.getMemberObjects(group, GroupMemberType.ALL);

此方法为获取流程相关对象的方法。


http://www.dtcms.com/a/53475.html

相关文章:

  • 十二、OSG学习笔记-Control
  • 手游ASO优化:2025年核心策略与未来趋势
  • DropDown的使用总结
  • C/C++蓝桥杯算法真题打卡(Day1)
  • 如何面向DeepSeek编程,打造游戏开发工具集,提升工作效率
  • 缓存雪崩 缓存击穿 缓存穿透
  • 综合使用pandas、numpy、matplotlib、seaborn库做数据分析、挖掘、可视化项目
  • Django 中,Form 和 ModelForm的用法和区别
  • 在虚拟机上安装Hadoop
  • 基于单片机的速度里程表设计(论文+源码)
  • vue3 组合式API:插槽
  • 【机器学习chp11】聚类(K均值+高斯混合模型+层次聚类+基于密度的聚类DBSCAN+基于图的聚类+聚类的性能评价指标)
  • C语言程序设计第一章习题
  • Linux - 线程控制
  • CES Asia 2025:AR/VR/XR论坛峰会备受瞩目
  • Python的Pandas和matplotlib库:让数据可视化贼简单
  • Scala:解构声明(用例子通俗易懂)
  • Leetcode2848:与车相交的点
  • 前端图片加载错误原因分析
  • 异常(5)
  • 大模型AI平台DeepSeek 眼中的SQL2API平台:QuickAPI、dbapi 和 Magic API 介绍与对比
  • UE4 组件 (对话组件)
  • 使用 dynamic-datasource-spring-boot-starter 实现多数据源动态切换
  • day21-API(算法,lambda,练习)
  • 工作学习笔记:HarmonyOS 核心术语速查表(v14 实战版)
  • mapset
  • spring-ai
  • 基于自监督三维语义表示学习的视觉语言导航
  • linux系统下openwebui重启并使用本地模型(vllm或其他)
  • 江科大51单片机笔记【10】蜂鸣器播放提示器音乐(下)