1、認(rèn)證問題
問題描述:
當(dāng)springboot2.0集成activiti7時(shí),activiti使用了身份認(rèn)證,集成后直接訪問報(bào)錯(cuò)如下:
{
"timestamp": "2019-12-13T02:54:05.254+0000",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/"
}
解決辦法:
啟動(dòng)類添加(排除認(rèn)證的自動(dòng)裝配):
@SpringBootApplication(exclude ={SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
2、json結(jié)果集不返回NULL問題
問題描述:
集成后,springMVC返回的json結(jié)果集排除了null字段,比如定義返回結(jié)果集{id,name},如果name==null,返回結(jié)果集如下:
{
"id": 1,
}
去掉了name字段
解決辦法
在yml中添加(jackson可以控制json返回結(jié)果集是否顯示null字段):
jackson:
default-property-inclusion: always
3、流程發(fā)起人initiator賦值問題
問題描述
我想保存流程的發(fā)起人,網(wǎng)上的解決辦法是添加activiti:initiator的屬性賦值,實(shí)際就是插入'act_hi_procinst'中START_USER_ID_字段,但是activiti7中沒有identityService接口,所以額,identityService.setAuthenticatedUserId(``"zx"``);沒用,initiator沒法賦值。
解決辦法
1、新建表關(guān)聯(lián)流程(在用)
新建一張流程關(guān)聯(lián)的表,可以把流程中的自己業(yè)務(wù)流程所需的資源都帶上,比較靈活,降低與activiti的耦合,推薦。
2、直接手動(dòng)插入START_USER_ID_(理論)
理論上來講既然知道具體是那個(gè)表的字段了,可以根據(jù)processInstanceId手動(dòng)插入發(fā)起人。
3、其他
activiti7應(yīng)該有其他的解決方案,但是7的api一直沒找到,源碼看著頭疼,而且第一種個(gè)人認(rèn)為更適用于項(xiàng)目,整合之后就是分離獨(dú)立。
4、流程變量問題
問題描述
如上圖請(qǐng)假流程圖,在網(wǎng)關(guān)位置有分支,變量為audit,測(cè)試流程如下:
不走分支流程(正常運(yùn)行):
開始->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核通過(賦值audit==1)->結(jié)束
走分支流程(循環(huán)運(yùn)行):
開始->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核不通過(賦值audit==0)->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核通過(賦值audit==1)->請(qǐng)假申請(qǐng)->...
當(dāng)?shù)谝淮钨x值audit之后,后面繼續(xù)使用
taskService.complete(taskId,variables);賦值無法改變audit的值。
解決辦法
在調(diào)用complete前,通過setVariable進(jìn)行賦值
taskService.setVariable(taskId,"audit",audit);
原因在于act_ru_variable表,第一次在流程中賦值audit后,activiti認(rèn)為這是這個(gè)流程中的變量,會(huì)保存在act_ru_variable表中,因?yàn)閿?shù)據(jù)庫已經(jīng)存在相應(yīng)的字段,后面再使用taskService.complete(taskId,variables);無法改變值,只能setVariable