记一次升级请求创建报错问题的调查过程(Windchill)

问题现象描述:

​ 新建申请请求单,在选择某些物料时会报此错误,选另外的物料时又可以正常创建,不报此错误。

问题原因分析:

​ 1.分析后台日志 ---没有任何进展,此报错应该是前端的报错

​ 2.从前端下手,分析到完成按钮会调用PTC.wizard.submitWizard-->PTC.wizard.checkRequired-->PTC.wizard.validateRequiredInputs 来校验必填,此报错就是在PTC.wizard.validateRequiredInputs方法中产生的。

有方向了,接下来就简单了,通过跟踪代码,发现确实有maturityState属性是必填且未填。

解决方案及问题总结:

​ 经进一步了解,发现是这边对升级请求创建页面做过客制化,将升级目标状态属性给隐藏了,当物料的目标升级状态为唯一的一个时,会自动选中,当有多个时不会自动选中。

​ 物料的生命周期模板在近段时间也修改过,原来的是一个目标状态,后来改成两个了,所以有写物料可以,有些物料不行(使用最新版本生命周期状态的就不行)。

​ 解决方案:修改生命周期模板,将升级的候选状态设置成一个即可(符合这边的需求)。若确实需要多个,则需要修改客制化的代码,根据规则或由人工指定目标状态。

​ 总结:

​ 1.针对类似页面校验不通过的可以通过跟踪前端js的方法来确定错误原因

​ 2.表单提交的入口js函数是:PTC.wizard.submitWizard-

​ 必填校验的入口函数为:PTC.wizard.checkRequired-->PTC.wizard.validateRequiredInputs

​ 3.生命周期模板中升级转变的状态需要定义正确,否则会影响到相关功能的页面。