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

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

保存动作执行前脚本

[复制链接]
fengzhong 发表于 2011-12-22 09:43:42 | 显示全部楼层 |阅读模式
本帖最后由 shary 于 2011-12-27 13:19 编辑

我想把报销规则的表单里面的“员工姓名”,“报销限额”,“报销比例”,“有效起始日”,“有效期”这些列的数据同时保存到表TLK_REIMBURSEMENT_DETAIL里面去。在TLK_REIMBURSEMENT_DETAIL里面也是对应  员工姓名,报销限额,报销比例,有效起始日,有效期,这几列。脚本写成
function InsertDataOnOtherDoc(formName, formId, fieldNames, fieldValues, parentDoc,isDateNames,isDateValues) {
        var doc = getCurrentDocument();
        var domain = getDomainid();
        var application = getApplication();
        var process = getDocProcess($WEB.getApplication());
        var uuid = new Packages.cn.myapps.util.sequence.Sequence();
        var child = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
        child.setId(uuid.getSequence());
        if(parentDoc) child.setParent(parentDoc);
        child.setFormname(formName);
        child.setAuthor(getWebUser());
        child.setFormid(formId);
        child.setIstmp(false);
        child.setApplicationid(application);
        child.setLastmodifier(getWebUser().getId());
        child.setDomainid(domain);
        child.setMappingId(child.getId());
        var count = 1;
        var fieldName = "";
        var fieldValue = "";
        if (fieldNames.constructor == Array) {
                count = fieldNames.length;
        } else {
                fieldName = fieldNames;
        }
        if (fieldValues.constructor != Array) {
                fieldValue = fieldValues;
                child.addStringItem(fieldName, fieldValue);
        } else {
                for (var i = 0; i < count; i++) {
                        child.addStringItem(fieldNames, fieldValues);
                }
        }
        if(isDateNames && isDateValues){
                var datecount = 1;
        var dateName = "";
                var dateValue = "";
                if (isDateNames.constructor == Array) {
                        datecount = isDateNames.length;
                } else {
                        dateName = isDateNames;
                }
                if (isDateValues.constructor != Array) {
                        dateValue = isDateValues;
                        child.addDateItem(dateName, dateValue);
                } else {
                        for (var i = 0; i < datecount; i++) {
                                child.addDateItem(isDateNames, isDateValues);
                        }
                }
        }
        process.doCreate(child);
}
var a = 0;
var b = 0;
var c = 0;
var d = 0;
var e = 0;
a=doc.getItemValueAsString("员工姓名");
b=doc.getItemValueAsString("报销限额");
c=doc.getItemValueAsString("报销比例");
d=doc.getItemValueAsString("有效起始日");
e=doc.getItemValueAsString("有效期");
InsertDataOnOtherDoc(TLK_REIMBURSEMENT_DETAIL,11e1-091b-a517e8aa-ac7d-dd2ff0b6f755&s_module=11e1-0918-d1f31800-ac7d-dd2ff0b6f755&application=11e1-0907-c8c54d33-9114-45cda1f54330&_currpage=1&_rowcount=5&_pagelines=10,"string[员工姓名,报销限额,报销比例,有效起始日,有效期],{a,b,c,d,e});
点保存的时候提示

需要怎么修改修改这个脚本

本帖子中包含更多资源

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

x
purple 发表于 2011-12-22 09:52:04 | 显示全部楼层
您好,错误提示是丢失)号,你在调用InsertDataOnOtherDoc方法前加一个打印语句,定位下问题,初步开上去,您的调用有错,参数需要用双引号引起来的。
 楼主| fengzhong 发表于 2011-12-22 10:06:02 | 显示全部楼层
回复 2# purple


    脚本改成
function InsertDataOnOtherDoc(formName, formId, fieldNames, fieldValues, parentDoc,isDateNames,isDateValues) {  
println("============1111111111============");
  var doc = getCurrentDocument();
        var domain = getDomainid();
        var application = getApplication();
        var process = getDocProcess($WEB.getApplication());
        var uuid = new Packages.cn.myapps.util.sequence.Sequence();
        var child = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
        child.setId(uuid.getSequence());
        if(parentDoc) child.setParent(parentDoc);
        child.setFormname(formName);
        child.setAuthor(getWebUser());
        child.setFormid(formId);
        child.setIstmp(false);
        child.setApplicationid(application);
        child.setLastmodifier(getWebUser().getId());
        child.setDomainid(domain);
        child.setMappingId(child.getId());
        var count = 1;
        var fieldName = "";
        var fieldValue = "";
println("============2222222222222222222222222============");
        if (fieldNames.constructor == Array) {
                count = fieldNames.length;
        } else {
                fieldName = fieldNames;
        }
        if (fieldValues.constructor != Array) {
                fieldValue = fieldValues;
                child.addStringItem(fieldName, fieldValue);
        } else {
                for (var i = 0; i < count; i++) {
                        child.addStringItem(fieldNames, fieldValues);
                }
        }
        if(isDateNames && isDateValues){
                var datecount = 1;
        var dateName = "";
                var dateValue = "";
                if (isDateNames.constructor == Array) {
                        datecount = isDateNames.length;
                } else {
                        dateName = isDateNames;
                }
                if (isDateValues.constructor != Array) {
                        dateValue = isDateValues;
                        child.addDateItem(dateName, dateValue);
                } else {
                        for (var i = 0; i < datecount; i++) {
                                child.addDateItem(isDateNames, isDateValues);
                        }
                }
        }
        process.doCreate(child);
}
var a = 0;
var b = 0;
var c = 0;
var d = 0;
var e = 0;
a=doc.getItemValueAsString("员工姓名");
b=doc.getItemValueAsString("报销限额");
c=doc.getItemValueAsString("报销比例");
d=doc.getItemValueAsString("有效起始日");
e=doc.getItemValueAsString("有效期");
println("============3333333333333333333333============");
InsertDataOnOtherDoc("TLK_REIMBURSEMENT_DETAIL","11e1-091b-a517e8aa-ac7d-dd2ff0b6f755&s_module=11e1-0918-d1f31800-ac7d-dd2ff0b6f755&application=11e1-0907-c8c54d33-9114-45cda1f54330&_currpage=1&_rowcount=5&_pagelines=10","string[员工姓名,报销限额,报销比例,有效起始日,有效期]","{a,b,c,d,e}");
之后就打印出来======11111=====,2222的就没有打印出来
提示错误为

本帖子中包含更多资源

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

x
purple 发表于 2011-12-22 10:11:29 | 显示全部楼层
本帖最后由 purple 于 2011-12-22 10:13 编辑

您好,您现在的错误信息是doc未定义,看了一下您的脚本,是您在脚本最后,取值的时候,a=doc.getItemValueAsString("员工姓名");等,您的取值在函数外部了,您先解决这个问题,再去定位。
 楼主| fengzhong 发表于 2011-12-22 10:26:11 | 显示全部楼层
回复 4# purple


    代码改成
function InsertDataOnOtherDoc(formName, formId, fieldNames, fieldValues, parentDoc,isDateNames,isDateValues) {  
  var doc = getCurrentDocument();
        var domain = getDomainid();
        var application = getApplication();
        var process = getDocProcess($WEB.getApplication());
        var uuid = new Packages.cn.myapps.util.sequence.Sequence();
        var child = new Packages.cn.myapps.core.dynaform.document.ejb.Document();
        child.setId(uuid.getSequence());
        if(parentDoc) child.setParent(parentDoc);
        child.setFormname(formName);
        child.setAuthor(getWebUser());
        child.setFormid(formId);
        child.setIstmp(false);
        child.setApplicationid(application);
        child.setLastmodifier(getWebUser().getId());
        child.setDomainid(domain);
        child.setMappingId(child.getId());
        var count = 1;
        var fieldName = "";
        var fieldValue = "";
println("============2222222222222222222222222============");
        if (fieldNames.constructor == Array) {
                count = fieldNames.length;
        } else {
                fieldName = fieldNames;
        }
        if (fieldValues.constructor != Array) {
                fieldValue = fieldValues;
                child.addStringItem(fieldName, fieldValue);
        } else {
                for (var i = 0; i < count; i++) {
                        child.addStringItem(fieldNames, fieldValues);
                }
        }
        if(isDateNames && isDateValues){
                var datecount = 1;
        var dateName = "";
                var dateValue = "";
                if (isDateNames.constructor == Array) {
                        datecount = isDateNames.length;
                } else {
                        dateName = isDateNames;
                }
                if (isDateValues.constructor != Array) {
                        dateValue = isDateValues;
                        child.addDateItem(dateName, dateValue);
                } else {
                        for (var i = 0; i < datecount; i++) {
                                child.addDateItem(isDateNames, isDateValues);
                        }
                }
        }
        process.doCreate(child);
}
var doc=getCurrentDocument();
var a = 0;
var b = 0;
var c = 0;
var d = 0;
var e = 0;
a=doc.getItemValueAsString("员工姓名");
b=doc.getItemValueAsString("报销限额");
c=doc.getItemValueAsString("报销比例");
d=doc.getItemValueAsString("有效起始日");
e=doc.getItemValueAsString("有效期");
InsertDataOnOtherDoc("TLK_REIMBURSEMENT_DETAIL","11e1-091b-a517e8aa-ac7d-dd2ff0b6f755&s_module=11e1-0918-d1f31800-ac7d-dd2ff0b6f755&application=11e1-0907-c8c54d33-9114-45cda1f54330&_currpage=1&_rowcount=5&_pagelines=10","string[员工姓名,报销限额,报销比例,有效起始日,有效期]","{a,b,c,d,e}");
println("============3333333333333333333333============");

222222222和33333333333都打印出来了,但是提示空指针

本帖子中包含更多资源

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

x
purple 发表于 2011-12-22 11:19:37 | 显示全部楼层
您好,错误提示是空指针,所以的打印语句都执行了,看前台错误信息找不到原因,您看一下后台的错误信息吧。定位到是什么方法报空了。
 楼主| fengzhong 发表于 2011-12-22 11:31:32 | 显示全部楼层
回复 6# purple


    后台错误信息
JsUtil:============3333333333333333333333============
JsUtil:============2222222222222222222222222============
org.mozilla.javascript.WrappedException: Wrapped java.lang.NullPointerException (11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript#53)
at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1757)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:170)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
at org.mozilla.javascript.gen.c74._c1(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript:53)
at org.mozilla.javascript.gen.c74.call(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript)
at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
at org.mozilla.javascript.gen.c74._c0(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript:67)
at org.mozilla.javascript.gen.c74.call(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
at org.mozilla.javascript.gen.c74.call(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript)
at org.mozilla.javascript.gen.c74.exec(Activity Action(11e1-09e9-80f7f7fc-9307-b7c21e527e28).保存afterActionScript)
at cn.myapps.core.macro.runner.JavaScriptRunner.run(JavaScriptRunner.java:116)
at org.apache.jsp.portal.share.dynaform.activity.after_jsp._jspService(after_jsp.java:337)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
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.AroundInterceptor.intercept(AroundInterceptor.java:31)
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.ServletDispatcher.service(ServletDispatcher.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
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.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)
后面还有贴吧有字数限制
 楼主| fengzhong 发表于 2011-12-22 11:33:44 | 显示全部楼层
回复 6# purple


    我看不出来错在哪啊这个帖子http://www.teemlink.com/bbs/view ... p;highlight=docreat不是你的吗?怎么用这个函数你应该 清楚啊
purple 发表于 2011-12-22 11:45:23 | 显示全部楼层
是我的呀,但是我不知道你用这个方法是做什么,你的脚本是写在什么位置呢,您把函数放在公共函数库,然后再需要实现功能的业务的地方调用就好啦,其次,你的申明也有问题,你把abcde变量都声明成了数字型,接收的是字符串类型。如果你是写在公共函数库,调用可以参考以下脚本:
#include "你的函数库名称";
var poll=getItemValueAsString("poll");
var voting=getItemValueAsString("voting");
var options=getItemValueAsString("options");
var sponsor=getItemValueAsString("sponsor");
InsertDataOnOtherDoc("OA系统/投票/vote","11e0-1979-b6af8c11-b991-cf1024c68a7b",["topic","voting","options","sponsor",""],[poll,voting,options,sponsor]);
关于这部门,我们发布出去的oa办公系统标准版的投票就有使用到的,你也可以参考一下。
 楼主| fengzhong 发表于 2011-12-22 15:10:33 | 显示全部楼层
回复 9# purple


    我把函数放进函数库了
保存按钮的动作执行后脚本为
#include "actionlib";
var name =.getItemValueAsString("name");
var xiane =getItemValueAsString("xiane");
var bili =getItemValueAsString("bili");
var qishiri =getItemValueAsString("qishiri");
var youxiaoqi =.getItemValueAsString("youxiaoqi");
InsertDataOnOtherDoc("TLK_REIMBURSEMENT_DETAIL","11e1-091b-a517e8aa-ac7d-dd2ff0b6f755",["报销限额","报销比例","有效起始日","有效期"],[xiane,bili,qishiri,youxiaoqi]);
updateStatus("status",["初稿"],"status",["已保存"],"保存成功");
提示错误为

不知道应该在怎么修改了

本帖子中包含更多资源

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

x

本版积分规则

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

GMT+8, 2026-8-12 18:18

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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