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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章