微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apex 中的条件逻辑

如何解决Apex 中的条件逻辑

使用 this example 作为参考:

trigger CaseTrigger on Case (after insert,after update) {
    if (Trigger.isInsert && Trigger.isAfter) {
        JCFS.API.createJiraIssue('10000','10002');
    }
    if (Trigger.isUpdate && Trigger.isAfter) {
        JCFS.API.pushUpdatesToJira();
    }
}

我想在运行前检查一个名为 boolean__c自定义字段。我期待能够做这样的事情:

trigger CaseTrigger on Case (after insert,after update) {
    if (Trigger.isInsert && Trigger.isAfter && boolean__c=true) {
        JCFS.API.createJiraIssue('10000','10002');
    }
    if (Trigger.isUpdate && Trigger.isAfter && boolean__c=true) {
        JCFS.API.pushUpdatesToJira();
    }
}

这样它只会在 boolean__c 为真时运行。添加此逻辑的正确方法是什么?

解决方法

你可以这样做

trigger CaseTrigger on Case (after insert,after update) {
    if (Trigger.isInsert && Trigger.isAfter && trigger[0].boolean__c=true) {
        JCFS.API.createJiraIssue('10000','10002');
    }
    if (Trigger.isUpdate && Trigger.isAfter && trigger[0].boolean__c=true) {
        JCFS.API.pushUpdatesToJira();
    }
}

但它只会检查第一个元素。当您在 UI 中一次编辑 1 个案例时可以,当您批量编辑某些内容时则不太好。 理想情况下,您应该创建一些 List<Case> scope = new List<Case>();,循环遍历 trigger.new,如果为真 - 添加到列表中。然后只在实际需要它的记录上调用你的函数。

不改变函数是做不到的,它们不带参数,所以看起来像是直接在 trigger.new 上操作。这有点糟糕,没有简单的方法可以重用它们。您必须稍微修改它们以接受 List<Case>(或者可能更多,取决于它们的内部实现,例如它们是否也使用 trigger.oldMap)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。