找回密码
 注册成为天翎用户
楼主: Lamson

[解决中] 跑定时任务添加表单里面的数据,目前无法添加成功

[复制链接]
gary 发表于 2020-12-24 11:07:52 | 显示全部楼层
Lamson 发表于 2020-12-24 10:44
定时任务中无法使用 cn.myapps.util.http.HttpRequestUtil对象,报错信息如下:
2020-12-24 10:39:13.50 ...

把你的全部脚本贴上来,我帮你看一下
 楼主| Lamson 发表于 2020-12-24 11:16:07 | 显示全部楼层
gary 发表于 2020-12-24 11:07
把你的全部脚本贴上来,我帮你看一下

//定义一个前端访问的地址以及端口              
              var hostPort="http://192.168.1.204:8080";              
                       
             //指定应用ID                                          
             var applicationId="sOZu9kthmxyP8qQfq0e";                                          
             //指定表单Id                                          
             var formId="__BWRQVpSqmG1PoR0pDwG";            
              (function(){                                          
                  //定义用户名称            
              var userName="admin1";              
             //定义用户密码            
              var password="IzNDU2MT";              
             //定义用户所在的公司域            
              var domainName="盛为";     
                                            var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();                  
                                            //1.获得管理员用户的Token信息                           
                                            var accessToken= getAccessToken(userName,password,domainName);              
                                            // 2.获取当前文档ID                                          
                                            var docId=getDocIdInfoByAppIdAndFormId(accessToken);              
                                           //3.拼接发送的内容信息      
                                            var item ="{\"items\":{\"姓名\":\"定时任务添加人员\",\"年龄\":\"12\",\"性别\":\"女\",\"是否已婚\":\"否\",\"家庭地址\":\"121212\",\"现住地址\":\"1121212\"},\"applicationId\":\""+applicationId+"\",\"id\":\""+docId+"\",\"templateForm\":\"\",\"formId\":\""+formId+"\",\"sign\":\"\",\"parentId\":\"\",\"isRelate\":\"undefined\",\"subDocuments\":[],\"versions\":\"0\",\"exparams\":{}}";                                         
                                            var addData="{\"document\": "+item+",\"formId\":\""+formId+"\",\"docId\":\""+docId+"\",\"parentId\":\"\",\"templateForm\":\"\",\"viewId\":\"\",\"applicationId\":\""+applicationId+"\",\"id\":\""+docId+"\"}";                                    
                                            try{                              
                                                 var nextTime=new Date().getTime();      
                                                 println("User Info Query Add Post Admin Token return Result----------Token: "+accessToken);            
                                                         
                                                            
                                                 //4.表单数据进行前置处理  post   addData     
                                                 var postBeforeURL=hostPort+"/obpm/runtime/"+applicationId+"/activities/__LHGGRcNlJlquvr7VvIM/runbeforeactionscript?docId="+docId+"&viewId=&formId="+formId+"&_templateForm=&parentId=&isRelate=&actType=42&accessToke="+accessToken;                                   
                                                 var postBeforeJSONString = URLConnector.post(postBeforeURL, addData);                                       
                                                  println("User Info Query Add Post return Result: "+postBeforeJSONString);      
                                                         
                                                 //5.中间数据进行处理  put    item      
                                                 var centerResultURL=hostPort+"/obpm/runtime/"+applicationId+"/documents/"+docId;            
                                                 var sendcenterResultData="[]";         
                                                 var centerResultJSONString = URLConnector.put(centerResultURL, sendcenterResultData);                                       
                                                  println("User Info Query Add Post return Result: "+centerResultJSONString);      
                                                         
                                                 //6.表单数据进行后置处理  post   addData     
                                                  var postAfterURL=hostPort+"/obpm/runtime/"+applicationId+"/activities/__LHGGRcNlJlquvr7VvIM/runafteractionscript?docId="+docId+"&viewId=&formId="+formId+"&_templateForm=&parentId=&isRelate=&actType=42&accessToke="+accessToken;     
                                                  var centerResultJSONString = URLConnector.post(postAfterURL, addData);                                       
                                                  println("User Info Query Add Post return Result: "+centerResultJSONString);                  
                                                                           
                                                                                    
                                               
                                              println("User Info Query Add Post return Result: test  ");                                                
                                               /****/                                
                                              // var JSONString = URLConnector.post(postURL, addData);                                       
                                               println("User Info Query Add Post return Result: "+centerResultJSONString);                                   
                                               println("ttttttttttttttttttttttttttttttttttttttt");                                 
                                              }catch(error){                                       
                                                  println("User Info Query Add Post return error: "+error);                                       
                                              }                                       
                                                                                    
                                           })()                    
                                       
                    /*                    
                    LOGINNO   账号                    
                    LOGINPWD  密码                    
                    DOMAINNAME 域名称 //就是你域后台新建域时填写的名称                    
                    var loginApiUrl="http://192.168.1.204:8080/signon/runtime/login/loginWithCiphertext2";  http://office.teemlink.com:60161 修改成你们的域名或者Ip                    
                    */                    
                    function getAccessToken(LOGINNO,LOGINPWD,DOMAINNAME){                        
                                 var loginApiUrl=hostPort+"/signon/runtime/login/loginWithCiphertext2";                        
                                 var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();                        
                                 var jsonObj = new Packages.com.alibaba.fastjson.JSONObject();                        
                                 var Base64Pwd ="";                        
                                 var AccessToken ="";                        
                                var Base64 = new Packages.cn.myapps.common.util.Base64Util();                        
                                            
                                 jsonObj.put("username",LOGINNO);                        
                                        
                           jsonObj.put("password",LOGINPWD);   
                                 jsonObj.put("remember","0");                        
                                 jsonObj.put("debug","false");                        
                                 jsonObj.put("domainName",DOMAINNAME);                        
                                 jsonObj.put("checkcode","");                        
                                 jsonObj.put("language","CN");                        
                                 var JSONString = URLConnector.post(loginApiUrl,jsonObj.toString());                        
                                 AccessToken = JSONString.get("accessToken");                        
                                 return AccessToken;                        
                    }            
                    /*                    
                    token   用户登录的token                    
                    */                    
                    function getDocIdInfoByAppIdAndFormId(token){                     
                             var r=Math.random();            
                                 var loadDocIdApiUrl=hostPort+"/obpm/runtime/"+applicationId+"/forms/"+formId+"/empty?_="+r+"&formId="+formId+"&appId="+applicationId+"&parentId=";                        
                                 loadDocIdApiUrl=loadDocIdApiUrl+"&accessToke="+token;            
                             var URLConnector = new Packages.cn.myapps.util.http.HttpRequestUtil();                        
                                                        
                                 var JSONString = URLConnector.get(loadDocIdApiUrl);                        
                                 var docId = JSONString.get("data").get("id");                        
                                 return docId;                        
                    }
gary 发表于 2020-12-24 11:54:53 | 显示全部楼层
JSONString.get("data").get("id",null);        
 楼主| Lamson 发表于 2020-12-24 15:24:21 | 显示全部楼层
gary 发表于 2020-12-24 11:54
JSONString.get("data").get("id",null);

好的,谢谢,可以了。
admin 发表于 2026-9-5 07:35:24 | 显示全部楼层
【本回复由 AI 根据产品文档自动生成】

您好,您的场景是"定时任务里通过 HTTP 自调用 runtime 接口创建表单数据"。按 RESTful 文档说明,这种方式有两个关键点容易导致失败:

1、鉴权:/api/runtime/** 下的接口都需要 accessToken(通过 Cookie / 请求头 / query 参数任一方式传递)。定时任务脚本没有登录态,直接 POST 会被拒绝,数据不会入库。如果坚持走 REST,需要先调用登录接口获取 token,再携带 token 调用 POST /documents。

2、接口与参数:新建文档应使用 POST /api/runtime/{applicationId}/documents(创建文档),请求体为 Document JSON,新建时 id 留空即可;您脚本中调用的 .../documents/{docid}/refresh 是刷新已有文档,传已有 docId 不会产生新数据。另外注意路径中的 applicationId、docId、formId 等均需按当前执行用户密钥 DES 加密后传输,直接传明文 id 服务端无法解密。

更推荐的做法:在定时任务脚本里直接使用平台后台 API 创建文档(如通过 getDocumentProcess() 的文档创建/保存方法,把字段值放入文档 items 后保存),可绕开 HTTP 鉴权与 id 加密问题,异常信息也会直接打印在定时任务日志中,便于排查。

参考文档:
http://docs.myapps.cn/restful-api/runtime/document/
http://docs.myapps.cn/iscript-guid/api/doc/

本版积分规则

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

GMT+8, 2026-9-27 10:05

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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