场景描述
用户字段 X (多选,名下有员工 A,B,C,D....Z)
当用户仅更新人员字段触发工作流时,如何知道用户是增加了人员还是减少了人员,并知道具体增减了人员具体是谁。(只想知道变更数据,而不是结果数据,不希望通过审批流或按钮实现)
该问题主要解决人员非离职变动时 10 个应用 30 张表字段权限自动分配。
冷石然(Team) 2023-09-22 18:01:25离职继承数据已进入迭代计划。权限可以用组织角色来搞。
目前差不多用其他方式实现,15 个人天的研发成本,太贵了,真不知道以后谁能接的住这么复杂的逻辑。
加一个字段 保存上次的用户 ID 成员多选下,每次变更对比这个。对比完成,接口处理完成后 后然后更新
听人劝吃饱饭 2023-09-25 10:13:38搞这么麻烦,又不能实现,工作流触发没法取更新前的值
用数量完全判断不出变更同数量的人员,它就只能对比两个新旧成员的包含关系去判断
新[a,b] 旧[a,c],互相跑包含,ab-->[a,c],新旧跑增数据,ac-->[ab],旧新跑减数据而且有个终极漏洞,快捷编辑是不触发更新和公式,函数的
- 因为工作流没法更新前的值所以新增了一个【成员 1】字段作为更新之前的副本。
- 当更新成员字段的时候将【成员 2】为本次更新后的副本
- 数量是记录变更前的值。变更后的值是用 JS 代码获取。去判断 大于、等于、小于三个分支。(因为三个分支会走不同的行为流程)
- 您说的这个包含关系。[a,c]为原来,[a,b]变更后的 判断如果 js 代码判断的数量等于记录的数值就表示产生了您说的这种情况
- 可以在[a,c]子流程中:执行成员 2[a,b]如果存在该成员就减去这个成员。剩下的就是新添加的成员。
- 对于减少的成员。成员 3 为成员 2 的副本。反过来调用[a,b]子流程执行:成员 1[a,c]如果存在当前成员就减少这个成员留下来的就是本次减少的人
- 最后将【成员 1】的值又更新为字段 X 的副本(为下次更新前的值)。清空本次的【成员 2】与【成员 3】
乱世浮生 2023-09-22 18:05:16
- 表中增加三个字段【数值】num1 字段,【成员】成员 1 字段用来记录更新之前的成员,【成员】成员 2 字段记录更新之后的成员。
- 【 num1】的初始值为【字段 X】的个数,【成员 1】的初始值为【字段 X】
- 每次更新【字段 X 后】利用 JS 代码计算出【字段 X】的成员数量【num2】。
- 判断【num2】与【num1】的大小
- if【num2】>【num1】说明成员数量增加了获取【成员 1】字段利用子流程在【成员 2】中一直减少子流程的人员。【成员 2】保留下的就是新增的了
- if【num2】<【num1】说明成员数量减少了获取【成员 2】字段利用子流程在【成员 1】中一直减少子流程的人员。【成员 1】保留下的就是新增的人
- 将【num2】得值赋值给【num1】
搞这么麻烦,又不能实现,工作流触发没法取更新前的值
用数量完全判断不出变更同数量的人员,它就只能对比两个新旧成员的包含关系去判断
新[a,b] 旧[a,c],互相跑包含,ab-->[a,c],新旧跑增数据,ac-->[ab],旧新跑减数据
而且有个终极漏洞,快捷编辑是不触发更新和公式,函数的
- 表中增加三个字段【数值】num1 字段,【成员】成员 1 字段用来记录更新之前的成员,【成员】成员 2 字段记录更新之后的成员。
- 【 num1】的初始值为【字段 X】的个数,【成员 1】的初始值为【字段 X】
- 每次更新【字段 X 后】利用 JS 代码计算出【字段 X】的成员数量【num2】。
- 判断【num2】与【num1】的大小
- if【num2】>【num1】说明成员数量增加了获取【成员 1】字段利用子流程在【成员 2】中一直减少子流程的人员。【成员 2】保留下的就是新增的了
- if【num2】<【num1】说明成员数量减少了获取【成员 2】字段利用子流程在【成员 1】中一直减少子流程的人员。【成员 1】保留下的就是新增的人
- 将【num2】得值赋值给【num1】
听人劝吃饱饭 2023-09-22 17:09:52关于人员这个东西,现在非常难搞
一个是数据继承,一个是权限
难搞在什么地方呢,他人在通讯录(架构),但权限不在
离职继承数据已进入迭代计划。权限可以用组织角色来搞。
参赛选手 2023-09-22 16:59:33如果按这么去操作就要重复建 30 个不同的表,给一个 API 接口能历史日志也行啊。
同一张表加隐藏字段就可以了。日志的 API 要明年了。
关于人员这个东西,现在非常难搞
一个是数据继承,一个是权限
难搞在什么地方呢,他人在通讯录(架构),但权限不在
冷石然(Team) 2023-09-22 14:39:00加一个字段用于比对结果,比对完了把这个字段更新成一样的,下次更新时重复这个流程。
核心点就是,想要知道变更前后的值,你就得把这个历史变更在另外一个地方记录才能做新旧对比。
如果按这么去操作就要重复建 30 个不同的表,给一个 API 接口能历史日志也行啊。
加一个字段用于比对结果,比对完了把这个字段更新成一样的,下次更新时重复这个流程。
核心点就是,想要知道变更前后的值,你就得把这个历史变更在另外一个地方记录才能做新旧对比。