查看: 3639|回复: 10

流程流转过程中,不能使用脚本进行请求后台API更新数据?

升级   5.5%

68

主题

61

回帖

550

积分

注册会员

Rank: 2

积分
550
发表于 2024-5-31 11:18:50 | 显示全部楼层 |阅读模式

O2版本:V9.0.2,OS:WIN 2019
在流程图设计中,不能调用脚本,进行对其他流程的数据进行更新?
当前流程1,创建一个脚本:
x_processplatform_assemble_surface -》 updateWithJob


       data = {"参数1":"value1","参数2":"value2"};var action = this.Actions.load("x_processplatform_assemble_surface");       action.DataAction.updateWithJob(//平台封装好的方法      job,//uri的参数      data,//body请求参数      function( json ){ //服务调用成功的回调函数, json为服务传回的数据         data = json.data; //为变量data赋值      }.bind(this),     function( json ){ //服务调用失败的回调函数, json为服务传回的数据        data = json.data; //为变量data赋值     }.bind(this)    );


通过这个脚本,在执行流程时,更新流程2的状态数据;

1、执行到“同步更新状态”,造成应用卡死:为什么?

2、不能实现,在流程1 流程的时候,更新其他流程的数据?
根据流程1的执行情况 -》 更新流程2的状态,如何实现?




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2024-6-3 09:51:51 | 显示全部楼层
您的方案肯定是可行的,通过脚本活动去更新没问题,您脚本活动里写的脚本发出来看看,卡死时后台肯定是有报错的,错误日志截图看看
回复

使用道具 举报

升级   5.5%

68

主题

61

回帖

550

积分

注册会员

Rank: 2

积分
550
发表于 2024-6-3 11:26:22 | 显示全部楼层

执行流程如下:

其中:执行更新的脚本:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   5.5%

68

主题

61

回帖

550

积分

注册会员

Rank: 2

积分
550
发表于 2024-6-3 11:26:38 | 显示全部楼层
this.define("updateSubjectFinalStatusByFlow",function(){

    // 获取当前工作的状态,运行中为work,流程结束:workCompletedList
    const lastTask = this.workContext.getTaskCompletedList().slice(-1)[0]
    // console.log("【归档】最后一条已办,结束前的执行: ======> " ,JSON.stringify(lastTask))

    let subject_final_status = "STARTING"
    if(lastTask && lastTask.currentActivityName == "同步更新状态"){
        if(lastTask.routeName ==="同意"){
            subject_final_status = "COMPLETED"
        }else if(lastTask.routeName.contains("拒绝")){
            subject_final_status = "REJECTED"
        }
    }

    // 更新归档流程中的状态
    this.data.subject_final_status = subject_final_status


    // 2、同步更新【立项数据】记录
    const finalJobId = this.workContext.getWork().job
    const recordJobId = this.data.record_job_id

    let recordBody = {
        subject_final_status:subject_final_status,
        final_job_id: finalJobId
    };
    surfaceAction.DataAction.updateWithJob(//平台封装好的方法
        recordJobId,//uri的参数
        recordBody,//body请求参数
        function( json ){ //服务调用成功的回调函数, json为服务传回的数据
            console.log("更新 recordJobId ==> ",recordJobId,JSON.stringify(json.data))
        }.bind(this),
        function( json ){ //服务调用失败的回调函数, json为服务传回的数据
            console.error(JSON.stringify(json.data))
        }.bind(this)
    );

    console.log("更新计划项目归档状态完毕 =========== ",subject_final_status)
})

回复

使用道具 举报

升级   5.5%

68

主题

61

回帖

550

积分

注册会员

Rank: 2

积分
550
发表于 2024-6-3 11:27:09 | 显示全部楼层
后台日志检查以及控制台的输出,未显示任何错误
问题出现于:
调用process,根据job更新业务数据:
根据当前流程2中存储的 recordJobId是流程1的job,然后根据这个job,执行更新流程1的业务数据时,出现页面一直loading,无法结束的问题

如果不执行 -> surfaceAction.DataAction.updateWithJob -> 可以顺利的往后执行并结束任务

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2024-6-5 10:04:41 | 显示全部楼层
surfaceAction在哪里定义了?
回复

使用道具 举报

升级   5.5%

68

主题

61

回帖

550

积分

注册会员

Rank: 2

积分
550
发表于 2024-6-5 11:49:15 | 显示全部楼层
在最外层:
var surfaceAction = this.Actions.load("x_processplatform_assemble_surface");

用到的公共定义,我都写在了外层,通用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

139

主题

1万

回帖

4万

积分

超级版主

Rank: 8Rank: 8

积分
41458
发表于 2024-6-7 09:32:33 | 显示全部楼层
您跟踪一下,多加一些输出,看看jobid和jobbody是否正确,然后正确的回调和错误的回调里的输出是否有在控制台输出?
回复

使用道具 举报

升级   0.1%

136

主题

241

回帖

10

积分

注册会员

Rank: 2

积分
10
发表于 2024-11-8 16:42:14 来自手机 | 显示全部楼层
我也一样出现了这个问题,请问楼主怎么解决的?区别是我是直接在结束节点的活动执行后事件出现的这个问题,一样是工作流页面一直loading无法结束

点评

同遇!  发表于 2024-11-19 09:37
回复

使用道具 举报

升级   0.1%

136

主题

241

回帖

10

积分

注册会员

Rank: 2

积分
10
发表于 2024-11-30 15:04:27 | 显示全部楼层
szhtest 发表于 2024-11-8 16:42
我也一样出现了这个问题,请问楼主怎么解决的?区别是我是直接在结束节点的活动执行后事件出现的这个问题, ...

我最后更改到环节的活动流转完成环节事件里写脚本就可以了,我之前有遇到过这个问题:流程事件:活动执行后,响应速度非常慢,原理是什么   ,不知是否有关系,你可以参考一下
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread