2020-11-29 Custom button to run

2020-11-30  本文已影响0人  古月的小七

有这样一个需求, 针对Lead上的某个字段的计算复杂度和实时性要求不高,所以客户想要有一个自定义的Button,可以去Sync这个数据,下面是针对这个需求的具体思路:

image.png

但是如下图所示, 在Schedule-Triggered Flow中,必须设置一个时间,而我们要求是点击Button之后去 Run Batch.所以这个方案不可行.


image.png

所以选用 New Button的时候去执行JS 逻辑,具体实现如下:


image.png
在上图JS处完善JS 逻辑:
具体实现:
{!REQUIRESCRIPT("/soap/ajax/30.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/30.0/apex.js")}
sforce.apex.execute("  RunLeadScoreUpdateBatch","execute",{});

后台Apex对应的写法应该是:

global with sharing class RunLeadScoreUpdateBatch {
    webService static void execute(){
       BatchLeadUpdate b = new BatchLeadUpdate ();  
        //Parameters of ExecuteBatch(context,BatchSize)
        database.executebatch(b,500);
    }
}

这样是可以成功实现该逻辑,但是由于Batch运行时间通常会比较长一些,但是也没没有任何提示, 所以这个设计还需要完善. 持续研究中,会在后续持续更新.

更新来了:我们可以通过以下的方式拿到当前Record的Id,并且对整个页面进行刷新操作:document.location.reload(true)

{!REQUIRESCRIPT("/soap/ajax/30.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/30.0/apex.js")}
var leadId = "{!Lead.Id}";
sforce.apex.execute("RunLeadScoreUpdateBatch","execute",{leadId});
document.location.reload(true);
上一篇下一篇

猜你喜欢

热点阅读