springboot2.0+activiti 7 整合(四)--遇到的那些坑(一)

1、认证问题

问题描述:

当springboot2.0集成activiti7时,activiti使用了身份认证,集成后直接访问报错如下:

{
    "timestamp": "2019-12-13T02:54:05.254+0000",
    "status": 401,
    "error": "Unauthorized",
    "message": "Unauthorized",
    "path": "/"
}

解决办法:

启动类添加(排除认证的自动装配):

@SpringBootApplication(exclude ={SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})

2、json结果集不返回NULL问题

问题描述:

集成后,springMVC返回的json结果集排除了null字段,比如定义返回结果集{id,name},如果name==null,返回结果集如下:

{
    "id": 1,
}

去掉了name字段

解决办法

在yml中添加(jackson可以控制json返回结果集是否显示null字段):

  jackson:
    default-property-inclusion: always

3、流程发起人initiator赋值问题

问题描述

我想保存流程的发起人,网上的解决办法是添加activiti:initiator的属性赋值,实际就是插入'act_hi_procinst'中START_USER_ID_字段,但是activiti7中没有identityService接口,所以额,identityService.setAuthenticatedUserId(``"zx"``);没用,initiator没法赋值。

解决办法

1、新建表关联流程(在用)

新建一张流程关联的表,可以把流程中的自己业务流程所需的资源都带上,比较灵活,降低与activiti的耦合,推荐。

2、直接手动插入START_USER_ID_(理论)

理论上来讲既然知道具体是那个表的字段了,可以根据processInstanceId手动插入发起人。

3、其他

activiti7应该有其他的解决方案,但是7的api一直没找到,源码看着头疼,而且第一种个人认为更适用于项目,整合之后就是分离独立。

4、流程变量问题

问题描述

请假流程图

如上图请假流程图,在网关位置有分支,变量为audit,测试流程如下:
不走分支流程(正常运行):
开始->请假申请->领导审批->审核通过(赋值audit==1)->结束
走分支流程(循环运行):
开始->请假申请->领导审批->审核不通过(赋值audit==0)->请假申请->领导审批->审核通过(赋值audit==1)->请假申请->...
当第一次赋值audit之后,后面继续使用taskService.complete(taskId,variables);赋值无法改变audit的值。

解决办法

在调用complete前,通过setVariable进行赋值

taskService.setVariable(taskId,"audit",audit);

原因在于act_ru_variable表,第一次在流程中赋值audit后,activiti认为这是这个流程中的变量,会保存在act_ru_variable表中,因为数据库已经存在相应的字段,后面再使用taskService.complete(taskId,variables);无法改变值,只能setVariable

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容