更新时间:2024-12-23 GMT+08:00
分享

在本地通用服务器中部署流程引擎流程SDK

当您希望将流程引擎以微服务的形式部署到本地通用服务器,可以更好地控制和管理自己的应用数据、减少数据传输的延迟时,可以选择此实施方式进行流程引擎流程SDK独立部署。后续,您还可以基于流程引擎灵活扩展,为上层应用提供使用HTTP协议进行通信的API调用能力。

准备事项

操作步骤

如下操作以CentOS 7.6 64位操作系统的ECS为例。

  1. 登录Linux弹性云服务器
  2. 将已获取的SDK包和License文件上传至弹性云服务器,具体操作请参见上传文件到云服务器方式概览
  3. 执行如下命令,将SDK包解压缩到部署服务器的工作目录。

    tar -xvf {SDK包的名称} -C {部署服务器的工作目录}

    例如,将SDK包“workflow-sdk-1.24.100-SNAPSHOT”解压缩到“/root/deploytest”路径下。

    tar -xvf workflow-sdk-1.24.100-SNAPSHOT -C /root/deploytest

    解压缩后的SDK包会在“/root/deploytest”路径下生成如下结构的目录文件。

    |--- {iDME SDK版本号}-SNAPSHOT:包含流程编排服务和流程运行服务的依赖项。
          |--- design:流程编排服务。
                |--- lib:包含流程编排服务的所有依赖项。
          |--- runtime:流程运行服务。
                |--- lib:包含流程编排服务的所有依赖项。

  4. 执行如下命令,进入流程编排服务的工作目录,例如“/root/deploytest/1.24.100/design”

    cd /root/deploytest/1.24.100/design

  5. 执行如下命令,打开“application.properties”文件。

    vim application.properties

  6. i切换至编辑模式,并根据实际的流程引擎流程SDK资源规划,按需添加对应资源配置信息,完成流程编排服务的配置。

    # 流程编排服务配置
    basic.runtime.application.id=123456
    basic.runtime.domain.id=123abc
    basic.runtime.protocol=http
    basic.server.domain=localhost.huawei.com
    server.servlet.context-path=/workflowDesign
    server.port=60001
    store.s3.bucketname=basic-dabao-test
    store.s3.endpoint=obs.cn-north-7.ulanqab.huawei.com
    config.obs.endpoint=https://obs.cn-north-7.ulanqab.huawei.com
    store.s3.ak=123ABC
    store.s3.sk=456DEF
    basic.workspace.workflow-runtime.url=http://localhost.huawei.com:60004/workflowRuntime
    basic.runtime.domain=localhost.huawei.com:60004
    workflow.prefix=/workflowRuntime
    security.group.privatekey=abc123
    security.group.publickey=def456
    xdm.license.licenseFile=/root/deploytest/license.dat
    basic.runtime.application.admin-list=123,456
    
    # 数据库配置
    application.dbType=pgsql
    datasource.jdbcDriverClass.1=org.postgresql.Driver
    datasource.user.1=root
    datasource.password.1=123456
    datasource.url.1=jdbc:postgresql://120.0.0.7:5432/test?targetServerType=master&currentSchema=definition_test&stringtype=unspecified
    rdm.hibernate.dialect=com.huawei.it.rdm.configuration.PostgreSQL10XdmDialect
    rdm.dbType=postgresql
    
    # Redis配置
    redis.redisClusterConfiguration.clusters=7.0.0.1:6379,7.0.0.2:6379
    spring.redis.type=CLUSTER
    spring.redis.password=123456
    
    # 单点登录配置
    basic.auth.orgId.enable=TRUE
    basic.auth.orgId.redirect-url=http://localhost.huawei.com:${server.port}${server.servlet.context-path}/index.html
    ssf.login.oauth2.client-id=111aaa
    ssf.login.oauth2.client-secret=222bbb
    basic.runtime.org.code=333
    
    # 其他配置
    xdmf.init=TRUE

    其中,“xdm.license.licenseFile”的License文件路径需与2的存放路径保持一致。

  7. Esc,输入:wq,保存文件并返回。
  8. 执行如下命令,进入流程运行服务的工作目录,例如“/root/deploytest/1.24.100/runtime”

    cd /root/deploytest/1.24.100/runtime

  9. 执行如下命令,打开“application.properties”文件。

    vim application.properties

  10. i切换至编辑模式,并根据实际的流程引擎流程SDK资源规划,按需添加对应资源配置信息,完成流程运行服务的配置。

    # 流程运行服务配置
    server.servlet.context-path=/workflowRuntime
    basic.server.domain=localhost.huawei.com
    server.port=60004
    security.group.privatekey=abc
    security.group.publickey=efg
    xdm.license.licenseFile=/root/deploytest/license.dat
    basic.xdm.module.sync.service-url=http://localhost:8003/rdm_123_app/services
    basic.runtime.application.admin-list=123,456
    basic.workspace.definition.url=http://localhost.huawei.com:60001/definitionmicro
    
    # OBS配置
    store.s3.bucketname=testObs
    store.s3.endpoint=obs.cn-north-7.ulanqab.huawei.com
    config.obs.endpoint=https://obs.cn-north-7.ulanqab.huawei.com
    store.s3.ak=testak
    store.s3.sk=testsk
    
    # 数据库配置
    application.dbType=pgsql
    datasource.jdbcDriverClass.1=org.postgresql.Driver
    datasource.user.1=admin
    datasource.password.1=admin
    datasource.url.1=jdbc:postgresql://127.0.0.1:8888/testdb?targetServerType=master&currentSchema=testschema&stringtype=unspecified
    rdm.hibernate.dialect=com.huawei.it.rdm.configuration.PostgreSQL10XdmDialect
    rdm.dbType=postgresql
    
    # redis配置
    redis.redisClusterConfiguration.clusters=1.111.11.111:6379,2.222.22.222:6379
    spring.redis.type=CLUSTER
    spring.redis.password=admin
    
    # 单点登录配置
    basic.auth.orgId.enable=TRUE
    basic.auth.orgId.redirect-url=http://localhost.huawei.com:${server.port}${server.servlet.context-path}/index.html
    ssf.login.oauth2.client-id=abc123
    ssf.login.oauth2.client-secret=abc123
    basic.runtime.application.id=abc123
    basic.runtime.domain.id=123
    basic.runtime.org.code=333
    
    # 其他配置
    xdmf.init=TRUE

    其中,“xdm.license.licenseFile”的License文件路径需与2的存放路径保持一致。

  11. Esc,输入:wq,保存文件并返回。
  12. 执行如下命令,将node相关依赖复制到指定目录“/usr/local”

    cp -r ./lib/node_modules /usr/local
    cd /usr/local/node_modules/.bin
    # 解压后符号链接丢失 需重新设置
    ln -sf ../acorn/bin/acorn acorn
    ln -sf ../browserslist/cli.js browserslist
    ln -sf ../cssesc/bin/cssesc cssesc
    ln -sf ../errno/cli.js errno
    ln -sf ../esbuild/bin/esbuild esbuild
    ln -sf ../eslint/bin/eslint.js eslint
    ln -sf ../eslint-config-prettier/bin/cli.js eslint-config-prettier
    ln -sf ../he/bin/he he
    ln -sf ../image-size/bin/image-size.js image-size
    ln -sf ../jsesc/bin/jsesc jsesc
    ln -sf ../json5/lib/cli.js json5
    ln -sf ../js-yaml/bin/js-yaml.js js-yaml
    ln -sf ../less/bin/lessc lessc
    ln -sf ../mime/cli.js mime
    ln -sf ../nanoid/bin/nanoid.cjs nanoid
    ln -sf ../needle/bin/needle needle
    ln -sf ../which/bin/node-which node-which
    ln -sf ../npm-run-all/bin/npm-run-all/index.js npm-run-all
    ln -sf ../@babel/parser/bin/babel-parser.js parser
    ln -sf ../pidtree/bin/pidtree.js pidtree
    ln -sf ../prettier/bin-prettier.js prettier
    ln -sf ../resolve/bin/resolve resolve
    ln -sf ../rimraf/bin.js rimraf
    ln -sf ../rollup/dist/bin/rollup rollup
    ln -sf ../npm-run-all/bin/run-p/index.js run-p
    ln -sf ../npm-run-all/bin/run-s/index.js run-s
    ln -sf ../semver/bin/semver.js semver
    ln -sf ../typescript/bin/tsc tsc
    ln -sf ../typescript/bin/tsserver tsserver
    ln -sf ../update-browserslist-db/cli.js update-browserslist-db
    ln -sf ../vite/bin/vite.js vite
    ln -sf ../vue-tsc/bin/vue-tsc.js vue-tsc
    chmod -R 700 /usr/local/node_modules

  13. 执行如下命令,创建“vueproject”文件夹。

    mkdir -p /usr/local/vueproject
    chmod -R 700 /usr/local/vueproject

  14. 分别进入流程编排服务和流程运行服务的工作目录,依次执行如下命令,复制OLC配置文件。

    如果您在设置流程编排服务和流程运行服务的“application.properties”文件时,未开启OLC限流降级,可跳过此步骤。

    1. 执行如下命令,创建临时文件夹“temp_unzip”,并解压缩OLC文件至该临时文件夹。
      mkdir temp_unzip
      tar -xf ./lib/MetaWorkflowRuntimeService-1.4.0-SNAPSHOT-small.jar -C temp_unzip
    2. 执行如下命令,创建文件夹“olc”,并将“temp_unzip/olc/”目录下的所有文件复制到“olc”目录中。
      mkdir olc
      cp -r temp_unzip/olc/* olc/
    3. 执行如下命令,删除临时文件夹。
      rm -rf temp_unzip

  15. 分别进入流程编排服务和流程运行服务的工作目录,执行如下命令,创建并启动脚本。

    • 在流程编排服务的工作目录下,依次完成如下操作。
      1. 执行如下命令,创建启动流程编排服务的脚本文件。
        vim startDesign.bash
      2. i切换至编辑模式,输入以下内容,设置启动流程编排服务脚本。
        # 指定启动类
        START_CLASS=com.huawei.it.plm.definitiondemo.WfDefinitionDemoApplication
        # 指定启动类所在路径,为lib目录下
        LOAD_CLASSPATH=./lib/*:./
        # 执行java命令,以配置文件application.properties启动服务,并把日志输入到当前目录下的xdm.log中
        sh -c "java -Xms8g -Xmx8g -Dspring.config.additional-location=./application.properties -cp $LOAD_CLASSPATH $START_CLASS"
      3. Esc,输入:wq,保存文件并返回。
      4. 执行如下命令,设置“startDesign.bash”脚本文件权限。
        chmod +x startDesign.bash
      5. 执行如下命令,启动流程编排服务。
        ./startDesign.bash
    • 在流程运行服务的工作目录,依次完成如下操作。
      1. 执行如下命令,创建启动流程运行服务的脚本文件。
        vim startRuntime.bash
      2. i切换至编辑模式,输入以下内容,设置启动流程运行服务脚本。
        # 指定启动类
        START_CLASS=com.huawei.it.workflowdemo.WorkflowRuntimeApplication
        # 指定启动类所在路径,为lib目录下
        LOAD_CLASSPATH=./lib/*:./
        # 执行java命令,以配置文件application.properties启动服务,并把日志输入到当前目录下的xdm.log中
        sh -c "java -Xms8g -Xmx8g -Dspring.config.additional-location=./application.properties -cp $LOAD_CLASSPATH $START_CLASS"
      3. Esc,输入:wq,保存文件并返回。
      4. 执行如下命令,设置“startRuntime.bash”脚本文件权限。
        chmod +x startRuntime.bash
      5. 执行如下命令,启动流程运行服务。
        .startRuntime.bash

  16. 完成部署后,流程引擎支持如下几种验证方式。您可以根据实际情况选择验证。

    • 方式一:查看服务日志
      执行如下命令,查看服务日志。
      tail -f xdm.log

      显示结果为类似如下信息,则说明启动成功。

      • 流程编排服务
        INFO  WfDefinitionDemoApplication:61 - Started WfDefinitionDemoApplication in xxx seconds
      • 流程运行服务
        INFO  WorkflowRuntimeApplication:61 - Started WorkflowRuntimeApplication in xxx seconds
    • 方式二:调用指定接口

      启动“startDesign.bash”“startRuntime.bash”脚本文件后,约等待2分钟,调用如下健康检查接口,查询服务是否正常启动。

      http://{部署服务器的IP地址}:{部署服务器的端口号}${流程编排服务文根/流程运行服务文根}/health/check

      如果返回如下信息,则说明启动成功。

      true
    • 方式三:访问可视化页面

      如果您已在流程引擎流程SDK资源规划中规划了单点登录的相关资源/云服务,并在部署时配置了单点登录信息,可以选择此方式进行验证。

      在浏览器中访问如下地址,查看服务是否启动成功。

      • 流程编排服务
        http://{承载流程编排服务的服务器域名或IP地址}:{流程编排服务的端口号}/{流程编排服务文根}/index.html#/processApplicationForm?tenantId=-1&applicationId={应用ID}
      • 流程运行服务
        http://{承载流程运行服务的服务器域名或IP地址}:{流程运行服务的端口号}/{流程运行服务文根}/wfAdminIndex.html#/process-tasks?tenantId=-1&applicationId={应用ID}

      转入流程引擎登录页面,输入登录账号和登录密码,成功登录并进入流程引擎页面,即表示启动成功。

相关文档