新增功能
电子表格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 |
{
"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。 对应代码如下:
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使用手册》
DeepQL新增枚举值信息函数
预置枚举值信息函数,可通过该函数获取指定模块下->指定对象中->指定枚举值属性的指定信息,不指定信息则默认为枚举值名称
dm::get_enum_info(module_name: str, object_name: str, enum_name: str, enum_prop: str = 'name') -> json
# 通过该函数获取需求状态的名称信息
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']
}
对象概览优化属性/链接表格
对象概览动态计算列展示计算属性/链接的表达式,枚举值列展示枚举值属性的信息
数据管理优化
数据管理筛选逻辑修复,包括:筛选后排序、复制、删除等操作
数据管理筛选icon回显
数据管理布局优化,编辑态展示当前已操作信息
层级链接parent及其他自我链接的独立编辑页面中,业务主键(source)与链接(target)列都改为对象数据选择器(单选),用于选择当前对象数据
支持UX基于领域模型导出数据
提供UX接口,支持导出指定模型中所有对象数据到一个Excel文件,可基于模型主对象按业务主键或按数据源过滤条件、模糊搜索条件过滤数据
本次迭代重新梳理定义了组件分类,且对UI样式做了优化
回到顶部
咨询热线