# 工作流作为独立模块部署支持

# 内网Maven仓库地址

Maven仓库(http://192.168.176.10:8081/nexus/) (opens new window)

注意下文中的Maven坐标均可通过该仓库获取

# 工作流模块

模块结构图

工作流模块结构图

# Workflow Webapp

工作流REST服务模块,提供工作流服务、工作流资源服务、工作流管理管理服务。

注意工作流服务、工作流资源服务与IGServer接口标准基本相同,但缺少了一些带有IGServer业务的额外特性,比如服务目录。

工作流管理服务提供简易版的管理服务,提供工作流的列表查询、导入、导出、删除接口,这些服务在IGServer并未公开,因此这些服务与IGServer的管理服务没有对应关系,这里只是在去除一些业务依赖后,提取了IGServer中最基本的工作流服务管理能力。

该进程只是IGServer对外提供Webapp的demo程序,本身不带任何业务,只有一些springboot的配置,用户可以构建自己的工作流Webapp

<artifactId>mapgis-igs-workflow-standalone-webapp</artifactId>
<groupId>com.zondy.mapgis.igs</groupId>
<version>10.x.x.x</version>
1
2
3

用户在构建自己的工作流Webapp时,如果需要开启内置的REST服务,请添加如下依赖,并开启配置workflow.standalone.restEnabled=true

<artifactId>mapgis-igs-workflow-service</artifactId>
<groupId>com.zondy.mapgis.igs</groupId>
<version>10.x.x.x</version>
1
2
3

独立部署配置类详情,添加依赖后,IDEA中可自动提示

@Getter
@Setter
@ConfigurationProperties(prefix = "workflow.standalone")
public class WorkflowStandaloneConfig {
    /**
     * 是否启用rest服务
     */
    private boolean restEnabled;
    /**
     * 工作流服务的基地址,默认为/igs/rest/services
     */
    private String restServicesBaseUrl;
    /**
     * 工作流服务的基地址,默认为/igs/rest/manager
     */
    private String restManagerBaseUrl;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

在igserver_for_java安装包中已集成该进程的启动脚本,在bin目录下start-workflow-standalone-webapp.bat,start-workflow-standalone-webapp.sh,该进程需要依赖zookeeper与WorkflowServerHost进行rpc通信,所以启动服务请使用startup-workflow-standalone.bat、startup-workflow-standalone.sh。

该进程默认端口为8099,如果需要查看工作流独立模块支持的rest服务接口,请参照http://localhost:8099/swagger-ui/index.html

# WorkflowServerHost

工作流执行进程,由于工作流任务执行在独立进程中执行,用户发送请求执行任务请求到Workflow Webapp后,该模块处理任务并将任务调度到指定的工作流执行进程上,这里进程之间通过dubbo rpc通信。

# FunctionLibraryServerHost

该模块提供用于通过桌面工具搭建工作流时(IGSWorkflow.exe),依赖的socket服务,提供功能库的解析和执行服务。

在igserver_for_java安装包中已集成该进程的启动脚本,在bin目录下start-function-library-server-host.bat

# 开发包文件清单

workflow-standalone-webapp
  ├── workflow #工作流流程、功能仓库,下面的子文件、文件夹均需要
  ├── zookeeper #rpc通信需要
  ├── bin 
  │   ├── startup-workflow-standalone.bat(startup-workflow-standalone.sh) #工作流webapp的总启动脚本,包括webapp、zookeeper
  │   ├── set-env.bat(set-env.sh)#设置环境变量
  │   ├── shutdown.bat(shutdown.sh) #关闭进程
  │   ├── env.config #开发者狗配置
  │   ├── start-function-library-server-host.bat(start-function-library-server-host.sh) #功能仓库服务启动脚本
  │   └── start-workflow-standalone-webapp.bat(start-workflow-standalone-webapp.sh) #单独启动工作流webapp
  └── lib
      ├──  workflow-host-*.jar #工作流执行进程
      ├──  function-library-server-host-*.jar #功能仓库服务进程
      └──  workflow-standalone-webapp-*.jar #demo webapp,从仓库中取,安装包中不包含
1
2
3
4
5
6
7
8
9
10
11
12
13
14

igserver工作流独立模块自带igserver的功能函数,数据库存在于workflow\FunctionLibrary下,功能实现的jar包igserver-workflow-library.jar位于workflow\FunctionLibrary\GIS\MapGIS\jar文件夹中,当用户不需要使用igserver自带的功能函数时,可以将数据库清空并且删除igserver-workflow-library.jar,之后可以将自己开发的jar包放入对应的目录中,igserver工作流独立模块根据是否需要依赖内核接口来分别搭建工程

  • 如果开发的jar包依赖了内核接口,工程目录workflow-standalone-webapp的存放位置必须和program在同一目录下,考虑到依赖内核产生的授权问题,服务器最好不要设置java的环境变量,工程启动默认使用program目录自带的java环境

  • 如果开发的jar包不依赖内核接口,整个工程会非常轻量级,将不会有program目录,对应也不会有program目录自带的java环境,所以服务器需要提前搭建好java环境