BeX5 部署

原理

运行结构图

整个应用系统可以分成系统的微服务和若干个业务微服务

  • 系统微服务包含:
    • report:报表微服务;
    • doc: 文档微服务;
    • portal:门户微服务;在门户微服务中必须包含全量的模型资源;
  • 业务微服务:例如 oa、hr 等等。

在 portal 和业务微服务中,必须包含全量的模型资源。如何中租户中添加这些微服务,在“操作步骤”中会详细介绍。

应用发布流程图

注意:应用 SVN,如果 UI2 的系统资源期望使用应用自带的,需要和平台沟通。

操作步骤

系统管理员

主要职责:发布 entry 可部署模板、关闭模板审核

关闭模板审核方法:用 system 登录控制台,打开“系统设置—审核配置”,关闭组件模版审核

1723171357196

开发租户

主要职责:发布应用、report 和 doc 的可部署模板

发布 report 可部署模板

应用的项目标识为 bizreport

发布 doc 可部署模板

应用的项目标识为 bizdoc

发布应用可部署模板

第一步:应用 SVN 准备
  1. 系统资源默认使用平台自动的,即使应用 SVN 有也不会使用(如果期望使用 SVN 上的 UI2 系统资源,请与平台联系)。
  2. BIZ 模块每个应用的根目录添加标识文件:unmakable.txt,内容为空,例如:/BIZ/OA/unmakable.txt
第二步:创建应用

在“我的开发——企业应用”中使用“BeX5 微服务空白模板”模板创建应用。 接下来的主要工作有:

更新架构组件

在"架构"中确认组件是否有需要更新的,如果有更新需要先更新组件,执行“提交并更新”

确认是否需要更新组件和组件的更新如下图操作:

1729818718445

1729818746163

更新完点击“关闭”按钮后,执行“提交并更新”如下:

1729818938849

将应用资源从 SVN 同步到应用中

在“架构”图中,切换到“开发架构”,设置“SVN 源码同步 Git”组件的“svn 仓库地址”、“svn 仓库用户名”和“svn 仓库密码”,svn 仓库地址需要配置到 model 这一层,即 BIZ 上层目录。如:http://XXX/svn/model。如下图:

1729819049781

配置后点击“保存”会提示重启,点击“是”进行重启;如果没有提示重启,可以切换到“高级”,点击“立即重启”制作台。

1729819091843

1729819117923

重启完成后,执行“强制覆盖本地”

1729819151994

注:强制覆盖本地后可以切换到“代码”,到mode/BIZ或model/UI2下看是否相关的业务模块,若没有可以等一会再执行“强制覆盖本地”。

创建数据源模块

BeX5 中使用的每个数据源,必须在 service 下创建相应的数据源模块,数据源模块的命名规则:{数据源名}DataSource,例如

  • system 对应的是 systemDataSource
  • oa 对应的是 oaDataSource

数据源模块下的内容可以拷贝默认带的 systemDataSource,然后修改 app.m、project.xml 中的配置信息,以及 xxDataSource.meta 的文件名和内容。 根据数据源连接的物理数据库,在架构图中切换到“运行架构”添加数据库组件,并将 xxDataSource 连接到相应的数据库组件上。

1729839742793 修改所有数据库组件的以下属性,保存后执行“提交并更新”:

  • 组件名称:自定义,推荐使用“xx 数据库”,例如“demo1 数据库”;
  • 数据库显示名:自定义,推荐使用“xx 数据库”,例如“demo1 数据库”;
  • 是否外部数据库:否

1729839948264

配置 redis 标签

修改“运行架构”下的 redis 组件的以下属性,保存后执行“提交并更新”:

  • 是否外服务:否(默认就是否)
  • 共享范围:tenant
  • 服务实例规格选择器:必须与“中间件管理-中间件系统管理-Redis 实例管理”中定义的分配标签一致。BeX5 中的 redis 只支持简单模式的 redis。

1729841186656

第三步:发布应用可部署模板
发布类型选择“市场”

1729841220687

应用模版设置窗口的相关配置

应用类型选择“多应用”

1729841277850

应用列表,把system、 portal、portal2、entapp、SA、wxsys、main、pc、comp 设置到portal,其他的每个应用勾选自己的

1729841310180

此处的应用列表决定了将整个应用资源划分成多少个微服务,每个微服务负责哪些模块的请求。

运行租户

主要职责:使用可部署模板构建微服务系统、配置微服务的数据库连接、配置微服务的运行时设置(例如 pod 伸缩量等)。

添加企业门户

添加应用的微服务(portal 等)

选择上面发布的可部署模板,输入项目名称、服务名并选择应用,如:服务名输入 portal,应用选择 portal。

1729841350225

一次只能选择一个应用,需要多个应用就添加多个

注:portal 的服务名必须为 portal,其它的服务名可以自定义(entry、wf、portal、doc、report 是内置的服务名,不允许使用)。

注册微服务

访问企业门户 entry 用管理员登录,打开服务注册功能,执行自动发现并注册

1729841388758

配置数据库连接参数

除了 entry、report 其它的都需要配置数据库连接参数,在“应用/服务管理”列表找到相关应用的配置:

1729846284960

切换到数据库设置,对相关的数据进行配置

1729841652898

1729841814262

如果添加了doc(文档)应用需要配置doc数据库

1729844226541

修改entry应用的配置

设置访问的首页

门户应用的“配置”打开,切到“环境设置”页签,找到“用户自定义”服务模块,设置参数

1729844316460

添加三个环境变量的设置

1729844355333

  • 设置portal应用的内部域名,服务注册功能中的服务地址

  • 设置PC端的门户首页,本文档设置是pc3,也可以设置为pc或pc2

    • 变量名:ENTRY_PC_URL
    • 变量值:/x5/UI2/v_/portal/pc3/index.w[QUERY]
  • 设置Mobile端的门户首页

    • 变量名:ENTRY_MOBILE_URL
    • 变量值:/x5/UI2/v_/portal/mobile/index.w[QUERY]
设置权限组件

门户应用的“配置”打开,切到“环境设置”页签,找到“权限组件”服务模块,设置参数

1729844575920

把最低权限要求设置为:匿名用户:

1729844604797

然后重启entry门户后即可通过门户entry的域名访问应用。

附录

使用扩展空间

如果平台默认带的资源下面有自己修改的内容,需要通过扩展空间的方式放到扩展空间中,用的地方直接写原始的路径不需要写扩展空间的路径,如写为/system/data,不能写为/system_X/data

UI2 下如果有扩展空间,在菜单功能配置文件、.w、.js,用到扩展空间中的文件时,路径需要配置为原始的路径,不需要写扩展空间的路径,如写为/SA/task/mainActivity.w,不能写为/SA_X/task/mainActivity.w

如果有相关的菜单功能配置文件中有相关的路径的调整,调整后需要重新分配一下这个功能的权限

系统资源使用线下版本的

BIZ/system,BIZ/SA,BIZ/portal,BIZ/portal2,UI2/system,UI2/SA,UI2/portal是默认带的系统资源,不同的版本可能有差异。除了BIZ/system 必须用系统的,SA、portal 有需要可以用线下版本中资源

  • SA、portal 用线下版本带的,需要把开发模版的 ide 打开切换到代码页,在 model 下新建一个名字为.systemSubDir 的文件(文件路径为:model/.systemSubDir),文件中配置用系统默认的模块,如下文件中配置的是必须用系统的:

注意:如果使用自己的 UI2/system 需要把线下使用的 BeX5 版本中 runtime/UIServer/WEB-INF/lib/resources.jar 中 UI2/system 下以及 UI2/system 的子目录下的 js 文件,通过 svn 提交的 model/UI2/system 对应的位置下

  • 执行“提交并更新”,然后到“高级”中点击“制作台重启”的“立即重启”
  • 重启后切换到“代码”页,到BIZ和UI2下使用系统资源的目录下创建.comp.save文件,如BIZ/SA创建后的文件路径为model/BIZ/SA/.comp.save,注意使用线下系统资源的目录下都有添加
  • 需要对 UI2/system/biz.common.min.js 文件特殊处理,需要到“池管理”中找到当前应用的 ide 的 pod,进入 pod 中的 tomcat 容器,执行以下命令:
 cp /usr/local/x5/model-system/UI2/system/biz.common.min.js /usr/local/x5/model/UI2/system/biz.common.min.js
  • 修改svn上的model/UI2/system/admin/base/server/dsrc/Funcs.java文件中getAppFuncs方法的实现如下:

        private static Object getAppFuncs(){
            JSONArray ret = new JSONArray();
            FileSystem fs = FileSystemWrapper.instance();
            String uiCompPath = "/UI2/comp";
            String uiConfigPath = "/config";
            String uiFuncsFileExt = ".function.json";
            String compPath = "comp";
            List<String> dirs = fs.getDirs(uiCompPath);
            for(String dir : dirs){
                File fDir = new File(dir);
                String configDir = fDir.getName() + uiConfigPath;
                List<File> funcFiles = fs.getFiles(uiCompPath + "/" + configDir, uiFuncsFileExt, false);
                for(File file : funcFiles){
                    String fileName = file.getName();
                    ret.add("$UI/"+compPath+"/"+configDir+"/"+fileName);
                }
            }
    
            return ret;
        }
    
  • 修改model/.gitignore文件,搜索 /BIZ/SA,/UI2/portal,/UI2/system 等需要用自己资源的目录配置进行删除,注意配置文件中配置的目录不能删除

  • 执行“提交并更新”,然后到“高级”中点击“制作台重启”的“立即重启”

重启后到代码下资源是否正确,如果正确就可以进行发布了

  • 注意:使用了自己的 UI2/system 后不能使用 ide 中发布按钮进行发布,需要通过下面的“更新资源”中的"手动更新资"方式在浏览器的console中输入代码片段进行发布

配置发布时不需要编译的UI2模块

在service\bex5目录下创建build.config.json文件,在此文件中配置的模块发布的时候不会进行编译

文件内容如下:

{"excludes":"/UI2/SA,/UI2/OA"}

数据源配置为已有的数据库

数据源配置为已有的数据库,需要添加下面的配置,表示 bex5 使用外部数据库,发布时将不执行具体的数据库初始化逻辑

在 servie\main\deploy 下的 dev、production文件中 BEX5_EXTERNAL_DB 的 vaule 配置:

      <property name="BEX5_EXTERNAL_DB" value="true" env="BEX5_EXTERNAL_DB" readonly="true">
        <label label = "BEX5_EXTERNAL_DB"/>
    </property>

配置 session 超时时间

修改 service/main/deploy 下的 xml 文件中 BEX5_REDIS_SESSION_TIMEOUT 的 value 配置:

    <property name="BEX5_REDIS_SESSION_TIMEOUT" value="36000" env="BEX5_REDIS_SESSION_TIMEOUT" readonly="true">
        <label label = "BEX5_REDIS_SESSION_TIMEOUT"/>
    </property>

登录密码使用密码增强特性

人员登录密码使用密码增强特性的相关配置。通过环境变量 BEX5_DISABLED_PASSWORD_SALT 和 BEX5_PASSWORD_SALT 来控制, BEX5_DISABLED_PASSWORD_SALT: 是否禁用密码加盐,默认值是 false;两个环境变量在应用模板的 model/service/main/deploy/**.def.xml 中定义

场景一:禁用密码加盐

    <property name="BEX5_DISABLED_PASSWORD_SALT" value="true" env="BEX5_DISABLED_PASSWORD_SALT">
        <label label="BEX5_DISABLED_PASSWORD_SALT"/>
    </property>

场景二: 开启密码加盐,并设置盐为: helloworld

    <property name="BEX5_PASSWORD_SALT" value="helloworld" env="BEX5_PASSWORD_SALT">
        <label label="BEX5_PASSWORD_SALT"/>
    </property>

场景三:开启密码加盐,并设置盐为: http://www.justep.com

系统默认值,不需要配置 BEX5_DISABLED_PASSWORD_SALT 和 BEX5_PASSWORD_SALT

组织授权缓存

组织授权为了优化做了缓存,即给相关的组织分配了权限,立即注销重新登录不起作用,需要5分钟后才起作用

如果要调整缓存的时间,如下:

在 model/service/main/deploy/production.def.xml 文件中添加 BEX5_LOAD_PERM_CACHE_INTERVAL 配置,值单位默认是秒

    <property name="BEX5_LOAD_PERM_CACHE_INTERVAL" value="60" env="BEX5_LOAD_PERM_CACHE_INTERVAL" readonly="true">
        <label label = "BEX5_LOAD_PERM_CACHE_INTERVAL"/>
    </property>

如果权限数据少也可以关闭缓存,如下:

修改 model/service/main/deploy/production.def.xml 文件中 BEX5_PERM_CACHE 的值为 false,权限就不会缓存

    <property name="BEX5_PERM_CACHE" value="false" env="BEX5_PERM_CACHE" readonly="true">
        <label label = "BEX5_PERM_CACHE"/>
    </property>

使用推送功能

如果要使用推送功能需要配置 activeMQ 和 PushServer 服务地址

平台中默认没有 activeMQ 和 PushServer,需要使用线下 BeX5 中默认带的 activeMQ 和 PushServer,线下启动了服务可以在平台环境中配置地址

在 model/service/main/deploy/production.def.xml 文件中添加 BEX5_PUSH_SERVER、BEX5_MQTT_SERVER 和 BEX5_EXTERNALUI_SERVER 配置

BEX5_EXTERNALUI_SERVER 的 value 值是最终运行的租户 entr y应用的域名再加/x5,如下:

    <property name="BEX5_PUSH_SERVER" value="http://192.168.0.100:8080" env="BEX5_PUSH_SERVER" readonly="true">
        <label label = "BEX5_PUSH_SERVER"/>
    </property>
    <property name="BEX5_MQTT_SERVER" value="tcp://192.168.0.100:1883" env="BEX5_MQTT_SERVER" readonly="true">
        <label label = "BEX5_MQTT_SERVER"/>
    </property>
    <property name="BEX5_EXTERNALUI_SERVER" value="http://entryxxx-vip.xxxx/x5" env="BEX5_EXTERNALUI_SERVER" readonly="true">
        <label label = "BEX5_EXTERNALUI_SERVER"/>
    </property>

使用企业微信

如果要使用企业微信等需要在 conf/server.xml 中默认的用户名和密码,此配置在平台中如下实现

可以通过环境变量配置在 model/service/main/deploy/production.def.xml 文件中提供的有 BEX5_DEFAULT_USER_NAME 和 BEX5_DEFAULT_USER_PASSWORD

如下:

    <property name="BEX5_DEFAULT_USER_NAME" value="system" env="BEX5_DEFAULT_USER_NAME">
        <label label="BEX5_DEFAULT_USER_NAME"/>
    </property>
    <property name="BEX5_DEFAULT_USER_PASSWORD" value="aSDF1@#$" env="BEX5_DEFAULT_USER_PASSWORD">
        <label label="BEX5_DEFAULT_USER_PASSWORD"/>
    </property>

环境变量中配置是模版发布默认就设置的,如果在最终运行的时候需要修改,可以在 model/service/main 下添加 configurable.schema.json 文件,文件内容如下:

    {
        "type": "object",
        "properties": {
            "BEX5_DEFAULT_USER_NAME": {
                "type": "string",
                "title": "BEX5默认用户名"
            },
            "BEX5_DEFAULT_USER_PASSWORD": {
                "type": "string",
                "title": "BEX5默认用户密码"
            }
        }
    }

配置了 configurable.schema.json 文件重新发布模版后,在最终使用模版的应用,通过配置环境变量可以修改,操作步骤如下:

  • 运行租户登录,打开应用服务管理列表
  • 打开应用的配置

1729846284960

  • 切换到“环境设置”页签,在“main”服务模块设置参数

    1729846862849

  • 填写用户名和密码点确定,然后重启应用

使用 redis

system 登录控制台,打开“中间件管理—中间件系统管理—Redis 实例管理”,点击“新建分组—新建标签”

1729848877446

创建分组后,在列表中找到新创建的,点击明细

1729848907508

点击"使用模版新建",“选择应用模版”时选择下面红框的模版

1729848942176

租户和集群就选择 redis 租户和对应的 kube 集群

配置数据库参数

  1. 配置数据库参数的时候需要注意,推荐的方案是在每个应用上把所有的数据源都配置上(如果有跨模块调用数据操作的需要,可以通过配置的数据源操作)
  2. 执行系统库执行数据库升级脚本
  3. 到 system 数据库中修改 sa_docnamespace 中 docserver 的地址,如果使用平台提供的 BeX5 文档,需要配置为此服务的是内网地址,在服务注册中可以看到内网地址,如果是使用已有的文档服务器,就修改为自己已有的文档服务器地址即可,如:http://bizdoc.nd-tenant-bex5pud/DocServer

上传文件到云

如果需要把之前上传的文件拷贝到云上,可以通过连接 linux 进行文件复制的工具实现,如 WinSCP,具体的服务器连接信息可以通过下面方式查找:

  • system 登录控制台,打开运维管理功能,然后打开 Kube 控制面板
  • 在 common 命空间下找到 minio 的 pod

  • 进入上面 pod 的执行终端,输入 df 就可以看到 storage 服务的地址,找到 storage 目录下具体的 xxxip-vip 目录,进行文件的覆盖(xxxip-vip 中的 xxxx 就是文档服务器的应用名和租户名拼接的)

如果是 oracle 数据库,还要修改 storage 目录下 doc/conf/activemq-conf.xml 文件中的

    <property name="validationQuery" value="SELECT 'x' "/>

    <property name="validationQuery" value="SELECT 'x' from dual"/>

访问地址

访问:http://entryxxx-vip.xxxx/, 域名就是“应用/服务管理”的应用列表中企业门户的域名

更新资源

如果需要定时更新资源可以配置定时滚动更新。配置定时任务,具体执行操作的配置

[
  {
    "headers": {
      "Content-Type": "application/json"
    },
    "method": "POST",
    "responseHeader": false,
    "formCommit": false,
    "body": {
      "submitter": "yupdate2",
      "consoleUrl": "https://www.a.xcaas.com/",
      "domainprefix": "updatetmp2yupdate28",
      "title": "自动发布",
      "releaseMode": "market"
    },
    "url": "https://www.a.xcaas.com/service/ide/app/deploy"
  }
]

其中

  • http://www.a.xcaas.com 是控制台的地址
  • updatetmp2yupdate28 发布的模版 ide 的 url 第一个中划线前面的值
  • yupdate2 创建这个模版的租户名

如果需要手动更新资源步骤如下:

  1. 用开发租户登录控制台
  2. F12 打开浏览器的开发人员调试工具,在 console(控制台)执行下面的代码
function autoDeploy(domainprefix, submitter){
    fetch("/service/ide/app/deploy",{
        method : "POST",
        headers:{"Content-Type" : "application/json"},
        body:JSON.stringify({
            domainprefix: domainprefix, 
            submitter: submitter,
            title: "auto deploy",
            consoleUrl: window.location.origin,
            releaseMode: "market"})
    }).then(() =>{
            console.log("触发自动发布成功")

    }).catch(()=>{
            console.log("触发自动发布失败");
    });
};
autoDeploy("updatetmp2yupdate28", "yupdate2");

其中

  • updatetmp2yupdate28 发布的模版 ide 的 url 第一个中划线前面的值
  • yupdate2 创建这个模版的租户名
  • 资源更新中提供的发布模版的租户是指发布市场模版的租户

添加应用模块

新加一个应用模块需要做以下步骤:

  1. 修改 app 表;

使用newcsl租户登录,找到控制台门户entry的资源

1729850281861

找到newdao_console数据库,然后进入

1729850341058

  • 进入数据库后找app表,过滤数据 DOMAIN_PREFIX 选择 like%%,值输入:应用名+租户 code,如:portalent1
  • 找到 DEF_ID 为 BEX5_PROD 的记录,下载 APP_CONFIG 字段的内容,修改 BeX5_apps 字段的值,再上传文件

  • 重新发布模板;

  • 发布完模板后, 浏览器输入:
    http://entryent14-vip.app.a.xcaas.com/entry/manager/services/refresh/portal

其中 portal 表示修改应用

results matching ""

    No results matching ""