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,測試流程如下:
不走分支流程(正常運行):
開始->請假申請->領導審批->審覈通過(賦值audit1)->結束
走分支流程(循環運行):
開始->請假申請->領導審批->審覈不通過(賦值audit0)->請假申請->領導審批->審覈通過(賦值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