12下一页
发帖
查看: 12287|回复: 14

表单修改权限问题

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-20 10:22:45 | 显示全部楼层 |阅读模式
版本:6.2.0
表单流转后,拟稿人可以对表单进行直接修改保存。通过已办打开,表单在可编辑状态,并且操作中有保存、调度、重置处理人按钮。正常表单无这三个按钮,且表单是在浏览状态,无编辑框。
但是不是所有表单都这样,表单设置都是一样的。不清楚是那里问题?麻烦管理员帮忙诊断一下,谢谢!
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-20 10:52:07 | 显示全部楼层
升级6.2.1后问题仍然存在。
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
40134
发表于 2021-7-21 10:04:08 | 显示全部楼层
保存、调度、重置 应该是您登陆的人估计是管理员的问题。
请用普通用户登录
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-21 12:32:40 | 显示全部楼层
我检查了设置,并没有管理员权限。同账号,部分流程这样,部分流程不这样!
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-21 13:17:57 | 显示全部楼层
我用eclipse远程调试了下,
发现在ActionGetWorkOrWorkCompleted.java中的方法有不同:
private CompletableFuture<Wo> getFuture(EffectivePerson effectivePerson, String workOrWorkCompleted) {
        return CompletableFuture.supplyAsync(() -> {
            Wo wo = null;
            try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
                Business business = new Business(emc);
                Work work = emc.find(workOrWorkCompleted, Work.class);
                if (null != work) {
                    wo = this.work(business, effectivePerson, work);
                } else {
                    WorkCompleted workCompleted = emc.flag(workOrWorkCompleted, WorkCompleted.class);
                    if (null != workCompleted) {
                        wo = this.workCompleted(business, effectivePerson, workCompleted);
                    }
                }
            } catch (Exception e) {
                logger.error(e);
            }
            return wo;
        });
    }
正常流程:workOrWorkCompleted在表pp_c_work中没有记录,此时没有保存、调度、重置按钮。
问题流程:workOrWorkCompleted在表pp_c_work中有记录,有保存、调度、重置按钮。
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-21 14:03:38 | 显示全部楼层
进一步调试发现问题了。
在business判断是否有应用或流程管理权限时,方法canManageApplicationOrProcess
effectivePerson中的unique不等于org_person中的xunique,如何来的不详。
我们oa是直接同步企业微信的帐号的,unique大部分帐号跟邮箱帐号是一致的。
distinguishedName中也包含这个唯一名,即姓名@帐号@P,即姓名@帐号前缀@帐号域名@P,
因@分隔符与邮箱@一致,我怀疑是那里处理effectivePerson.unique的时候的问题。effectivePerson.unique=帐号域名
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-21 14:07:43 | 显示全部楼层
果然,effectivePerson.unique是通过正则表达式去匹配的@与P之间的字符串,导致xunique是邮箱帐号时,只能截取到域名,在其他地方需要判断的时候会出错。因为任何帐号都包含域名,所以只要有管理员就会认为任何人都是管理员。这也是上面问题的原因了,因为有些applicaiton中设置了管理员,有些没有。
回复

使用道具 举报

升级   5.33%

4

主题

14

回帖

58

积分

注册会员

Rank: 2

积分
58
发表于 2021-7-21 15:15:11 | 显示全部楼层
经测试:unique为“姓名@帐号前缀@帐号域名@P”的形式时,
EffectivePerson.name = 姓名@帐号前缀
EffectivePerson.unique = 帐号域名
类似的还不少,
com.x.base.core.project.organization.OrganizationDefinition
com.x.organization.assemble.express.AbstractFactory
com.x.organization.core.entity.PersistenceProperties

我先简单处理了,
Pattern pattern = Pattern.compile("^(\\S[^\\@]+)\\@(\\S+)\\@P$");

因涉及面很广,等待官方修复~!
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
40134
发表于 2021-7-23 10:15:23 | 显示全部楼层
表单流转后,拟稿人可以对表单进行直接修改保存
如果拟稿人没有权限(不是管理员),理论上没有权限修改!
我这边测试一直无法直接修改!

--------------------------------------------------------------------
ps:您的账号都是微信直接同步的是吧。
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
40134
发表于 2021-7-23 10:33:00 | 显示全部楼层
您是否可以截图用户 一张,一个很多@的用户,测试也是正常的。
回复

使用道具 举报

12下一页
发帖

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread