天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 4171|回复: 20

[已解决] 删除按钮动作执行前脚本报错

[复制链接]
索昂软件 发表于 2022-12-29 15:28:20 | 显示全部楼层 |阅读模式
本帖最后由 索昂软件 于 2022-12-29 15:35 编辑

【myApps/OBPM版本号】:5.0
【浏览器类型】:所有
【问题描述】:

同样的脚本此前一直没出过问题,更新了昨天天翎提供的新版本之后,这个删除按钮动作执行前脚本,操作删除2次以上数据就会报错。

删除按钮的动作执行前脚本调用函数



函数库中函数的内容


打开视图,第一次选中数据删除没有问题,从第二次开始往后,选中数据删除就会报如下图所示错误,并且删不掉数据。


注:由于居家远程办公,远程电脑无法向外发送文件,所以只能用手机拍,效果不好请见谅。



1、问题描述最好图文并茂,如有视频/脚本可直接放出,这样技术同事在处理该问题时效率更加高效哦~
2、如果该问题已得到解决,请在该帖子下回复\"已解决可结帖\"


补充内容 (2022-12-29 15:41):
如果是脚本问题,那应该第一次就不好使,但实际是第一次脚本被正常运行了,从第二次开始才报错。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为天翎用户

x
7bou 发表于 2022-12-29 17:04:48 | 显示全部楼层
打开平台的调适模式 截图看下具体的报错 。
 楼主| 索昂软件 发表于 2023-1-3 11:15:20 | 显示全部楼层
7bou 发表于 2022-12-29 17:04
打开平台的调适模式 截图看下具体的报错 。

删除按钮的动作执行前脚本,功能是判断只允许删除流程节点名getStateLabel是“Creator”的数据行。

打开视图后第一次勾选数据行删除时,正常运行了脚本,正常删除了所选的符合判断条件的数据,调试界面空白。

然后从第二次勾选数据,点删除按钮,就会报错,无法删除数据,用户界面弹出提示如下如所示,调试界面信息贴在后面了。


退出视图,重新打开视图后,可以正常勾选删除数据,但只要不重新打开视图的话,再次勾选删除数据就会报错。

调试页面中的信息:
org.mozilla.javascript.EcmaError: TypeError: Cannot call method "getStateLabel" of null (validationlib#402)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3350)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3340)
at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3356)
at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3375)
at org.mozilla.javascript.ScriptRuntime.undefCallError(ScriptRuntime.java:3394)
at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2026)
at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:117)
at org.mozilla.javascript.gen.c12422._c22(validationlib:402)
at org.mozilla.javascript.gen.c12422.call(validationlib)
at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:108)
at org.mozilla.javascript.gen.c12423._c0(FormName:null Activity(__105Tg1CvCg3mejFjdDD).删除Del.beforeActionScript:2)
at org.mozilla.javascript.gen.c12423.call(FormName:null Activity(__105Tg1CvCg3mejFjdDD).删除Del.beforeActionScript)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
at org.mozilla.javascript.gen.c12423.call(FormName:null Activity(__105Tg1CvCg3mejFjdDD).删除Del.beforeActionScript)
at org.mozilla.javascript.gen.c12423.exec(FormName:null Activity(__105Tg1CvCg3mejFjdDD).删除Del.beforeActionScript)
at cn.myapps.runtime.macro.runner.JavaScriptRunner.run(JavaScriptRunner.java:158)
at cn.myapps.common.model.activity.Activity.runBeforeActionScript(Activity.java:1573)
at cn.myapps.runtime.activity.service.ActivityRunTimeServiceImpl.runbeforeactionscript(ActivityRunTimeServiceImpl.java:134)
at cn.myapps.runtime.activity.controller.ActivityController.runBeforeActionScript(ActivityController.java:166)
at cn.myapps.runtime.activity.controller.ActivityController$$FastClassBySpringCGLIB$$beafbc81.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:47)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at cn.myapps.runtime.activity.controller.ActivityController$$EnhancerBySpringCGLIB$$9b58c438.runBeforeActionScript()
at sun.reflect.GeneratedMethodAccessor997.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:799)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:981)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:884)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:858)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at cn.myapps.runtime.common.filter.MultiLanguageFilter.doFilter(MultiLanguageFilter.java:56)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at cn.myapps.base.web.filter.SecurityFilter.doFilter(SecurityFilter.java:261)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.access$000(ErrorPageFilter.java:66)
at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:105)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:155)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:123)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为天翎用户

x
7bou 发表于 2023-1-3 15:02:44 | 显示全部楼层
删除后没有刷新到视图吗?  原因应该是这张单已经被删除了,所有会爆这个错误。
 楼主| 索昂软件 发表于 2023-1-4 08:18:44 | 显示全部楼层
本帖最后由 索昂软件 于 2023-1-4 08:22 编辑
7bou 发表于 2023-1-3 15:02
删除后没有刷新到视图吗?  原因应该是这张单已经被删除了,所有会爆这个错误。


每次删除都是在视图上勾选不同的数据行。不存在被删除后的数据还能被勾选的可能。

如果你说的是在后台删除软件表单,那更不可能了,表单一直在。
7bou 发表于 2023-1-4 09:20:52 | 显示全部楼层
索昂软件 发表于 2023-1-4 08:18
每次删除都是在视图上勾选不同的数据行。不存在被删除后的数据还能被勾选的可能。

如果你说的是在后 ...

看下脚本。
 楼主| 索昂软件 发表于 2023-1-4 10:31:33 | 显示全部楼层
本帖最后由 索昂软件 于 2023-1-4 10:38 编辑


脚本是写在函数库里的,删除按钮的动作施行前脚本调用函数库中的这个函数。函数内容如下:

/*用于主办的删除按钮动作执行前脚本中,判断只能删除Creator状态下的数据,20160531*/
function mainfiledel(){
    var params = getParameter("_selects");
    var docids = splitText(params,";");   
    var process = getDocProcess(getApplication());//Document操作类     
    for(var i=0;i<docids.length;i++){
        var doc = process.doView(docids);
        if (!doc.getStateLabel().equals("Creator")){
           return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");        
        }
    }
}
7bou 发表于 2023-1-4 11:04:08 | 显示全部楼层
索昂软件 发表于 2023-1-4 10:31
脚本是写在函数库里的,删除按钮的动作施行前脚本调用函数库中的这个函数。函数内容如下:

/*用于主 ...

脚本有问题吧。 循环里面根据id去创建doc文档对象的时候,不应该是取一个吗?
 楼主| 索昂软件 发表于 2023-1-4 11:59:07 | 显示全部楼层
本帖最后由 索昂软件 于 2023-1-4 12:01 编辑
7bou 发表于 2023-1-4 11:04
脚本有问题吧。 循环里面根据id去创建doc文档对象的时候,不应该是取一个吗?


论坛的文本编辑器把 [ i ] 认成斜体标记了,我再发一次脚本,把[ i ]中间加空格了。

上面你也能看到从 [ i ]开始往后全变成斜体了。楼顶照片里的代码也有[ i ]

/*用于主办的删除按钮动作执行前脚本中,判断只能删除Creator状态下的数据,张楠楠20160531*/
function mainfiledel(){
   var params = getParameter("_selects");
   var docids = splitText(params,";");   
   var process = getDocProcess(getApplication());//Document操作类     
   for(var i=0;i<docids.length;i++){
      var doc = process.doView(docids [ i ] );
      if (!doc.getStateLabel().equals("Creator")){
         return createAlert("您只能删除Creator状态下的数据!(You can only delete status of Creator!)");        
      }
   }
}
 楼主| 索昂软件 发表于 2023-1-4 13:21:13 | 显示全部楼层
我们发现问题在于  :删除后没有刷新视图, 导致再次删除时取到的还是刚才已经删除的文档id,所以无法继续删除其他的文档

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 17:24

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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