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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。