2024 3月1日

新增功能

  • 电子表格2.0

    • 浮动行表跳转

  • UX

    • 增加外部变量定义,且跳转UX可通过已定义的外部变量进行

    • ux支持模型导出

  • 工作流

    • 新增单个流程发布接口

  • 凭证模型

    • 增加凭证行权限

  • deepcube-SDK

    • 按照度量值过滤计算范围

  • DeepModel

    • DeepQL新增枚举值信息函数

  • 领域模型

    • 支持UX基于领域模型导出数据

功能优化

  • 电子表格2.0

    • 动态表override member支持筛选器和偏移

    • 动态表计算:分母为0的情况,计算后返回空

  • 工作流

    • 数组类型映射优化

    • 完成任务增加附件配置

    • Cron定时功能相关优化

  • 合并流程(新)

    • 单元日志增加下级合并计算记录

    • 合并流程表格使用视图优化

  • 凭证模型

    • 过账配置初始化映射值

    • 凭证功能可选逻辑范围优化

  • DeepModel

    • 对象概览优化属性/链接表格

    • 数据管理优化

  • 平台

    • 元素对象目录更新

以下是详细更新说明


需求背景:之前标准跳转功能已经支持了点击动态表或DF公式能配置跳转规则,本次增加点击浮动行表配置跳转规则。

跳转逻辑/效果:点击浮动行表某一行,返回本行字段+数据列表,并且传参到目标对象,打开目标表格。

需求背景:原先override member仅支持明确的单一维度成员(用某个维度成员对命中区域内的所有单元格的该维度进行覆盖),本次支持member与筛选器挂钩。

需求背景:当动态表公式的分母为0时,原先返回的结果为0,尽管可以通过叠加判断的方式自己实现返回空,但是if要用到刀刃上。因此本次迭代增加逻辑,当分母为0等计算错误的情况,返回值直接为空。 注意:不影响后续计算。

过去ux跳转只能通过$urlquery表达式进行,虽然较灵活简易,但页面较多后,记忆键值对不便,跳转功能也无法提前获取到变量而进行配置。 因此,类似于原来的仅支持获取【变量元素】的变量,增加了【外部变量】概念,专用于获取url中的键。

需要使用的控件,可通过ux变量的形式选择即可。

原配置的Urlquery仍有效,但后续跳转页面动作会自动获取外部变量,因此后续新页面需使用外部变量进行。

表格中新增表格按钮【导出模型数据】,配置后支持一键导出模型数据。

点击【导出】,前往下载中心即可下载导出的Excel文件,导出数据与界面查询结果一致。

导出的Excel数据展示方式为按模型结构导出多个sheet,效果如下:

接口地址:/deepflow-server3-0/process/api/deploy 请求方式:POST 请求参数:

参数名称

参数说明

请求类型

是否必须

数据类型

schema

app

应用id

header

true

string

cookie

cookie

header

true

string

processSingleDeployDTO

processSingleDeployDTO

body

true

ProcessSingleDeployDTO

ProcessSingleDeployDTO

-elementDetail

body

false

ElementDetailDTO

ElementDetailDTO

– elementName

元素名

body

true

string

–folderId

元素文件ID,path和folderId二选一

body

false

string

–path

元素路径, path和folderId二选一

body

false

string

-versionName

版本名称

body

false

string

space

空间id

header

true

string

user

用户id

header

false

string

Copy
{
  "elementDetail": {
    "elementName": "workflow",
    "folderId": 123,
    "path": "/workflow"
  },
  "versionName": "test1"
}

当全局变量为数组时:

  • 单人任务(新)/多人任务(新)-任务监听-事件监听-{订阅类型=订阅撤回},增加输入方式「执行信息」(但暂无数组类型的预置执行信息参数可选)

  • 单人任务-任务监听-事件监听-{订阅类型=通用消息},增加输入方式「消息参数」,可选同类型参数

  • 等待消息-高级-数据映射,增加输入方式「消息参数」,可选同类型参数

单人任务(新)多人任务(新)节点,当动作的执行逻辑是【完成任务】时,增加二级配置项【附件选项】,可选项:

  • 不启用:默认选项

  • 启用

用以控制完成任务时,是否可以上传附件:

注意:默认不启用附件,如需启用,需要重新配置工作流后发布,方可使用!

增加插入工具和预览最近10次执行时间(以当前时间为基准进行预览,但实际执行时会以发布时间为基准)。 Cron表达式的默认值:0 0 * * * ? *(从发布时间开始后,每小时执行) Cron表达式插入工具:

手动输入Cron表达式,也可以反解析至插入工具进行展示(适合对Cron表达式熟悉的用户使用):

预览功能:建议使用以避免输入无效Cron表达式

其他调整:首次激活时间调整为定时策略的二级配置项(因为该配置项对Cron表达式无效)

原先操作了父级的合并/强制合并,可能也会改写下级的计算、折算、贡献状态,但历史看板不会记录相应下级的计算历史,本次完善所有流程单元级操作,主要包括以下操作:

  • 合并(consolidate):补充下级操作历史

  • 强制合并(consolidate_force):补充下级操作历史

  • 状态重置:cub保存回调导致的数据变更操作

本次迭代对合并流程表格前端底层技术进行了优化调整,支持列筛选和列宽调整

在凭证头权限的基础上,提供凭证行权限的配置,用于【凭证查看】权限:

配置【凭证查看】的条件时,支持到凭证行(其他权限项有凭证头权限就有全部凭证行的权限)。 如果不配置凭证行的条件,则不会对凭证行额外控制权限,即只要有头权限就有全部行权限。

效果: 管理员:能看到所有行(2行)

A公司用户:只能看到A公司的

B公司用户:只能看到B公司的

减少用户配置量,新增过账字段映射的配置时,自动将编码相同的值初始化出来(大小写不敏感),基本原则是:先找凭证头表中字段编码相同的、再找凭证行表中字段编码相同的。

根据业务场景,当前一些可选范围不合理,例如删除前后置不应该可选『过账』等,需要优化各节点的可选逻辑范围,优化后的可选范围如下:

逻辑

保存前置

保存后置

删除前置

删除后置

借贷平衡校验

净额计算-借正贷正

净额计算-借正贷负

过账(需启用)

校验(需启用)

自定义逻辑

···

在实际需求中,往往会遇到根据度量值进行条件判断,从而决定计算范围的场景。由于python语法层面的限制,deepcube SDK无法直接使用源生if else语法实现此类需求,但是用户可以使用when then otherwise语法来满足过滤计算范围的场景。 使用时,在when()中传入判断条件,如果条件判定为true则执行then()中的计算,否则执行otherwise()中的计算,或继续下一个when判断。 在计算处理时,它表示的语义是对待计算的目标集做条件过滤,满足when条件的数据做then语句中的计算,并赋值到目标集。 但是与普通的条件过滤不同,when语句中的条件可以跨维度做判断,比如用科目A的度量值做判断,影响科目B的计算范围。跨维度时,与loc计算的原则一样,只能一对一或多对一,不能一对多或多对多。

例如我们有如下动态表,行上配置的是12家entity,列上配置的是account,其中flag科目是文本类型,科目A-E则是数值类型:

比如我们的需求是, 上述数据块中,每行数据如果flag中保存的是“规则1”,则计算科目A=BC; 如果是“规则2”,则计算科目A=D2; 如果是“规则3”,则计算科目A=E。 对应代码如下:

Copy
from deepcube.cube.cube import DeepCube
from deepcube import when

def main(p1, p2):
    # 实例cube1对象
    cube1 = DeepCube('cube1')
    year = cube1.year
    period = cube1.period
    scenario = cube1.scenario
    version = cube1.version
    account = cube1.account
    category = cube1.category
    entity = cube1.entity

    cube1.init_data(
        [year['2022'], 
         period['1'], 
         scenario['Actual'], 
         category['NoCategory'], 
         version['Working'],
         entity['Total'].Base(),
         account['A', 'B', 'C', 'D', 'E', 'flag']])

    cube1.scope(year['2022'], period['1'], scenario['Actual'], category['NoCategory'], version['Working'])
    # 如果flag中保存的是“规则1”,则计算科目A=B*C;如果是“规则2”,则计算科目A=D*2;如果是“规则3”,则计算科目A=E
    cube1.loc[account['A']] = when(cube1.loc[account['flag']].col('string_val') == '规则1').then(
        cube1.loc[account['B']] * cube1.loc[account['C']]).when(
        cube1.loc[account['flag']].col('string_val') == '规则2').then(
        cube1.loc[account['D']] * 2).when(
        cube1.loc[account['flag']].col('string_val') == '规则3').then(
        cube1.loc[account['E']])
    # 将计算结果写入Cube
    cube1.submit_calc()

更多详细规则和相关示例,请参考《deepcube使用手册》

  1. DeepQL新增枚举值信息函数

预置枚举值信息函数,可通过该函数获取指定模块下->指定对象中->指定枚举值属性的指定信息,不指定信息则默认为枚举值名称 dm::get_enum_info(module_name: str, object_name: str, enum_name: str, enum_prop: str = 'name') -> json

Copy
# 通过该函数获取需求状态的名称信息
with enum_mapping := dm::get_enum_info('appzauoyn184', 'Requirement', 'req_status')
# 查询需求名称、需求状态编码、需求状态中文名称
select Requirement {
    req_name,
    req_status,
    req_status_desc := <str>enum_mapping[.req_status]['zh-cn']
}

  1. 对象概览优化属性/链接表格

对象概览动态计算列展示计算属性/链接的表达式,枚举值列展示枚举值属性的信息

  1. 数据管理优化

  • 数据管理筛选逻辑修复,包括:筛选后排序、复制、删除等操作

  • 数据管理筛选icon回显

  • 数据管理布局优化,编辑态展示当前已操作信息

  • 层级链接parent及其他自我链接的独立编辑页面中,业务主键(source)与链接(target)列都改为对象数据选择器(单选),用于选择当前对象数据

  1. 支持UX基于领域模型导出数据

提供UX接口,支持导出指定模型中所有对象数据到一个Excel文件,可基于模型主对象按业务主键或按数据源过滤条件、模糊搜索条件过滤数据

本次迭代重新梳理定义了组件分类,且对UI样式做了优化

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send