使用 mqsimigratemsgflows命令可以将消息流从 V2.1 迁移至 V6.0。从 V5.0 迁移至 V6.0 时不必使用该命令。
如果用户定义的节点或升级的属性有属性编辑器,XML 属性将是 type="MyType" 并且有一个类 <package>MyTypePropertyEditor.class。
属性编辑器本身(用 Java 代码编写)不迁移。但是如果使用 Eclipse SWT 工具箱创建新的编辑器并使用相同的类名,不需要更改迁移的流就可以找到并装入这个新编辑器。
在 V2.1 中,通过拖放创建升级属性时,属性名(xmi.label)被设置成属性名的转换形式。原始属性名不可以包含空格,否则会被代理拒绝。 但是升级的属性从不发送到代理,因此在 V2.1 中,它们可以包含空格。
迁移消息流时,会丢失原始名称并且只保留转换的名称。升级属性可以覆盖几个属性,因此原始名称必须与转换的名称相对应。
解决方案是通过替换空格或带有 Unicode 表示的其他相抵触的字符,来生成一个合适的属性名。 propertyDescriptor 的 propertyName 属性设置为 key=Property.<转换过的属性名>。UI 返回 <转换过的属性名>。
但是迁移的消息流不保留属性系统名,只保留转换名。因此查找原始属性十分困难,或者说不可能。 例如,如果消息流作为插件流提供,并且另一个用户流从该插件流升级属性,DataSource 升级属性将不显示为转换过的属性。
消息流和属性可以包含在 V6.0中无效的名称。如果发生这种情况,则进行以下转换。 使用一系列代表其 Unicode 代码点的字符替换每个不符合规定的字符。 例如,感叹号(“!”)被 X0026 代替。生成的报告文件中对此进行了说明。
这种转换是确定的。如果在其他情况下迁移消息流,并且该消息流引用了具有无效字符的流,则两个名称以相同的方式转换。
除一些极其罕见的情况,一般情况下这些转换都不会导致名称冲突。 由于 Unicode 代码点序列恰恰出现在另一个名称相同的出现相应字符的名称内,因此可能会发生冲突。 在这种情况下,您必须重命名其中一个消息流或属性,并重新导出流。 选择一个不包含 Unicode 代码点序列(“Xnnnn”)的新名称,并在迁移之前在控制中心中重命名该消息流。从不在文件系统中重命名 .msgflow 文件;始终使用控制中心或工作台执行重命名任务。