szhtest 发表于 2024-5-18 14:53:43

流程调用 子流程 父流程的附件字段名不相同如何传递

本帖最后由 szhtest 于 2024-5-18 14:54 编辑

如题,父子流程的附件字段名并不相同,而且无法更改(这个父流程对应多个子流程),流程调用应如何传递对应附件数据


尝试了拷贝附件,发现要附件字段名相同才能传递
data.data['返工内容_附件'] = this.data['关联附件']在流程调用的数据脚本进行常规赋值,也不行


有没有什么其他比较方便的方法?

论坛管理员 发表于 2024-5-20 10:26:17

附件应该是有携带过去的,只是site不对,显示的位置就不对,您需要在发起流程时修改一下附件的site

szhtest 发表于 2024-5-20 14:55:56

本帖最后由 szhtest 于 2024-5-21 14:28 编辑

论坛管理员 发表于 2024-5-20 10:26
附件应该是有携带过去的,只是site不对,显示的位置就不对,您需要在发起流程时修改一下附件的site ...
附件的site是指父子流程的表单的附件的字段ID吗?这个父子流程的表单字段ID没法改成一样的,业务那边提供的父子流程的字段名不一样也不允许统一。

如何在发起流程时修改下附件site?你的意思是我表单这个字段名为a,走到流程调用这一步可以强行将字段名修改为与子流程附件字段同名的b,然后就可以用“拷贝附件”这个功能了吗


我现在在流程调用——数据脚本中写了一段赋值+附件从父流程传递到子流程的脚本,但是存在一个问题:我在数据脚本中无法获取到子流程ID,请问应该怎么获取?this.workcontext.getwork获取到的是主流程的ID
var data = this.assignData.get();

data.data['返工类型'] = this.data['类型']
data.data['返工内容'] = this.data['内容摘要']

var workFlowDataId = this.workContext.getWork().id //父流程ID
var action1 = this.Actions.load("x_program_center");//中心服务

var host = "http://192.168.39.254"   //this.Actions.getHost() 获取当前OA所在ip:port

print('--------------------------------------附件列表----------------------------------------------')
print(JSON.stringify(data.attachmentList))

    filelist = data.attachmentList
    var filelist_bhgfj = []
    for(var i=0;i<filelist.length;i++){
      if(filelist['site'] == '关联附件'){
            filelist_bhgfj.push(filelist)

            //构造文件的下载链接
            var downLoadUrl=host+'/x_processplatform_assemble_surface/jaxrs/attachment/download/'+filelist.id+'/work/'+workFlowDataId+'/stream'

                  //最后逐个文件拷贝到当前工作流
                  action1.InvokeAction.execute(
                  "将某个文件数据拷贝到工作流",
                  {
                        "workId" : currentWork.workId,   //需要获取子流程ID但拿不到
                        "fileName" : filelist.id,
                        "fileUrl" : downLoadUrl,
                        "site" : "返工内容_附件",
                        "person" : filelist.person
                  },
                  function( json ){
                        console.log(json)
                        
                  }
                );

      }
      
    }


return data;

我也有试过在事件里面写,但是当我想拿取父流程附件字段我用this.data.附件字段时,打印出来的是附件名称,而非assignData能拿到的附件对象数组

szhtest 发表于 2024-5-21 15:03:08

论坛管理员 发表于 2024-5-20 10:26
附件应该是有携带过去的,只是site不对,显示的位置就不对,您需要在发起流程时修改一下附件的site ...

非常感谢,我发现可以修改的assignData对象,把拿到的data.attachmentList附件对象的site强行更改为与子流程附件字段名相同的值,就可以采用“拷贝附件”的功能传递了,而不需要去调取传递接口


论坛管理员 发表于 2024-5-22 09:26:06

szhtest 发表于 2024-5-21 15:03
非常感谢,我发现可以修改的assignData对象,把拿到的data.attachmentList附件对象的site强行更改为与子 ...

是的哦,附件显示在哪个位置,其实是看site值的,site和附件id可以不一样(默认是一样的)
页: [1]
查看完整版本: 流程调用 子流程 父流程的附件字段名不相同如何传递