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

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

[已解决] 获取上一节点审批人函数出错

[复制链接]
派活园 发表于 2013-4-7 15:26:40 | 显示全部楼层 |阅读模式
本帖最后由 shary 于 2013-4-8 15:44 编辑

如题,在视图中的某列,用脚本getLastApproverName()获取节点上一审批人出错,具体的代码如下:
var doc = getCurrentDocument();
var state = doc.getItemValueAsString("state");
var name = "";
println(getStateLabel());
if(getStateLabel()!="" && getStateLabel()!=null){
name = getLastApproverName();//该行出现错误,注释后也会报错
}
if(name=="admin"){
        var sql = "select a.* from t_actorhis a left join t_relationhis b on a.nodehis_id=b.id where b.docid='"+doc.getId()+"' and b.endnodename='回退'";
        var data = queryByDSName("jjzw",sql);
        name = data.get(0).get("name");
}
name;
出现的错误如下图
2.jpg
spiral 发表于 2013-4-7 15:34:08 | 显示全部楼层
您好楼主,通过脚本并没有看出什么问题,您可以按照以下代码后重试
if(getStateLabel()!="" && getStateLabel()!=null)
更改为
if(getStateLabel()!=null && getStateLabel()!="")

另外麻烦楼主贴出打印语句以后后台的错误信息,谢谢合作
 楼主| 派活园 发表于 2013-4-7 15:37:37 | 显示全部楼层
回复 2# spiral
换了不行,控制台出错信息如下
org.mozilla.javascript.EcmaError: TypeError: Cannot call method "getName" of null (baselib#1968)
at org.mozilla.javascript.ScriptRuntime.constructError(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.constructError(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.typeError(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.typeError2(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.undefCallError(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(Unknown Source)
at org.mozilla.javascript.optimizer.OptRuntime.callProp0(Unknown Source)
at org.mozilla.javascript.gen.c264._c130(baselib:1968)
at org.mozilla.javascript.gen.c264.call(baselib)
at org.mozilla.javascript.optimizer.OptRuntime.callName0(Unknown Source)
at org.mozilla.javascript.gen.c252._c0(View.11e1-89ec-8c14b50e-97ae-a925a0748fb4.Column(11e1-89ec-ca3f2aaa-97ae-a925a0748fb4).经办人:6)
at org.mozilla.javascript.gen.c252.call(View.11e1-89ec-8c14b50e-97ae-a925a0748fb4.Column(11e1-89ec-ca3f2aaa-97ae-a925a0748fb4).经办人)
at org.mozilla.javascript.ContextFactory.doTopCall(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.doTopCall(Unknown Source)
at org.mozilla.javascript.gen.c252.call(View.11e1-89ec-8c14b50e-97ae-a925a0748fb4.Column(11e1-89ec-ca3f2aaa-97ae-a925a0748fb4).经办人)
at org.mozilla.javascript.gen.c252.exec(View.11e1-89ec-8c14b50e-97ae-a925a0748fb4.Column(11e1-89ec-ca3f2aaa-97ae-a925a0748fb4).经办人)
at cn.myapps.core.macro.runner.JavaScriptRunner.run(JavaScriptRunner.java:117)
at cn.myapps.core.dynaform.view.ejb.Column.getTextString(Column.java:441)
at cn.myapps.core.dynaform.view.ejb.Column.getText(Column.java:426)
at cn.myapps.core.dynaform.view.html.ViewHtmlBean.toRowHtml(ViewHtmlBean.java:400)
at org.apache.jsp.portal.default_.dynaform.view.detail_jsp._jspService(detail_jsp.java:1028)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at com.opensymphony.webwork.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:114)
at cn.myapps.base.web.ServletResult.OBPMServletDispatcherResult.doExecute(OBPMServletDispatcherResult.java:32)
at com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:101)
at com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:312)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:207)
at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:137)
at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:171)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:100)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:233)
at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:198)
at cn.myapps.base.web.filter.OBPMFilterDispatcher.doFilter(OBPMFilterDispatcher.java:43)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.myapps.base.web.filter.AjaxMultiLanguageFilter.doFilter(AjaxMultiLanguageFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.myapps.base.web.filter.PersistenceFilter.doFilter(PersistenceFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.myapps.base.web.filter.SecurityFilter.doFilter(SecurityFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at cn.myapps.base.web.filter.EncodingFilter.doFilter(EncodingFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:75)
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 de.javakaffee.web.msm.RequestTrackingContextValve.invoke(RequestTrackingContextValve.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
shary 发表于 2013-4-7 16:05:47 | 显示全部楼层
您好,请问您对应是不是脚本没有贴全。根据您的错误提示应该是您的脚本中有用到getName(),对应值为空,没有进行分空判断。但是您一楼的脚本中并没有getName()这个。请您仔细检查下。
spiral 发表于 2013-4-7 16:08:18 | 显示全部楼层
正在本地确认,请稍候
 楼主| 派活园 发表于 2013-4-7 16:10:26 | 显示全部楼层
回复 4# shary


   脚本肯定是全的,这个getName就是那个函数getApproveName这个里面的
 楼主| 派活园 发表于 2013-4-7 16:11:38 | 显示全部楼层
回复 4# shary


    getName应该是在执行函数getLastApproverName()的过程中出现的错误,因为我有尝试把getLastApproverName这个去掉,就不会出错了
spiral 发表于 2013-4-7 16:26:23 | 显示全部楼层
回复 7# 派活园
楼主您说的对,所以楼主您可以尝试使用getLastApprover()来作为判断条件
  1. /**
  2. * 获取当前文档的最后审批人名称
  3. * @return 审批人名称
  4. */
  5. function getLastApproverName(){
  6.         return getLastApprover().getName();
  7. }
复制代码
shary 发表于 2013-4-8 09:57:08 | 显示全部楼层
您好,麻烦您查看一下您这条记录对应的前台流程历史的最后一条记录的审批人名称是否为空。对应请您将流程历史信息截图帖在帖子中,以便我们协助您解决问题。
shary 发表于 2013-4-8 15:43:54 | 显示全部楼层
Q上跟客户沟通对getApproveLast做非空判断之后问题得到解决。

本版积分规则

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

GMT+8, 2026-8-12 21:56

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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