Explorar o código

[bug-261] 排查生产log - NPE 异常

Li Yuan %!s(int64=2) %!d(string=hai) anos
pai
achega
d5987a3d89

+ 2 - 0
ibps-api-root/modules/api-base/src/main/java/com/lc/ibps/api/base/constants/StateEnum.java

@@ -133,6 +133,8 @@ public enum StateEnum /*implements BaseEnum*/ {
 	, ERROR_BPMN(6050000, "流程异常")
 	, ERROR_BPMN_DEFINITION(6050100, "流程定义异常")
 	, ERROR_BPMN_INSTANCE(6050200, "流程实例异常")
+	, ERROR_BPMN_NO_INSTANCE(6050201, "流程实例不存在或已被办理")
+
 	, ERROR_BPMN_TASK(6050300, "流程任务异常")
 	, ERROR_BPMN_NO_TASK(6050301, "流程任务不存在或已被办理")
 	, ERROR_BPMN_LOCKED_TASK(6050302, "流程任务被锁定")

+ 8 - 1
ibps-provider-root/modules/provider-bpmn/src/main/java/com/lc/ibps/bpmn/provider/BpmInstProvider.java

@@ -8,6 +8,7 @@ import java.util.Map;
 
 import javax.annotation.Resource;
 
+import com.lc.ibps.form.data.exception.DataException;
 import org.activiti.engine.ActivitiException;
 import org.slf4j.event.Level;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -764,6 +765,8 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
 			attributes.put("firstNodeUserAssign", firstNodeUserAssign);
 			attributes.put("nodeId", BeanUtils.isNotEmpty(nodeDefs)?nodeDefs.get(0).getNodeId():"");
 			map.put("attributes", attributes);
+		} catch(DataException de){
+			setExceptionResult(result, StateEnum.ERROR_BPMN_NO_INSTANCE.getCode(), I18nUtil.getMessage(StateEnum.ERROR_BPMN_NO_INSTANCE.getCode()+""), de);
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_BPMN.getCode(), I18nUtil.getMessage(StateEnum.ERROR_BPMN.getCode()+""), e);
 		}
@@ -778,7 +781,11 @@ public class BpmInstProvider extends GenericProvider implements IBpmInstService,
 	private DataObjectModel getDataObject(String proInstId, String defId) {
 		DataObjectModel dataObject = null;
 		if (StringUtil.isNotEmpty(proInstId)) {
-			dataObject = bpmBoService.getDataObjectModelByInst( bpmInstRepository.get(proInstId));
+			BpmInstPo bpmInstPo = bpmInstRepository.get(proInstId);
+			if(bpmInstPo == null){
+				throw new DataException("bpmInstPo is null, instId=" + proInstId);
+			}
+			dataObject = bpmBoService.getDataObjectModelByInst(bpmInstPo);
 		} else {
 			// 处理bo数据
 			dataObject = bpmBoService.getDataObjectModelByDefId(defId);