背景:有个项目在P21升级之前(v3.1.2)做过一版defime.xml。后期因为某种原因导致数据集变更,同时define也需要重新生成。所以只能使用升级后的P21(v4.0.1)软件生成defime.xml。两次生成defime.xml使用的都是旧的spec模板,官方也说新旧模板均支持。但在修改后的define.xml中发现了这个问题。
在调查的过程中发现:
1、旧的spec模板在【WhereClause.Value】这一列的内容里,如果出现了英文逗号,那么在define.xml中显示的信息就不准确了,初步判断这可能是P21在旧模板兼容方面的一个BUG。
2、用define.xml通过P21工具反向生成spec,发现得到的只能是新的spec模板格式。
3、对比新旧模板对于WhereClause的信息处理发现如图的不同之处。
↑↑↑↑这是旧的spec模板,对于WhereClause有一个单独的sheet页。
↑↑↑↑这是define.xml转成新的spec模板的样子,删除了WhereClause sheet页,与ValueLevel 合并在了一起。并且能够明显的看出,之前define.xml对旧的spec模板中的内容是如何解析的,很显然它把这里的英文逗号认成了字符串的结尾。
这一点在define.xml中也可以看出来↓↓↓
目前有两种解决办法:
第一种:直接修改define.xml
第二种:修改define.xml生成的spec(主要是修改双引号引回的位置)。然后使用2.0的方式生成define.xml。
最后:
当然最好的方法还是直接使用新的spec模板[狗头]。