1乾闰、認(rèn)證問(wèn)題
問(wèn)題描述:
當(dāng)springboot2.0集成activiti7時(shí),activiti使用了身份認(rèn)證杠茬,集成后直接訪問(wè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問(wèn)題
問(wèn)題描述:
集成后,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賦值問(wèn)題
問(wèn)題描述
我想保存流程的發(fā)起人约巷,網(wǎng)上的解決辦法是添加activiti:initiator的屬性賦值,實(shí)際就是插入'act_hi_procinst'中START_USER_ID_字段旱捧,但是activiti7中沒(méi)有identityService接口独郎,所以額,identityService.setAuthenticatedUserId(``"zx"``);
沒(méi)用枚赡,initiator沒(méi)法賦值氓癌。
解決辦法
1、新建表關(guān)聯(lián)流程(在用)
新建一張流程關(guān)聯(lián)的表贫橙,可以把流程中的自己業(yè)務(wù)流程所需的資源都帶上贪婉,比較靈活,降低與activiti的耦合卢肃,推薦疲迂。
2、直接手動(dòng)插入START_USER_ID_(理論)
理論上來(lái)講既然知道具體是那個(gè)表的字段了莫湘,可以根據(jù)processInstanceId手動(dòng)插入發(fā)起人尤蒿。
3、其他
activiti7應(yīng)該有其他的解決方案逊脯,但是7的api一直沒(méi)找到优质,源碼看著頭疼,而且第一種個(gè)人認(rèn)為更適用于項(xiàng)目军洼,整合之后就是分離獨(dú)立巩螃。
4、流程變量問(wèn)題
問(wèn)題描述
如上圖請(qǐng)假流程圖匕争,在網(wǎng)關(guān)位置有分支避乏,變量為audit,測(cè)試流程如下:
不走分支流程(正常運(yùn)行):
開(kāi)始->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核通過(guò)(賦值audit==1)->結(jié)束
走分支流程(循環(huán)運(yùn)行):
開(kāi)始->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核不通過(guò)(賦值audit==0)->請(qǐng)假申請(qǐng)->領(lǐng)導(dǎo)審批->審核通過(guò)(賦值audit==1)->請(qǐng)假申請(qǐng)->...
當(dāng)?shù)谝淮钨x值audit之后甘桑,后面繼續(xù)使用
taskService.complete(taskId,variables);
賦值無(wú)法改變audit的值拍皮。
解決辦法
在調(diào)用complete前歹叮,通過(guò)setVariable
進(jìn)行賦值
taskService.setVariable(taskId,"audit",audit);
原因在于act_ru_variable
表,第一次在流程中賦值audit后铆帽,activiti認(rèn)為這是這個(gè)流程中的變量咆耿,會(huì)保存在act_ru_variable
表中,因?yàn)閿?shù)據(jù)庫(kù)已經(jīng)存在相應(yīng)的字段爹橱,后面再使用taskService.complete(taskId,variables);
無(wú)法改變值萨螺,只能setVariable