起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3258|回复: 7

[处理中3] process的AfterSave事件报错

[复制链接]

407

主题

926

帖子

2039

积分

金牌会员

Rank: 6Rank: 6

积分
2039
QQ
发表于 2019-10-14 15:34:03 | 显示全部楼层 |阅读模式

在正式环境中向grid中的主数据添加一行,保存后,在process的定义中的libraryProcessAfterSaveBID_specificationAction事件中报错:


2019-10-14 15:22:52 [http-8080-5] [LibraryProcess] INFO: NEW
2019-10-14 15:22:52 [http-8080-5] [com.justep.business.server.BusinessServer] ERROR: excute stream action, params:{"actions":[{"process":"/ERP/BID/BidLibrary/process/Library/libraryProcess","activity":"specification","executor":"","executeContext":"","actionFlag":"__action_0__","action":"saveBID_specificationAction","contentType":"json","parameters":{"table":{"userdata":{"relationTypes":"Date,String,String,String,String,String,String,Integer,String,String,DateTime,String,String,Date,Date,String,String,String,String","sys.count":117,"updateMode":"whereVersion","sys.rowid":"BID_specification","model":"/ERP/BID/BidLibrary/data","idColumnDefine":"BID_specification","relations":"BID_specification.issueTime,BID_specification.normalNum,BID_specification.workContent,BID_specification.fCreatePersonID,BID_specification.fCreateDeptCode,BID_specification.fCreatePersonCode,BID_specification.remark,BID_specification.version,BID_specification.certifyData,BID_specification.fCreatePersonName,BID_specification.fCreatdTime,BID_specification.fCreateDeptName,BID_specification.normalName,BID_specification.setDay,BID_specification.ImplTime,BID_specification.fCreatePersonFID,BID_specification.issueUnit,BID_specification.certifyDataAdress,BID_specification.fCreateDeptID","idColumnName":"BID_specification","idColumnType":"String","relationAlias":"issueTime,normalNum,workContent,fCreatePersonID,fCreateDeptCode,fCreatePersonCode,remark,version,certifyData,fCreatePersonName,fCreatdTime,fCreateDeptName,normalName,setDay,ImplTime,fCreatePersonFID,issueUnit,certifyDataAdress,fCreateDeptID"},"@type":"table","rows":[{"issueTime":{"value":"2018-12-16","changed":"1"},"normalNum":{"value":"T/CCSA 239.1-2018 ","changed":"1"},"workContent":{"value":"参编","changed":"1"},"fCreatePersonID":{"value":"J200372","changed":"1"},"fCreateDeptCode":{"value":"2004","changed":"1"},"fCreatePersonCode":{"value":"J200372","changed":"1"},"remark":{"value":"团体标准","changed":"1"},"version":{"value":0,"changed":"1"},"certifyData":{"changed":"1"},"fCreatePersonName":{"value":"赵微","changed":"1"},"fCreatdTime":{"value":"2019-10-14T15:21:55.814Z","changed":"1"},"userdata":{"isModified":true,"id":{"value":"A053C0CEB3EE4AE380D8FD1E8E1E7CBB"},"recordState":"new"},"fCreateDeptName":{"value":"市场经营部","changed":"1"},"normalName":{"value":" 《服务器用液冷系统  第1部分:间接冷板式》","changed":"1"},"setDay":{"value":"2018-12-16","changed":"1"},"ImplTime":{"value":"2018-12-16","changed":"1"},"fCreatePersonFID":{"value":"/100000.ogn/100004.dpt/J200372@100004.psm","changed":"1"},"issueUnit":{"value":"中国通信标准化协会","changed":"1"},"certifyDataAdress":{"changed":"1"},"fCreateDeptID":{"value":"100004","changed":"1"}}]}},"accept":"application/json"},{"process":"/SA/doc/system/systemProcess","activity":"mainActivity","executor":"","executeContext":"","actionFlag":"__action_1__","action":"saveAttachAction","contentType":"json","parameters":{"isSaveDocLink":false,"changeLog":"{\"items\":[],\"createVersionLogs\":[],\"operate\":\"saveDoc\",\"url\":\"\",\"process\":\"/ERP/BID/BidLibrary/process/Library/libraryProcess\",\"activity\":\"specification\",\"isHttps\":true}"},"accept":"application/json"}]}
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.justep.system.action.Engine.invokeActions(Native Method)
    at com.justep.system.action.Engine.invokeActions(Unknown Source)
    at com.justep.business.server.BusinessServer.doAction(Unknown Source)
    at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
    at com.justep.business.server.BusinessServer.excute(Unknown Source)
    at com.justep.business.server.BusinessServer.excute(Unknown Source)
    at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
    at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.justep.micro.service.MicroServiceFilter.doFilter(Unknown Source)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
    at LibraryProcess.libraryProcessAfterSaveBID_specificationAction(LibraryProcess.java:309)
    ... 31 more


正式环境的代码如下:
public static void libraryProcessAfterSaveBID_specificationAction() throws FileNotFoundException, Exception {
        
        String a="";
        // 获得table参数
        Table table = (Table) ContextHelper.getActionContext().getParameter("table");
        // 获得所有新增的行
        Iterator<Row> rows = table.iterator(com.justep.system.data.ModifyState.NEW);
        Row row = null;
        while (rows.hasNext()) {
            log.info("NEW");
            row = rows.next();
            String certifyData = row.getString("certifyData");
            if(certifyData.indexOf("docID")!=-1){
                a=findFile(certifyData);
                String ID = row.getString("BID_specification");
                String ksql = " SELECT S.* FROM BID_specification S  WHERE S = '" + ID + "'";
                //String ksql = " SELECT * FROM BID_specification  WHERE fID = '" + ID + "'";
                Table table2 = KSQL.select(ksql, null, "/ERP/BID/BidLibrary/data", null);
                Iterator<Row> rows1 = table2.iterator();
                Row row1 = rows1.next();
                String ksql1 = " UPDATE BID_specification S SET S.certifyDataAdress='"+a+"' WHERE S = '" + ID + "'";
                KSQL.executeUpdate(ksql1, null, "/ERP/BID/BidLibrary/data", null);   
            }        
        }
        rows = table.iterator(com.justep.system.data.ModifyState.EDIT);
        while (rows.hasNext()) {
            log.info("EDIT");
            row = rows.next();
            //是否有标段流标
            String ID = row.getString("BID_specification");
            String certifyData = row.getString("certifyData");
            if(certifyData.indexOf("docID")!=-1){
                a=findFile(certifyData);
                String ksql1 = " UPDATE BID_specification S SET S.certifyDataAdress='"+a+"' WHERE S = '" + ID + "'";
                KSQL.executeUpdate(ksql1, null, "/ERP/BID/BidLibrary/data", null);   
            }else{
                String ksql1 = " UPDATE BID_specification S SET S.certifyDataAdress=null WHERE S = '" + ID + "'";
                KSQL.executeUpdate(ksql1, null, "/ERP/BID/BidLibrary/data", null);
            }
        }   
   
        
    }





91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35915
发表于 2019-10-14 16:39:29 | 显示全部楼层
java.lang.NullPointerException
    at LibraryProcess.libraryProcessAfterSaveBID_specificationAction(LibraryProcess.java:309)

根据提示的行号java中自己调试一下做空判断,报的控制指针异常
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

407

主题

926

帖子

2039

积分

金牌会员

Rank: 6Rank: 6

积分
2039
QQ
 楼主| 发表于 2019-10-14 17:07:14 | 显示全部楼层
jishuang 发表于 2019-10-14 16:39
java.lang.NullPointerException
    at LibraryProcess.libraryProcessAfterSaveBID_specificationAction ...

String certifyData = row.getString("certifyData"); 返回空,表示主数据的保存没有成功。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35915
发表于 2019-10-14 17:33:47 | 显示全部楼层
自己加非空判断啊,报错就是java标准的空指针
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

407

主题

926

帖子

2039

积分

金牌会员

Rank: 6Rank: 6

积分
2039
QQ
 楼主| 发表于 2019-10-14 18:23:00 | 显示全部楼层
jishuang 发表于 2019-10-14 17:33
自己加非空判断啊,报错就是java标准的空指针

其实我想问的是 页面的保存其实是 {operation:'mainData.save'},这个保存失败也没有提示什么错误啊,所以导致保存后事件报错。保存动作也没有debug的方法。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35915
发表于 2019-10-15 08:36:43 | 显示全部楼层
就是执行{operation:'mainData.save'}才会调用到保存后事件啊
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

407

主题

926

帖子

2039

积分

金牌会员

Rank: 6Rank: 6

积分
2039
QQ
 楼主| 发表于 2019-10-15 09:35:55 | 显示全部楼层
jishuang 发表于 2019-10-15 08:36
就是执行{operation:'mainData.save'}才会调用到保存后事件啊

对,但是我的理解是 在保存后事件中需要找到新增的一条数据,如果保存失败,新增的一条数据就找不到了,导致保存后事件中的变量为null报错,说面馆 保存失败,现在要解决的是保存失败的问题。是不是这样理解?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35915
发表于 2019-10-15 11:08:07 | 显示全部楼层
保存失败新增的肯定不会成功
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-24 18:31 , Processed in 0.093530 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表