美文网首页
2020-11-29 Custom button to run

2020-11-29 Custom button to run

作者: 古月的小七 | 来源:发表于2020-11-30 16:06 被阅读0次

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

    • 创建自定义 Action Or Button
      从下图中我们可以看到 Action 提供的选项中,Flow有可能会实现我们的逻辑.


      image.png
    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);
    

    相关文章

      网友评论

          本文标题:2020-11-29 Custom button to run

          本文链接:https://www.haomeiwen.com/subject/oojlwktx.html