gaojie8609 发表于 2023-7-30 16:31:00

请教关于persist_publishContent函数的使用方法

我想做一个流程表单,然后审核完毕以后,通过脚本将表单信息新建一个内容文档,目前文字方面的数据已经可以正常创建转过去,但是附件带不过去。我尝试使用data以及json直接作为docdata属性,均失败。
这是我的代码:

var htzt = this.data.htzt;
var htbh = this.data.htbh;
var subject = this.data.subject;
var qydw = this.data.qydw;
var xdfs = this.data.xdfs;
var wfss = this.data.wfss;
var htxz = this.data.htxz;
var htfl = this.data.htfl;
var gcmc = this.data.gcmc;
var gcdd = this.data.gcdd;
var htje = this.data.htje;
var bz = this.data.bz;
var kssj = this.data.kssj;
var jzsj = this.data.jzsj;
var qdbm =this.data.qdbm;
var qdr = this.data.qdr;
var explain =this.data.explain;
var datatable = this.data.datatable;
var yzyz = this.data.yzyz;
var yzssdw = this.data.yzssdw;
var qsfs = this.data.qsfs;
var ldfs = this.data.ldfs;
var qdrq = this.data.qdrq;
var sxrq = this.data.sxrq;
var sdrq = this.data.sdrq;
var lcbm = this.data.lcbm;
var attachment =this.form.get("attachment").json;
var data = {
       "wf_formId" : "0cfd0b20-df8c-4ee8-93b7-2e18b155fa70",//wf_formId:流程的表单Id.
       //"wf_attachmentIds" : ,
       //"cms_attachmentIds" : ["参数1"],
       "docData" : {
            "htzt":htzt,
            "htbh":htbh,
            "subject":subject,
            "qydw":qydw,
            "xdfs":xdfs,
            "wfss":wfss,
            "htxz":htxz,
            "htzt":htzt,
            "htfl":htfl,
            "gcmc":gcmc,
            "gcdd":gcdd,
            "htje":htje,
            "bz":bz,
            "kssj":kssj,
            "jzsj":jzsj,
            "qdbm":qdbm,
            "qdr":qdr,
            "explain":explain,
            "datatable":datatable,
            "yzyz":yzyz,
            "yzssdw":yzssdw,
            "qsfs":qsfs,
            "ldfs":ldfs,
            "qdrq":qdrq,
            "sxrq":sxrq,
            "sdrq":sdrq,
            "lcbm":lcbm,
            "attachment":attachment
            },
       "skipPermission" : "Ture",
       "title" : subject,
       "docStatus" : "published",
       "categoryId" : "15d840e3-4964-40f5-a782-5bf16933a3bf"
}
console.log(data.docData);
var action = this.Actions.load("x_cms_assemble_control");
       action.DocumentAction.persist_publishContent(                //平台封装好的方法
      data,   //body请求参数
      function( json ){                  //服务调用成功的回调函数, json为服务传回的数据
         data = json.data;                //为变量data赋值
         console.log("调用成功:"+data);
      }.bind(this),
   function( json ){ //服务调用失败的回调函数, json为服务传回的数据
      data = json.data; //为变量data赋值
      console.log("调用失败:"+data);
   }.bind(this)
    );


论坛管理员 发表于 2023-7-31 09:58:05

没有办法同时在发布时上传附件,您可以在发布后拿到docid,然后再上传附件

gaojie8609 发表于 2023-7-31 16:17:18

论坛管理员 发表于 2023-7-31 09:58
没有办法同时在发布时上传附件,您可以在发布后拿到docid,然后再上传附件

...

您好,按照您的指点已经修改了代码,我在流程表单中用按钮测试,可以正常生成文档以及附件。但是我把代码放到流程中的脚本活动里,就无法正常提交附件,而且创建人也变成了cipher。求教:handshake

论坛管理员 发表于 2023-8-1 09:25:36

创建人也变成了cipher,这个是正常的,后端执行人是cipher,您脚本内不能执行,加一些print输出,日志查看器里看看报错信息

gaojie8609 发表于 2023-8-1 12:57:02

论坛管理员 发表于 2023-8-1 09:25
创建人也变成了cipher,这个是正常的,后端执行人是cipher,您脚本内不能执行,加一些print输出,日志查看 ...




var htzt = this.data.htzt;
var htbh = this.data.htbh;
var subject = this.data.subject;
var qydw = this.data.qydw;
var xdfs = this.data.xdfs;
var wfss = this.data.wfss;
var htxz = this.data.htxz;
var htfl = this.data.htfl;
var gcmc = this.data.gcmc;
var gcdd = this.data.gcdd;
var htje = this.data.htje;
var bz = this.data.bz;
var kssj = this.data.kssj;
var jzsj = this.data.jzsj;
var qdbm = this.data.qdbm;
var qdr = this.data.qdr;
var explain = this.data.explain;
var datatable = this.data.datatable;
var yzyz = this.data.yzyz;
var yzssdw = this.data.yzssdw;
var qsfs = this.data.qsfs;
var ldfs = this.data.ldfs;
var qdrq = this.data.qdrq;
var sxrq = this.data.sxrq;
var sdrq = this.data.sdrq;
var lcbm = this.data.lcbm;
var docreData = [];
var documentData = {//定义文档内容数据
       "wf_formId" : "0cfd0b20-df8c-4ee8-93b7-2e18b155fa70",//wf_formId:流程的表单Id.
       "docData" : {
            "htzt":htzt,
            "htbh":htbh,
            "subject":subject,
            "qydw":qydw,
            "xdfs":xdfs,
            "wfss":wfss,
            "htxz":htxz,
            "htfl":htfl,
            "gcmc":gcmc,
            "gcdd":gcdd,
            "htje":htje,
            "bz":bz,
            "kssj":kssj,
            "jzsj":jzsj,
            "qdbm":qdbm,
            "qdr":qdr,
            "explain":explain,
            "datatable":datatable,
            "yzyz":yzyz,
            "yzssdw":yzssdw,
            "qsfs":qsfs,
            "ldfs":ldfs,
            "qdrq":qdrq,
            "sxrq":sxrq,
            "sdrq":sdrq,
            "lcbm":lcbm
            },
       "skipPermission" : "Ture",//跳过权限更改
       "title" : subject,//标题
       "documentType" : "数据",
       "appId":"6cac909e-6958-4e7e-8214-a23e26ff8fc1",
       "appName":"合同管理",
       "appAlias":"合同管理",
       "categoryId" : "15d840e3-4964-40f5-a782-5bf16933a3bf", //分类ID
       "categoryName":"合同信息",
       "docStatus":"published"

}

var action = this.Actions.load("x_cms_assemble_control");
      action.DocumentCipherAction.publishContentByWorkFlow(                //平台封装好的方法
      documentData,   //body请求参数
      function( json ){                  //服务调用成功的回调函数, json为服务传回的数据
         docreData = json.data;               //为变量data赋值
         var attachmentController = this.form.get("attachment").attachmentController; //获取附件容器
         var attachmentList = attachmentController.attachments; //获取所有的附件
         var attachmentData = attachmentList.data; //获取第一个附件的数据
         var n = attachmentList.length;
if (n > 1){
        for (var i=0;i<=n-1;i++){   //循环获取附件信息
            var attachmentData = attachmentList.data; //获取第i个附件的数据
            var uploadData = {
                     "docId":docreData.id,
                     "fileName":attachmentData.name,
                     "fileUrl":"http://124.70.31.24/x_processplatform_assemble_surface/jaxrs/attachment/download/"+attachmentData.id+"/",
                     "site":"attachment",
            }
            print(uploadData);
            var action = this.Actions.load("x_cms_assemble_control");
            action.FileInfoAction.uploadWithUrl(
                     uploadData,
                     function( json ){
                            upreData = json.data;
                            print(upreData);
                     }.bind(this),
                     function( json ){
                            upreData = json.data;
                            print(upreData);
                     }.bind(this)
            );
       }
}
else{
       var uploadData = {
                     "docId":docreData.id,
                     "fileName":attachmentData.name,
                     "fileUrl":"http://124.70.31.24/x_processplatform_assemble_surface/jaxrs/attachment/download/"+attachmentData.id+"/",
                     "site":"attachment",
            }
            print(uploadData);
            var action = this.Actions.load("x_cms_assemble_control");
            action.FileInfoAction.uploadWithUrl(
                     uploadData,
                     function( json ){
                            upreData = json.data;
                            print(upreData);
                     }.bind(this),
                     function( json ){
                            upreData = json.data;
                            print(upreData);
                     }.bind(this)
            );
       
}   
      }.bind(this),
   function( json ){ //服务调用失败的回调函数, json为服务传回的数据
      docreData = json.data; //为变量data赋值
   }.bind(this)
    );





代码如上,我添加了print 并没有正常输出信息。。。
您帮我看下是哪里有问题。
我将代码放到表单中,就可以正常转存文本内容以及附件,放到这个里面就只能转存文本信息,转存不了附件。

论坛管理员 发表于 2023-8-1 16:38:04

不好意思,您前面帖子我没有看仔细,看到您的流程图和代码才明白您是流程结束后把流程的信息发布到内容管理中,
这个您完全不需要写这些代码去做的,流程里有一个数据发布的环节,可以把流程的数据发布到内容管理中去,附件可以直接配置携带过去,不需要这些脚本

gaojie8609 发表于 2023-8-5 16:28:26

论坛管理员 发表于 2023-8-1 16:38
不好意思,您前面帖子我没有看仔细,看到您的流程图和代码才明白您是流程结束后把流程的信息发布到内容管理 ...

:Q我晕。。。
页: [1]
查看完整版本: 请教关于persist_publishContent函数的使用方法