流程流转过程中,不能使用脚本进行请求后台API更新数据?
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的状态,如何实现?
您的方案肯定是可行的,通过脚本活动去更新没问题,您脚本活动里写的脚本发出来看看,卡死时后台肯定是有报错的,错误日志截图看看
执行流程如下:
其中:执行更新的脚本:
this.define("updateSubjectFinalStatusByFlow",function(){
// 获取当前工作的状态,运行中为work,流程结束:workCompletedList
const lastTask = this.workContext.getTaskCompletedList().slice(-1)
// 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)
})
后台日志检查以及控制台的输出,未显示任何错误
问题出现于:
调用process,根据job更新业务数据:
根据当前流程2中存储的 recordJobId是流程1的job,然后根据这个job,执行更新流程1的业务数据时,出现页面一直loading,无法结束的问题
如果不执行 -> surfaceAction.DataAction.updateWithJob -> 可以顺利的往后执行并结束任务
surfaceAction在哪里定义了? 在最外层:
var surfaceAction = this.Actions.load("x_processplatform_assemble_surface");
用到的公共定义,我都写在了外层,通用
您跟踪一下,多加一些输出,看看jobid和jobbody是否正确,然后正确的回调和错误的回调里的输出是否有在控制台输出? 我也一样出现了这个问题,请问楼主怎么解决的?区别是我是直接在结束节点的活动执行后事件出现的这个问题,一样是工作流页面一直loading无法结束 szhtest 发表于 2024-11-8 16:42
我也一样出现了这个问题,请问楼主怎么解决的?区别是我是直接在结束节点的活动执行后事件出现的这个问题, ...
我最后更改到环节的活动流转完成环节事件里写脚本就可以了,我之前有遇到过这个问题:流程事件:活动执行后,响应速度非常慢,原理是什么 ,不知是否有关系,你可以参考一下
页:
[1]