JS连续调多个填报CPT,如何能一个CPT commit一次数据库,而不是一个事务。

主页面CPT的加载成功事件里,通过JS语句用对话框调用其他CPT,每个CPT一个填报任务,后续的填报任务依赖前一个CPT填报结果,并且在主页面加载成功事件结束前,其他用户如果调用同样的CPT,必须依赖前一个用户调用主页面过程中的数据提交结果(比如前一个用户调主页面,给数据库一个状态,其他用户根据这个状态要等待前一用户执行完毕JS事件)。

所以,需要JS每调用一个填报CPT,必须要实时Commit数据,而不是所有CPT调用完成后再作为一个事务提交数据库。

有没有大神看懂了给个建议。谢谢!


或者这么问:JS如何COMMIT事务?

ggcegxf 发布于 2020-4-19 10:57 (编辑于 2020-4-20 08:03)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
ggcegxfLv3见习互助
发布于2020-4-21 08:22(编辑于 2020-4-21 08:40)

问题解决了。

我要解决的问题:1、通过JS事件触发一系列的填报任务。2、这一系列的填报任务每个都需要单独提交事务到数据库后才能执行后续任务。

解决方法:

        主页面的加载起始JS事件触发填报任务,可以用FR.showDialog打开另外一个CPT,在新CPT里设计填报,然后在新CPT的加载结束用verifyAndWriteReport自动提交入库。

        一开始在JS事件里顺序用多个FR.showDialog打开多个CPT,因为事务最后才提交,导致中间多个CPT的填报执行数据不稳定,结果经常出现不同(啥原因啊?)。并且因为第一个填报任务没有实际提交到数据库,导致其他用户在填报任务执行期间打开本页面也会开始执行这一系列的填报CPT。

        现在的解决办法是:JS事件只用对话框打开第一个CPT,在新CPT的填报成功事件再打开下一个CPT,依次类推,任务完美执行完毕,中间结果也完美的控制其他用户再次调起任务,下一个CPT的填报依赖的上一个CPT的填报结果也正确。(这是一整个不能断开的逻辑,所以孤陌的多个定时调度并用公式控制每一个调度的启动不能符合要求)

        现在仍然存在的但不影响使用的问题是:在主页面的加载起始中调起第一个CPT后,如果不关闭对话框,页面感官极差,如果关闭对话框,后续的填报任务将在后台静默运行,当前主页面展示的数据是未更新的上一期数据(仅存在于今日第一个打开本主页面的用户)。解决思路是用时间延迟或自动刷新页面解决,或者考虑将本主页面设置为定时调度是否可行。

        感谢孤陌大神的热心回答讨论,虽然没实际解决问题,但很热心,非常感谢!


最佳回答
0
孤陌Lv6资深互助
发布于2020-4-19 11:55

看不懂  感觉你要用定时调度的功能??

  • ggcegxf ggcegxf(提问者) 对,但是在定时调度的时候,其他用户要等待。
    2020-04-20 08:00 
  • 孤陌 孤陌 回复 ggcegxf(提问者) 调度时间设置好间隔就好了 然后防错 可以写公式判断 来判断上一个调度完成了没有 没有完成就不执行调度
    2020-04-20 08:21 
  • ggcegxf ggcegxf(提问者) 回复 孤陌 如果在一个“加载结束”事件里,上一个调度成功完成后,正在执行下一个调度的时候,此时数据库中上一个调度的结果没有提交到数据库,其他用户不知道【定时调度】或【另一个用户】已经开始调度了。所以需要在上一个调度完成后,有一个Commit动作,然后执行下一个调度。就这个Commit动作有没有办法实现。
    2020-04-20 09:22 
  • 孤陌 孤陌 回复 ggcegxf(提问者) 定时调度 是无法执行JS的
    2020-04-20 10:05 
  • 孤陌 孤陌 回复 ggcegxf(提问者) 可以用写SQL公式来获取 已经说了可以在定时调度 判断条件写公式来判断 上一个是不是已经完成调度
    2020-04-20 10:07 
最佳回答
0
xiaomiliLv6初级互助
发布于2020-4-20 09:14

那可以用审批流程做一下试试啊;这样就可以解决你的问题了;

  • 2关注人数
  • 611浏览人数
  • 最后回答于:2020-4-21 08:40
    请选择关闭问题的原因
    确定 取消
    返回顶部