2024 3月1日

新增功能

  • 电子表格2.0

    • 浮动行表跳转

  • UX

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

    • ux支持模型导出

  • 工作流

    • 新增单个流程发布接口

  • 凭证模型

    • 增加凭证行权限

  • deepcube-SDK

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

  • DeepModel

    • DeepQL新增枚举值信息函数

  • 领域模型

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

功能优化

  • 电子表格2.0

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

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

  • 工作流

    • 数组类型映射优化

    • 完成任务增加附件配置

    • Cron定时功能相关优化

  • 合并流程(新)

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

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

  • 凭证模型

    • 过账配置初始化映射值

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

  • DeepModel

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

    • 数据管理优化

  • 平台

    • 元素对象目录更新

以下是详细更新说明


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

1709202698066-652a4384-0a71-4990-8ee5-5875cda1fb4b

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

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

1709202973537-1929ae88-59a5-4611-a793-b4a269182cf3

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

1709203467720-9062a5e0-b45e-4f56-9f1a-d2c7b5d0534c

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

1709004557605-6c3ebd63-7f98-479b-9a23-2ef2ef6e5cf4 1709004588926-615229e8-f8f7-4c95-9978-2125cb394622

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

1709005056275-330decb5-22eb-4daa-9f65-a5ddb6fcaacb

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

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

1709264802493-c3192d59-0834-49c6-ab22-869f30916275

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

1709264892725-78964cd5-b7cb-4724-b2fb-debb953dcc06 1709264915409-e1163308-415b-4ddf-bace-d68e40a96767

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

1709265008785-c8682e9c-4ce7-413e-8e9f-d8188259af65 1709265129223-98bccb58-d567-441b-8f2f-0ac1af3732f9

接口地址:/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"
}

当全局变量为数组时:

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

1708929924819-f552677a-a7a5-4c7c-ae7b-035722373603

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

1708930115271-7097eceb-7bf1-4d1f-bb17-c3da8a2bcd65

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

1708930211808-d4495d3a-1be0-402b-a539-b434059cdf1a

1706702115782-6139bfe4-8851-4a51-8481-c4a124b4f3df

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

  • 不启用:默认选项

  • 启用

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

1708929591820-a1cd23bc-3c51-4ad2-ad7e-aa9e42df70bc

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

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

1708933243110-90555668-0d44-4a92-ac5e-26852a06372d

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

1708933199497-98611da9-5fca-4f8b-bdc8-733b4afb382f

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

1708932988805-07240ffa-f694-47b1-a757-3d89c493ffd5

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

1708933039692-acf73318-14af-4208-a648-5c98dd6c58be 1708933028660-1efa95b0-0757-44fe-9352-3585b18668f8

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

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

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

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

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

1709090748426-72dae23d-edba-478e-ac07-f878950eb380

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

1709189711603-1d2394f4-adf8-41c6-9487-e21d0cdcf337

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

1709189849206-0abeee24-fc1d-43a7-840f-5b2519e498c4

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

1709191214556-4a7258d8-fd98-489f-ba8d-12783bda1bb0

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

1709191506639-882685c9-0379-4aa6-a382-be4ca12d127d

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

1709191888273-e69de0f9-86d6-42b7-8cbe-013fb8f49785

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

8752268b-b43e-4177-b500-734f7646f382.gif

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

逻辑

保存前置

保存后置

删除前置

删除后置

借贷平衡校验

✅

✅

✅

❌

净额计算-借正贷正

✅

✅

❌

❌

净额计算-借正贷负

✅

✅

❌

❌

过账(需启用)

❌

✅

❌

❌

校验(需启用)

✅

✅

❌

❌

自定义逻辑

✅

✅

✅

✅

···

在实际需求中,往往会遇到根据度量值进行条件判断,从而决定计算范围的场景。由于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则是数值类型:

1708935951294-edf348a0-8f8e-4bf7-904f-80a8b22c0eec

比如我们的需求是, 上述数据块中,每行数据如果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']
}

1706693402133-68fb8136-de40-46b0-9e56-99893c61c521

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

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

1709017921677-a4bf3d67-4df2-48c8-9454-bf4fd54c0888

  1. 数据管理优化

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

1709016932909-e768c057-08f9-45a9-891a-360b11a3b438

  • 数据管理筛选icon回显

1709016841042-8c068d50-921b-47a6-b389-f84a1c6dafc4

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

1709017170184-f9b4e0fd-0dac-49b7-96d1-99c82c8375e7 1709017206765-e7c1ac42-79a5-4415-8521-20ad0edf85b0

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

1709017331753-c8831d60-30fb-41a7-957e-1054ab7661eb

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

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

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

1709086716414-2840fd19-31c2-47da-85c8-f121906351f2

回到顶部

咨询热线

400-821-9199