您可以将新的实体类型、属性类型和控件类型添加到扩展模式 XSD 文件,例如 wimextension.xsd。这些 XSD 文件会导入 virtual member manager 内置模型 XSD 文件。 然后可以通过 Eclipse 或 RAD 开发环境或类似工具从扩展模式 XSD 文件生成静态模型代码。生成的方式代码会压缩到 JAR 文件(例如,wimmodel.jar 和 wimmodelext.jar)并放在类路径下。
当 virtual member manager 启动时,配置管理器会将 wimconfig.xml 文件装入到配置数据图中。然后会将配置数据图与模式管理器一起传递。
如果本地服务提供程序的实例与 virtual member manager 实例不在同一 JVM 中,那么会远程创建本地服务提供程序的实例,本地服务提供程序通过将 nsURI 作为空值传递来调用 virtual member manager API getEPackges 以检索所有名称空间的模式。
概要文件管理器接收 API 调用并将其传递到模式管理器。由于 ECore 模型未序列化而无法传递到远程客户机,因此模式管理器会将 ECore 模型转换成字节数组格式,然后将模式传回本地服务提供程序。
本地服务提供程序将字节数组中的模式转换为 ECore 模型并在客户机的 JVM 中注册这些 ECore 模型。
如果客户机和服务器位于同一 JVM 中,那么客户机可以将静态包中定义的数据对象强制类型转换为其静态类型并使用静态方法。例如,数据对象 PersonAccount 可以强制类型转换为 PersonAccount 对象,并且可以使用类似 getSn 的静态方法(而不是类似 getString(“sn”) 的静态方法)。这些情况并不适用于在 wimxmlextension.xml 中定义的数据对象(例如 ContactPerson),因为它们是动态包。
如果客户机和服务器位于不同 JVM 中,那么无法使用静态类型和方法,即便对于在静态包中定义的数据也是如此,原因是在客户机的 JVM 中无法访问静态包。