5.0.0升级详细说明及步骤

注意事项

1、【重要】升级前备份base库和用户权限模块所在的库
2、【重要】升级过程执行SQL严格按照文档中写的顺序执行。特别注意:部分SQL是要求【发布前执行】,部分SQL是要求【发布后执行】

概述

该升级说明仅针对4.7.8以上版本,如正在使用4.7.8之前的版本,可根据升级说明尝试升级,或联系Oinone平台售后获取技术支持。

主要变动

  • rocketmq配置方式变化
    • 依赖变化
    • yaml配置变化
    • 用法发生变化
  • 弃用canal监听binlog,改用sql-records模块
    • 依赖变化
    • yaml配置变化
  • 权限
    • 依赖变化
    • 用法发生变化
    • 需执行迁移脚本
  • 翻译
    • 需执行迁移脚本
  • 集成设计器
    • 需执行迁移脚本

重要事项

  • 本次升级需停机发布,以确保升级过程可以稳健进行。
  • 在升级前,停机后,需妥善备份数据库,以防止无法预知的问题无法正常上线。
  • 强烈建议在测试环境先模拟升级步骤,并根据部署环境建立自己的升级步骤文档及升级执行记录,以确保生产环境可以稳定升级。
  • 本次升级执行的记录应妥善保留一段时间,以确保线上环境出现无法预知问题时进行修复。

升级步骤

发布前确认

  1. admin用户或具备超级管理员的用户是否可以正常登录
  2. 是否已创建升级步骤文档及升级执行记录文档
  3. 当前时段是否允许停机发布

1. 根据版本说明中提供的版本号进行修改

PS: 下列版本号为5.0.0版本的首个稳定版本,如需要更新到最新版本,请根据5.0.x版本的更新日志查看最新版本。

<!-- 平台基础 -->
<pamirs.middleware.version>5.0.0</pamirs.middleware.version>
<pamirs.k2.version>5.0.1</pamirs.k2.version>
<pamirs.framework.version>5.0.2</pamirs.framework.version>
<pamirs.boot.version>5.0.1</pamirs.boot.version>
<pamirs.distribution.version>5.0.1</pamirs.distribution.version>
<!-- 平台功能 -->
<pamirs.metadata.manager>5.0.0</pamirs.metadata.manager>
<pamirs.core.version>5.0.2</pamirs.core.version>
<pamirs.workflow.version>5.0.1</pamirs.workflow.version>
<pamirs.workbench.version>5.0.1</pamirs.workbench.version>
<pamirs.data.visualization.version>5.0.1</pamirs.data.visualization.version>

2. 所有项目工程修改依赖项

pamirs-auth-api变更为pamirs-auth3-api

原依赖项:

<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth-api</artifactId>
</dependency>

修改后的依赖项:

<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth3-api</artifactId>
</dependency>

pamirs-auth-core变更为pamirs-auth3-core

原依赖项:

<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth-core</artifactId>
</dependency>

修改后的依赖项:

<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth3-core</artifactId>
</dependency>

3. 启动工程添加依赖项

<!-- rocketmq -->
<dependency>
    <groupId>pro.shushi.pamirs.framework</groupId>
    <artifactId>pamirs-connectors-event-rocketmq</artifactId>
</dependency>

<!-- auth -->
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth3-core</artifactId>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth3-view</artifactId>
</dependency>
<!-- auth compatible -->
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth-compatible</artifactId>
</dependency>

<!-- management center -->
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-management-center</artifactId>
</dependency>

<!-- sql-record -->
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-sql-record-core</artifactId>
</dependency>
其他可能需要补充的依赖项
  • eip模块从core中分离出view部分代码,如有用到eip模块,则需要检查该依赖项
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-eip2-view</artifactId>
</dependency>
  • 主POM依赖缺失可能会导致版本无法正确处理,如缺少以下依赖的,则需要补充缺失的版本管理依赖
<dependency>
    <groupId>pro.shushi.pamirs</groupId>
    <artifactId>pamirs-k2</artifactId>
    <version>${pamirs.k2.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs</groupId>
    <artifactId>pamirs-framework</artifactId>
    <version>${pamirs.framework.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.boot</groupId>
    <artifactId>pamirs-boot-dependencies</artifactId>
    <version>${pamirs.boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-core-dependencies</artifactId>
    <version>${pamirs.core.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>pro.shushi.pamirs</groupId>
    <artifactId>pamirs-distribution</artifactId>
    <version>${pamirs.distribution.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

4. 根据环境配置yaml

spring:
   rocketmq:
    name-server: 127.0.0.1:9876
    #ACL配置
    #accesskey: xxxx
    #secretkey: xxx
pamirs:
  boot:
    modules:
      - management_center
      - sql_record
  event:
    notify-map:
      system: ROCKETMQ
      biz: ROCKETMQ
      logger: ROCKETMQ
  record:
    sql:
      # 修改为自己的环境路径,需提前创建可访问目录,镜像部署请使用镜像中可访问的路径
      store: /opt/pamirs/logs/sql-records 

被废弃的配置:

pamirs.event.rocket-mq
pamirs.auth.model-filter

5. 编译所有项目工程,解决依赖报错的问题

下面列出了部分已知需要修改的问题及解决方案:

  • RocketMQ注册消费者方式发生变化,不修改的情况下会导致MQ无法正常消费

主要变更:NotifyEventListener变更为NotifyConsumer<T>

// 原注册及使用方式
@Bean
@NotifyListener(topic = TEST_PRODUCTION_ORDER_EVENT_TOPIC, bodyClass = ProductionOrderScheduling.class)
public NotifyEventListener testProductionOrderEvent() {
    return (event) -> {
        ProductionOrderScheduling data = (ProductionOrderScheduling) event.getBody();
        System.out.println(data.getName());
    };
}

// 新注册及使用方式
@Bean
@NotifyListener(topic = TEST_PRODUCTION_ORDER_EVENT_TOPIC, bodyClass = ProductionOrderScheduling.class)
public NotifyConsumer<ProductionOrderScheduling> testProductionOrderEvent() {
    return (event) -> {
        ProductionOrderScheduling data = event.getPayload();
        // do something.
    };
}
  • 权限初始化相关逻辑可以暂时注释,可以完全在页面上进行配置

  • 获取当前角色可使用AuthRoleSession#getCurrentRoles方法

  • 导入路径发生变化

    // 原路径
    import pro.shushi.pamirs.core.common.entry.TreeNode;
    // 新路径
    import pro.shushi.pamirs.framework.common.entry.TreeNode;
  • 创建用户时,密码不再使用PamirsUser中的密码配置,请独立使用PasswordService进行创建。

  • 保存用户角色并差量更新缓存可以参考如下实现:

private void updateRolesAndRefresh(PamirsUser user, List<AuthRole> roles) {
    Long userId = user.getId();
    DiffSet<Long> diffRoles = authUserRoleDiffService.saveRoles(userId, roles);
    if (diffRoles != null) {
        authUserRoleDiffService.refreshUserRoles(userId, diffRoles);
    }
}
  • ExcelExportFetchDataContext构造函数发生变更,第三个参数sheetDefinition传入即可。

  • 通过代码方式实现的数据过滤可以参考如下实现进行处理:

@Order(0)
@Component
public class CustomAuthFilterService extends DefaultAuthFilterService implements AuthFilterService {

    @Override
    public AuthResult<String> fetchModelFilterForRead(String model) {
        AuthResult<String> result = super.fetchModelFilterForRead(model);
        if (PamirsUser.MODEL_MODEL.equals(model)) {
            if (result.getData() == null) {
                return AuthResult.success(generatorFilter());
            }
            return result.transfer(filter -> "(" + filter + ") and " + generatorFilter());
        }
        return result;
    }

    private String generatorFilter() {
        return "source == " + UserSourceEnum.MANUAL.value();
    }
}

6. 关闭用户访问(生产发布时必须)

7. 备份所有数据库的全部数据(停机后备份,以防止备份不完全)

8. 启动前执行SQL(逐行执行!!!)

  • 元数据修复
-- 修复界面设计器菜单元数据注册表
insert into base_model_data(id, low_code, source, code, module, load_module, model, res_id, date_init,date_update,create_uid,write_uid) select id,1 as low_code,'UI' as source,concat('base.Menu#', module, '#', name) code, module, module as load_module, 'base.Menu' as model, id as res_id, DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') as date_init, DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') as date_update, '10001' as create_uid, '10001' as write_uid from base_menu where system_source = 'UI' and is_deleted = 0 and id not in (select res_id from base_model_data where res_id in (select id from base_menu where system_source = 'UI' and is_deleted = 0) and is_deleted = 0);
  • 翻译数据修复
-- 修复历史数据
update resource_resource_translation_item as rrt SET is_deleted=rrt.id where module is NULL and is_deleted=0;
update resource_resource_translation_item as rrt SET module ='management_center' where module='auth' and is_deleted=0;
update resource_resource_translation_item as rrt SET module ='management_center' where module='business' and is_deleted=0;
update resource_resource_translation_item as rrt SET module ='management_center' where module='user' and is_deleted=0;

-- 删除重复历史数据
UPDATE resource_resource_translation_item AS rrt LEFT JOIN (SELECT MAX(id) AS max_id FROM resource_resource_translation_item GROUP BY module, origin_code, res_lang_code, lang_code,is_deleted) AS max_records ON rrt.id = max_records.max_id SET rrt.is_deleted = rrt.id WHERE max_records.max_id IS NULL;

-- 修改resource_resource_translation 的唯一键
ALTER TABLE resource_resource_translation DROP INDEX urce_resource_translation_module_model_res_lang_code_lang_code_d;

-- 移除无效历史数据
ALTER TABLE resource_resource_translation RENAME COLUMN model TO _d_model_888888;

-- 删除重复历史数据
UPDATE resource_resource_translation AS rrt LEFT JOIN (SELECT MAX(id) AS max_id FROM resource_resource_translation GROUP BY module, res_lang_code, lang_code,is_deleted) AS max_records ON rrt.id = max_records.max_id SET rrt.is_deleted = rrt.id WHERE max_records.max_id IS NULL;

9. 启动后端服务进行自动升级

10.启动后执行SQL( 逐行执行!!!)

  • 用户/权限数据修复
-- 查询完成记录结果 U00001001
select code from user_pamirs_user where id = 10001;

-- 更新用户表
update user_pamirs_user set code = '10000' where id = 10000;
update user_pamirs_user set code = '10001' where id = 10001;
update user_pamirs_user set source = 'BUILD_IN' where id in (10000, 10001, 10086, 10088, 8848);
update user_pamirs_user set source = 'MANUAL' where source is null;

-- 迁移用户密码
insert into user_pamirs_password (id, user_id, `password`, initial_password) select id, id, `password`, initial_password from user_pamirs_user where is_deleted = 0 and id not in (select user_id from user_pamirs_password where is_deleted = 0);

-- 查询完成记录结果 336327172278978337
select id from auth_auth_role_type where code = 'SYSTEM';

-- 更新角色类型表(使用上面的记录替换where条件后的id)
update auth_auth_role_type set `name` = `type` where `name` is null;
update auth_auth_role_type set id = 10000, source = 'BUILD_IN'  where id = 336327172278978337;
update auth_auth_role_type set source = 'MANUAL' where source is null;
update auth_auth_role set code = name where code is null or code = '' and is_deleted = 0;

-- 查询完成记录结果
-- id                               code
-- 336327172278978338   R00001
-- 441930750116663818   R00002
-- 336336715696312723   R00003
select id,code,name from auth_auth_role where code in ('R00001', 'R00002', 'R00003');

-- 更新角色表(使用上面的记录替换where条件后的id)
update auth_auth_role set id = 10001, source = 'BUILD_IN' where id = 336327172278978338;
update auth_auth_role set id = 10002, source = 'SYSTEM' where id = 441930750116663818;
update auth_auth_role set id = 10003, source = 'SYSTEM' where id = 336336715696312723;
update auth_auth_role set source = 'MANUAL' where source is null;

-- 更新用户角色关联表(使用上面的记录替换where条件后的id)
update auth_user_role_rel set role_id = 10001, source = 'BUILD_IN' where role_id = 336327172278978338;
update auth_user_role_rel set role_id = 10002, source = 'SYSTEM' where role_id = 441930750116663818;
update auth_user_role_rel set role_id = 10003, source = 'SYSTEM' where role_id = 336336715696312723;
update auth_user_role_rel set source = 'MANUAL' where source is null;
update auth_user_role_rel set active = true where active is null;

-- 更新权限组关联角色表(使用上面的记录替换where条件后的id)
update auth_auth_group_role_rel set auth_role_id = 10001 where auth_role_id = 336327172278978338;
update auth_auth_group_role_rel set auth_role_id = 10002 where auth_role_id = 441930750116663818;
update auth_auth_group_role_rel set auth_role_id = 10003 where auth_role_id = 336336715696312723;

-- 查询超级管理员组并记录结果 336336715696312731
select id from auth_auth_group where name = '超级管理员组';

-- 删除超级管理员组所有权限配置及权限项(使用上面的记录替换where条件后的id)
update auth_resource_permission set is_deleted = 1 where id in (select resource_permission_id from auth_auth_group_permission_rel where auth_group_id = 336336715696312731) and is_deleted = 0;
update auth_auth_group_permission_rel set is_deleted = 1 where auth_group_id = 336336715696312731 and is_deleted = 0;
update auth_auth_group set is_deleted = 1 where id = 336336715696312731 and is_deleted = 0;
update auth_auth_group_role_rel set is_deleted = 1 where auth_group_id = 336336715696312731 and is_deleted = 0;
update auth_auth_group_role_rel set is_deleted = 1 where auth_role_id not in (select id from auth_auth_role where is_deleted = 0);
update auth_auth_group_role_rel set is_deleted = 1 where auth_group_id not in (select id from auth_auth_group where is_deleted = 0);
update auth_auth_group_menu_rel set is_deleted = 1 where permission_id is null and is_deleted = 0;
  • 翻译数据修复
UPDATE resource_resource_translation_item set scope='MODULE' where scope is null and is_deleted=0;

集成设计器数据修复

UPDATE designer_eip_connector_resource SET interface_name = id WHERE (interface_name IS NULL OR interface_name = '')  AND is_deleted = 0;

11. 启用用户访问(如内外网分离的情况下,先启动内网访问即可)

PS: 如无旧版权限,或弃用旧版配置的权限,此步骤可省略

  1. 使用admin用户登录,并进入管理中心模块。
  2. 选择角色管理菜单项,点击一键迁移旧版权限
  3. 观察后端服务日志,迁移过程可能耗费时间较长,不同环境配置的超时时间不同,可能导致接口超时,但后端服务仍在继续运行,请根据后端服务日志确定迁移过程是否完成。迁移过程请保证没有用户进行访问和操作。
  4. 当看到关键字Auth migrate data cast time时,表示权限数据已迁移完成。
  5. 所有旧版权限已完成迁移。

12. 移除权限兼容依赖(如与设计器公用base库,请忽略此步骤)

在启动工程中移除下列依赖:

<!-- auth compatible -->
<dependency>
    <groupId>pro.shushi.pamirs.core</groupId>
    <artifactId>pamirs-auth-compatible</artifactId>
</dependency>

13. 前端同步升级

前端打开package.json,把里面@kunlun/开头的包的版本号,从~4.7.0改为~5.0.0,然后重新安装依赖

pc端按文档5.x前端升级事项处理好里面的变动内容

移动端按文档移动端5.0.x启动、打包代码报错处理好里面的变动内容

14. 升级完成

Congratulations!

升级常见问题

使用管理员登录后提示【未找到入口应用或无权限访问】

原因:未按照文档关闭用户访问,在修改数据库前有其他请求访问后端服务,导致缓存中的用户角色信息错误

解决方案:
使用命令清理redis中用户角色缓存即可。

创建redis-clear.sh脚本,修改$host、$port、$pwd等相关变量后,执行该脚本即可。

#!/bin/bash

$host=127.0.0.1
$port=6379
$pwd=Abc@1234
$database=0

redis-cli -h $host -p $port -a "$pwd" -n $database --scan --pattern 'pamirs:auth:role:*' | xargs redis-cli -h $host -p $port -a "$pwd" -n $database del

脚本作用:连接指定redis服务端,扫描所有pamirs:auth:role:*的匹配key,并全部删除。

进入翻译模块后显示【暂无首页,请联系管理员】

PS:其他模块若出现类似问题,也可使用该步骤尝试解决。

  1. 执行SQL脚本
    update base_module set home_page_model = null, home_page_name = null where module = 'translate' and is_deleted = 0;

脚本作用:新版模块首页逻辑变更,原模块首页数据不再通过代码更新,因此需要手动置空home_page_model和home_page_name字段。默认将使用default_home_page_model和default_home_page_name查找首页。

  1. 执行redis命令
    del base.Module:translate:module_module
    del base.Module:translate:module_name

脚本作用:新版模块数据不再通过数据库直接返回,而是优先通过redis缓存中的数据返回。删除指定元数据的redis缓存,运行时会重新从数据库将元数据写入redis缓存,从而达到缓存刷新的目的。

  1. 进入其他模块,刷新页面,再尝试进入翻译模块。

Oinone社区 作者:张博昊原创文章,如若转载,请注明出处:https://doc.oinone.top/version/11400.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
张博昊张博昊
上一篇 2024年5月25日 pm3:40
下一篇 2024年5月25日 pm4:47

相关推荐

  • 5.1.0版本bugfix:优化sql_record可以无需配置存储路径,请升级对应版本

    版本号: 5.1.16 版本发布日期:2024.10.23更新要点:优化sql_record可以无需配置存储路径 5.1.16 版本 升级说明及步骤(已升级为5.0.0版本忽略) 此版本与4.7.8版本的兼容方案如下,请严格参照升级说明及步骤进行1、【重要】升级前备份base库和用户权限模块所在的库 2、【重要】升级过程执行SQL严格按照升级文档中的步骤执行。特别注意:部分SQL是要求【发布前执行】,部分SQL是要求【发布后执行】 5.0.0升级详细说明及步骤 升级内容(5.1.0) 优化sql_record可以无需配置存储路径。默认使用当前运行时路径。 请尽可能保证业务工程前后端服务以及设计器同步升级前端服务仅需重新执行npm install即可自动升级到最新版本 版本包信息 Oinone平台部署及依赖说明(v5.0) 未使用到的版本号请忽略,按项目中使用到的进行替换。 <!– 平台基础 –> <pamirs.middleware.version>5.0.3</pamirs.middleware.version> <pamirs.k2.version>5.1.8</pamirs.k2.version> <pamirs.framework.version>5.1.15</pamirs.framework.version> <pamirs.boot.version>5.1.9</pamirs.boot.version> <pamirs.distribution.version>5.1.9</pamirs.distribution.version> <!– 平台功能 –> <pamirs.metadata.manager>5.1.2</pamirs.metadata.manager> <pamirs.designer.metadata.version>5.1.3</pamirs.designer.metadata.version> <pamirs.core.version>5.1.24</pamirs.core.version> <pamirs.workflow.version>5.1.9</pamirs.workflow.version> <pamirs.workbench.version>5.1.0</pamirs.workbench.version> <pamirs.data.visualization.version>5.1.4</pamirs.data.visualization.version> <!– 设计器 –> <pamirs.designer.common.version>5.1.3</pamirs.designer.common.version> <pamirs.flow.designer.base.version>5.1.4</pamirs.flow.designer.base.version> <pamirs.workflow.designer.version>5.1.3</pamirs.workflow.designer.version> <pamirs.model.designer.version>5.1.4</pamirs.model.designer.version> <pamirs.ui.designer.version>5.1.9</pamirs.ui.designer.version> <pamirs.data.designer.version>5.1.2</pamirs.data.designer.version> <pamirs.dataflow.designer.version>5.1.1</pamirs.dataflow.designer.version> <pamirs.eip.designer.version>5.1.3</pamirs.eip.designer.version> 注意镜像名称变化 镜像说明 所有镜像均使用docker manifest支持amd64和arm64架构。如镜像拉取过慢,可在对应镜像Tag添加-amd64、-arm64后缀获取单一架构镜像。 docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.1:5.1.16-amd64 docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.1:5.1.16-arm64 镜像拉取 镜像或JAR版本:5.1.16 体验镜像:(所有中间件及前后端服务,包含全部设计器) docker pull harbor.oinone.top/oinone/oinone-designer-full-v5.1:5.1.16 部署镜像:(包含前后端服务,包含全部设计器) docker pull harbor.oinone.top/oinone/oinone-designer-mini-v5.1:5.1.16 流程设计器镜像:(包含前后端服务,仅包含流程设计器) docker pull harbor.oinone.top/oinone/workflow-designer-v5.1:5.1.16 后端镜像:(仅包含后端服务,包含全部设计器) docker pull harbor.oinone.top/oinone/designer-backend-v5.1:5.1.16 前端镜像:(仅包含前端服务,包含全部设计器) PS:前端镜像版本为独立版本,与其他镜像版本不同。原基础镜像为nginx-1.21.0版本,从5.0.7版本开始使用nginx-1.24.0版为基础镜像 docker pull harbor.oinone.top/oinone/designer-frontend-v5.1:5.1.23 独立部署所有设计器JAR:(后端服务,包含所有设计器)pamirs-designer-boot-v5.1-5.1.16.jarpamirs-designer-boot-v5.1-latest.jar 独立部署流程设计器JAR:(后端服务,仅包含流程设计器)pamirs-workflow-designer-boot-v5.1-5.1.16.jarpamirs-workflow-designer-boot-v5.1-latest.jar 后端无代码设计器Jar包启动方法 如果您有任何问题、建议或反馈,请随时联系我们。为了获得最佳体验,请及时更新至最新版本。我们将继续努力改进产品,提供更好的服务。谢谢!

    2024年10月23日
    00
  • 正式版发布:Oinone 5.7.0 版本 新增打印设计器、低无一体,邀您体验

    版本号: 5.7.0 版本发布日期:2025.02.13更新要点:新增打印设计器、低无一体 5.7.0 版本 升级说明及步骤(已升级为5.0.0版本忽略) 5.7.x版本以后无法通过4.7.8版本进行升级,请先升级到5.2.x版本进行权限迁移后再升级至5.7.x版本 启动工程关于pamirs包的扫描顺序需要进行修复 @ComponentScan( basePackages = { "pro.shushi.pamirs", } ) 20250328升级内容 镜像版本升级: 5.7.4.10 –> 5.7.4.11 后端版本升级:5.7.4.9 修复在某些特殊情况下启动时,首页元数据保存错误的问题 修复界面设计器在2023年3月之前的视图无法正常发布的问题 20250320升级内容 镜像版本升级: 5.7.4.8 –> 5.7.4.10 前端版本升级 后端版本升级:5.7.4.8 修复启动初始化Bean顺序导致空指针的问题 修复模块依赖转换错误的问题 修复跨模块继承元数据在包含jar包依赖时计算错误的问题 移除对无代码模块自动生成视图的支持 修复URL链接动作元数据无法填充compute的问题 修复工作流审批详情获取数据错误的问题 支持退回流程上文中任意人工节点 业务流程、工作流详情, 自定义审批人信息补充 修复界面设计器保存菜单时导致元数据反解析错误的问题 20250317升级内容 镜像版本升级: 5.7.4.7 –> 5.7.4.8 前端版本升级 后端版本升级 修复多对多关系字段在某些特殊场景下无法正确提交的问题 修复在低代码模型中添加的无代码字段无法正确导出的问题 20250313升级内容 镜像版本升级: 5.7.4.6 –> 5.7.4.7 前端版本升级 后端版本升级 修复集成设计器soap接口调用失败的问题 修复字段权限模型搜索显示异常的问题 修复导出时表达式未正确解析的问题 修复单用户模式下session未正确续约的问题 修复在事务中使用数据审计导致内存数据变更的问题 修复自定义顶部栏动作权限校验失败的问题 20250311升级内容 镜像版本升级: 5.7.4.5 –> 5.7.4.6 前端版本升级 后端版本升级 流程设计器新增事务配置 webService接口来源上下文修改 流程参数传递 修复行内编辑失效 修复文件名包含 % 导致解析失败 20250310升级内容 镜像版本升级: 5.7.4.4 –> 5.7.4.5 修复界面设计器属性优化导致的元数据必填配置填充到视图的问题 20250306升级内容 镜像版本升级: 5.7.4.1 –> 5.7.4.4 前端版本升级 后端版本升级 修复一对多/多对多表格导入导出无权限的问题 修复表尾统计无法正确配置的问题 修复启动时元数据保存错误的问题 修复在特殊情况下导出集成设计器关联关系查询错误的问题 修复设计器镜像的内置manifest.js错误导致无法使用自定义组件的问题 修复应用中心无法清除上游模块的问题 20250304升级内容 镜像版本升级: 5.7.4 –> 5.7.4.1 前端版本升级 后端版本升级 新增eip注解支持动态协议参数配置 新增树形表格支持默认全部展开配置 新增树视图的树组件支持配置默认展开层级 新增应用中心绑定首页支持URL链接动作 修复首页权限节点未正确加载动作的问题 修复管理权限叶节点展开按钮的展示问题 修复应用中心权限控制 修复打印设计器页面尺寸修改不生效的问题 修复打印设计器系统字段无法正常设计的问题 修复打印设计器合并单元格后无法正常打印的问题 修复打印设计器多值文本无法正确展示属性面板的问题 修复前端多对多提交在某些情况下无法正确提交数据的问题 修复表格一对多文件上传组件缺失的问题 修复表格展开行设置为表单时无法正常编辑的问题 20250301升级内容 镜像版本升级: 5.7.2.2 –> 5.7.4 前端版本升级 后端版本升级 修复系统权限-数据权限-源码模式无法保存的问题 修复datavi不再设计时数据运行的问题 升级内容(5.7.0) 新增打印设计器功能 新增后端低无一体 工作流支持控制明细表中字段的数据权限 新增数据库发布为开放接口 修复集成应用发布为开发接口Body和Query参数无法识别问题 修复发布为开发接口后,再编辑开放接口,请求报“函数执行错误”问题 工作流本地调用找不到指定类错误信息增加类路径 启动时保存变更环境信息,提供差异环境信息及变更人查询 发布为开放接口时同步忽略日志频率配置 修复开放接口不能接收header参数的问题 修复开放接口编辑页设置忽略日志频率配置无效的问题 数据可视化数据库文件集图表导出 集成设计器数据库文件集导出 修复详情Tabs组件无法配置默认激活的问题 修复移动端流程详情里面的的动作无权限报错 修复VueOioProvider配置了copyrightStatus: false 不生效 移动端登录页的版权信息显隐支持配置 修复翻译工具栏无法控制权限的问题 应用中心新增绑定URL链接作为应用首页 应用中心新增配置上游模块功能(同低代码的upstreams配置,需重启后生效) 表格的文件和图片组件新增行内编辑配置 修复低代码模块导出元数据报错的问题 工作流站内信过滤:使用文档 已退回详情 业务工程新增依赖项 <!– print –> <dependency> <groupId>pro.shushi.pamirs.core</groupId> <artifactId>pamirs-print-api</artifactId> </dependency> <dependency> <groupId>pro.shushi.pamirs.core</groupId> <artifactId>pamirs-print-core</artifactId> </dependency> <dependency> <groupId>pro.shushi.pamirs.core</groupId> <artifactId>pamirs-print-view</artifactId> </dependency> 业务工程新增配置项 pamirs: boot: modules: – print # 打印运行时 设计器新增配置项 pamirs: boot: modules:…

    2025年2月13日
    00
  • 4.7.8.16版本升级说明-20240618

    版本号: 4.7.8.16 版本发布日期:2024.06.18更新要点:修复界面设计器创建菜单异常的问题 4.7.8.16 版本 升级内容 修复界面设计器创建菜单异常的问题 版本包信息 未使用到的版本号请忽略,按项目中使用到的进行替换 <!– 平台基础 –> <pamirs.middleware.version>4.7.8.3</pamirs.middleware.version> <pamirs.k2.version>4.7.8.5</pamirs.k2.version> <pamirs.framework.version>4.7.8.11</pamirs.framework.version> <pamirs.boot.version>4.7.8.8</pamirs.boot.version> <pamirs.distribution.version>4.7.8.3</pamirs.distribution.version> <!– 平台功能 –> <pamirs.metadata.manager>4.7.8</pamirs.metadata.manager> <pamirs.core.version>4.7.8.10</pamirs.core.version> <pamirs.workflow.version>4.7.8.9</pamirs.workflow.version> <pamirs.workbench.version>4.7.8</pamirs.workbench.version> <pamirs.data.visualization.version>4.7.8</pamirs.data.visualization.version> <!– 设计器 –> <pamirs.designer.common.version>4.7.8</pamirs.designer.common.version> <pamirs.flow.designer.base.version>4.7.8.1</pamirs.flow.designer.base.version> <pamirs.workflow.designer.version>4.7.8</pamirs.workflow.designer.version> <pamirs.model.designer.version>4.7.8</pamirs.model.designer.version> <pamirs.ui.designer.version>4.7.8.9</pamirs.ui.designer.version> <pamirs.data.designer.version>4.7.8</pamirs.data.designer.version> <pamirs.dataflow.designer.version>4.7.8.1</pamirs.dataflow.designer.version> <pamirs.eip.designer.version>4.7.8.1</pamirs.eip.designer.version> 注意镜像名称变化 体验镜像:(所有中间件及前后端服务,包含全部设计器)docker pull harbor.oinone.top/oinone/oinone-designer-full-v4.8:4.8.7.1 部署镜像:(包含前后端服务,包含全部设计器)docker pull harbor.oinone.top/oinone/oinone-designer-mini-v4.8:4.8.7.1 流程设计器镜像:(包含前后端服务,仅包含流程设计器)docker pull harbor.oinone.top/oinone/workflow-designer-v4.8:4.8.7.1 流程设计器镜像:(包含前后端服务,仅包含流程设计器,非外部库镜像)docker pull harbor.oinone.top/oinone/workflow-designer-standard-v4.8:4.8.7.1 独立部署流程设计器JAR:(包含前后端服务,仅包含流程设计器)pamirs-workflow-designer-boot-4.8.7.1.jar 后端无代码设计器Jar包启动方法 如果您有任何问题、建议或反馈,请随时联系我们。为了获得最佳体验,请及时更新至最新版本。我们将继续努力改进产品,提供更好的服务。谢谢!

    2024年6月18日
    00
  • 4.7.8.14版本升级说明-20240603

    版本号: 4.7.8.14 版本发布日期:2024.06.03更新要点:修复流程日志-在存在循环节点的日志超时 4.7.8.14 版本 升级内容 修复流程日志-在存在循环节点的日志超时 版本包信息 未使用到的版本号请忽略,按项目中使用到的进行替换 <!– 平台基础 –> <pamirs.middleware.version>4.7.8.3</pamirs.middleware.version> <pamirs.k2.version>4.7.8.5</pamirs.k2.version> <pamirs.framework.version>4.7.8.11</pamirs.framework.version> <pamirs.boot.version>4.7.8.8</pamirs.boot.version> <pamirs.distribution.version>4.7.8.3</pamirs.distribution.version> <!– 平台功能 –> <pamirs.metadata.manager>4.7.8</pamirs.metadata.manager> <pamirs.core.version>4.7.8.10</pamirs.core.version> <pamirs.workflow.version>4.7.8.9</pamirs.workflow.version> <pamirs.workbench.version>4.7.8</pamirs.workbench.version> <pamirs.data.visualization.version>4.7.8</pamirs.data.visualization.version> <!– 设计器 –> <pamirs.designer.common.version>4.7.8</pamirs.designer.common.version> <pamirs.flow.designer.base.version>4.7.8.1</pamirs.flow.designer.base.version> <pamirs.workflow.designer.version>4.7.8</pamirs.workflow.designer.version> <pamirs.model.designer.version>4.7.8</pamirs.model.designer.version> <pamirs.ui.designer.version>4.7.8.7</pamirs.ui.designer.version> <pamirs.data.designer.version>4.7.8</pamirs.data.designer.version> <pamirs.dataflow.designer.version>4.7.8.1</pamirs.dataflow.designer.version> <pamirs.eip.designer.version>4.7.8.1</pamirs.eip.designer.version> 注意镜像名称变化 体验镜像:(所有中间件及前后端服务,包含全部设计器)docker pull harbor.oinone.top/oinone/oinone-designer-full-v4.8:4.8.6.1 部署镜像:(包含前后端服务,包含全部设计器)docker pull harbor.oinone.top/oinone/oinone-designer-mini-v4.8:4.8.6.1 流程设计器镜像:(包含前后端服务,仅包含流程设计器)docker pull harbor.oinone.top/oinone/workflow-designer-v4.8:4.8.6.1 流程设计器镜像:(包含前后端服务,仅包含流程设计器,非外部库镜像)docker pull harbor.oinone.top/oinone/workflow-designer-standard-v4.8:4.8.6.1 独立部署流程设计器JAR:(包含前后端服务,仅包含流程设计器)pamirs-workflow-designer-boot-4.8.6.1.jar 后端无代码设计器Jar包启动方法 如果您有任何问题、建议或反馈,请随时联系我们。为了获得最佳体验,请及时更新至最新版本。我们将继续努力改进产品,提供更好的服务。谢谢!

    2024年6月3日
    00
  • 5.x前端升级事项

    1.开放源码注意事项 前端从2024年7月23日发布的5.0.57版本开始,将前端组件相关的源码放到了npm包供大家方便调试和理解,该版本需要在原有启动工程的src目录下新增翻译相关的全局vue插件 插件下载地址 2.搜索区域的数据字典字段支持标签栏写法优化 下图为数据字段标签栏功能示意图 5.x之前是在SearchWidget.ts内通过属性和方法实现,5.x开始剥离出了SearchTabWidget组件来实现 以下为原本在SearchWidget.ts内的方法,现已不再提供 export class SearchWidget extends BaseSearchWidget { @Widget.Reactive() protected get cateFields(): string[]; @Widget.Reactive() protected get topCateModelField(): RuntimeModelField | undefined; @Widget.Reactive() protected get showTopCateAll(); @Widget.Reactive() protected get topCateFieldOptions(); @Widget.Reactive() protected get secondCateModelField(): RuntimeModelField | undefined; @Widget.Reactive() protected get showSecondCateAll(); @Widget.Reactive() protected get secondCateFieldOptions(); } 迁移到了SearchTabWidget.ts @SPI.ClassFactory( BaseElementWidget.Token({ viewType: ViewType.Search, widget: 'SearchTab' }) ) export class SearchTabWidget extends BaseElementWidget { @Widget.Reactive() protected get cateFields(): string[]; @Widget.Reactive() protected get topCateModelField(): RuntimeModelField | undefined; @Widget.Reactive() protected get showTopCateAll(); @Widget.Reactive() protected get topCateFieldOptions(); @Widget.Reactive() protected get secondCateModelField(): RuntimeModelField | undefined; @Widget.Reactive() protected get showSecondCateAll(); @Widget.Reactive() protected get secondCateFieldOptions(); } 3.视图动作执行的executeViewAction方法的第一个入参需要提供path参数来控制权限 export class DemoTableStringWidget extends TableStringFieldWidget { // ❌ 错误的写法,完全手写,无法拿到该动作在当前页面的权限路径参数(path) private oldGotoAction() { executeViewAction( { viewType: ViewType.Table, moduleName: 'resource', model: 'resource.ResourceCity', name: 'resource#市', // 注释掉的下面这行的path属性可能是动态的,所以无法在此处写死 // path: 'xxxx' } as RuntimeViewAction ); } // ✅ 正确的写法,将动作配置到当前页面中(不想展示可以隐藏), // 这样才能在解析页面的时候拿到下面有哪些动作,才可以在权限处管理该页面下的所有动作, // 页面进入后会从后端拿到该页面的所有动作极其权限信息,前端的自定义代码就根据动作名称拿到带了权限信息的“动作Action”实例 private newGotoAction() { const viewAction = this.model.modelActions.find((a) => a.name === 'resource#市'); executeViewAction(viewAction); } }

    2024年7月23日
    00

Leave a Reply

登录后才能评论