一、背景介绍
SuperMap iDesktopX
是通过 SuperMap iObjects Java
桌面核心库和 Java SE Development Kit(JDK)构建的一款企业级、插件式、跨平台桌面 GIS 应用与开发平台,可基于 Java 语言在 Windows 或 Linux 系统中进行扩展开发。
SuperMap iDesktopX
作为构建于 SuperMap iObjects Java
组件上层的桌面端产品,拥有一套完备且独具特色的上层架构设计。其中,处理自动化(GPA)的设计架构尤为引人注目,它因能极大程度地降低用户在复杂分析业务逻辑实现方面的门槛而备受青睐,在众多用户群体中广受欢迎。
然而,需要注意的是,GPA 隶属于上层产品的架构设计范畴,SuperMap iObjects Java
组件作为一款 SDK 产品,无法直接对其进行集成。这就导致许多同学在针对 SuperMap iDesktopX
开展扩展开发工作时,常常陷入一种现有代码无法更高效复用的困境:他们只能依据 SuperMap iObjects Java
组件所提供的接口来构建核心逻辑,却无法便捷、高效地直接调用现有的 GPA 算子,以迅速实现对应的业务逻辑。
实际上,在 SuperMap iDesktopX
的 GPA 架构最初设计之时,研发团队就已经充分预估到了这一应用场景,并为之做好了相应的规划与考量。那么接下来,就让我们一同踏上 SuperMap iDesktopX
GPA 对已有算子调用的扩展开发的探索学习之旅吧。
二、环境准备
2.1. 系统环境
操作系统 | 支持 | 说明 |
---|---|---|
Windows | ✔ | Windows 平台推荐硬件配置要求:处理器: 双核 2.30 GHz内存要求: 8 GB硬盘容量: 256 GB |
Linux | ✔ | Linux平台最低硬件配置要求:CPU: 2.00 GHz (x86 / ARM 架构)内存: 8 GB硬盘空间: 200 GB |
2.2. 开发环境
软件 | 版本 | 下载地址 | 说明 |
---|---|---|---|
SuperMap iDesktopX | 11i 及其以上版本 | SuperMap iDesktopX 下载地址 | 推荐使用最新版本的 SuperMap iDesktopX |
IDEA | 2020.3.4 及其以上版本 | IDEA 下载地址 | 一款针对 Java 语言开发的集成开发环境(IDE) |
三、核心技术
在 SuperMap iDesktopX
的安装路径之下,于 \support\startup\ 文件夹内的 sps-startup.jar 包中,蕴藏着两大关键类:ProcessManager 与 ParameterValueBuilder。前者作为 GPA 模型进程管理类,宛如一座桥梁,赋予了我们把所需运用的现有算子进行实例化转换的奇妙能力,并且能够依此构建起 GPA 模型进程,顺利完成装载步骤;而后者,即 ParameterValueBuilder,作为 GPA 模型进程参数构造类,恰似一把精准的钥匙,为已经构建完成的 GPA 模型进程开启了注入对应算子参数值的通道。正因如此,当我们在 SuperMap iDesktopX
中开展扩展 GPA 新算子的工作时,巧妙地将 ProcessManager 和 ParameterValueBuilder 这两个类相结合,便能充分调用复用现有算子的卓越效能,进而以高效便捷的方式实现全新的业务逻辑算子,为我们的开发工作提供强大的助力与坚实的技术支撑。
四、开发实践
4.1. 新建 GPA 扩展开发工程
在 SuperMap iDesktopX 11i
的视图菜单栏里,贴心地为用户提供了 “新建二次开发工程” 这一实用功能。借助该功能,用户能够直接依据 iDesktopX 扩展开发模板,迅速创建出专门针对 GPA 算子的二次开发工程项目,极大地便利了相关开发工作的开展,让开发者可以更加高效地投入到基于 SuperMap iDesktopX
进行的各类拓展性开发实践当中。
-
基于 iDesktopX 新建二次开发工程
-
选择 GPA 模板类型创建工程
4.2. 获取现有算子的信息
在对现有算子进行实例化操作的过程中,有三个必填参数,即 factoryKey、namespace 以及 simpleName。值得注意的是,这三个参数均可从提供现有算子的 jar 包内顺利获取,它们是完成实例化现有算子不可或缺的关键要素,为后续构建 GPA 模型进程以及相关开发工作奠定了坚实的基础,对于整个基于现有算子的开发流程起着至关重要的作用。
-
现有算子的 factoryKey
-
现有算子的 namespace
-
现有算子的 simpleName
-
PS:GPA 传统算子的实现 jar 包,基本可以从
SuperMap iDesktopX
的 lib 目录下获取。
4.3. 编码调用现有算子执行
// 构建 GPA 模型进程
ProcessManager processManager = ProcessManager.instance();
// 实例化现有算子,如:创建数据源的传统组件算子
IProcess createDatasourceProcess = processManager.create("iobjects_datamanager", new NameImpl("com.supermap.datamanager.maintain", "createDatasource"));
// 向装载现有算子的 GPA 模型进程注入算子输入参数值
ParameterValueBuilder parameterValueBuilder = new ParameterValueBuilder(createDatasourceProcess);
parameterValueBuilder.setValue("dataConnInfo", "--providerType=sdx --server=" + tarDatasourceFolder + "\\" + name + ".udbx --dbType=UDBX");
parameterValueBuilder.setValue("isOverride", true);
try {
// 添加 GPA 现有算子执行进度监听事件
createDatasourceProcess.addProcessRunningListener(processRunningEvent -> {
updateGPAProgress(processRunningEvent.getProgress());
});
// 启动并执行现有算子
createDatasourceProcess.execute();
} catch (ExecutionInterruptedException e) {
e.printStackTrace();
}
五、总结
经过前面所进行的一系列的学习和开发实践,我们已然能够十分清晰地掌握在扩展开发 iDesktopX GPA 算子的过程中,应当怎样去调用现有的算子,以此达到简化编码逻辑的目的,并且还能够高效地对已有的代码业务进行复用。现在就让我们以一种更为直观的方式,去看一看这样做所带来的成效吧。
-
现有的 创建数据源 算子无法与 迭代数据集 算子直接连接
-
基于对现有算子直接调用后扩展开发的 GPA 算子可实现与 迭代数据集 算子的连接
最后,本教程还精心准备了依照上述教程开展开发工作所对应的 SuperMap iDesktopX 对现有算子调用的 GPA 扩展开发算子示例代码。您能够直接将该示例代码下载至本地,随后运用 IDEA 软件将其打开,进而展开编译、调试等操作,并展开深入的学习与探究。此示例代码犹如一座桥梁,为您搭建起了一个可触可感的实践场景,能够极大程度地助力您更为透彻地领悟与把控在扩展开发 iDesktopX GPA 算子时调用现有算子的开发流程与要点。