php - 从 Web 服务制作 APEX 触发器 - 这可能吗?

标签 php web-services salesforce apex-code

我正在尝试在 SalesForce Opportunity 中编写一个触发器,该触发器必须使用预定义的用户名和密码将更新的 StageName 发送到外部 Web 服务。

这里是示例代码:

trigger isStageChanged on Opportunity (after update) {
    for (Opportunity o : Trigger.new) {
        Opportunity beforeUpdate = System.Trigger.oldMap.get(o.Id); 

        if(beforeUpdate.StageName != o.StageName) {
            // Call WS
        }
    }

}

“Call ws”表示使用如下链接: http://mydomain.com/webservice/index.php?username=MY_USERNAME&password=MY_PASS&stage=opportunityNewStage

问题是:如果我想在不同的 SalesForce 客户上使用此触发器并让他们在安装后配置它们,我可以在哪里存储 MY_USERNAME 和 MY_PASS? 当我红色 APEX 代码开发人员指南时,我红色我可以使用 Web 服务 API 来部署我的触发器,这样我就可以存储用户并传递到我的服务器。是否可以? 在我的服务器上我使用 php。

我希望我的问题很清楚。

最佳答案

您应该存储用户名和密码 using custom settings 。这将允许他们的管理员使用他们提供的值轻松配置用户名和密码。

请注意,您无法从触发器内部进行标注,因为它会保留数据库操作,而是需要使用 @future 注释将标注放入另一个类的公共(public)/全局方法中:

@future public void DoMyCallout(list<id> liOpportunities)
{
    // load your oppties if need be, then do the callout
}

@future 表示此方法将异步运行,因此您可以从触发器中调用它,但它将在另一个线程中运行,因此不会阻止正在进行的数据库操作。

关于php - 从 Web 服务制作 APEX 触发器 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010448/

相关文章:

c# - 我如何获得 WSDL/描述以便我可以在另一个项目中添加 Web 引用?

java - 从 Web 服务内部调用 Web 服务并且不等待响应

javascript - Salesforce 自定义按钮返回“意外 token 非法?”

PHP如何将二进制数据编码为base 64

PHP htmlentities 即使有参数也不能工作

PHP 如何本地化 2038 年之后的日期

java - 如何为使用 WSSJInInterceptor 配置的安全性编写 WS-SecurityPolicy 条目?

Salesforce (SFDC) - 公共(public)、静态、全局关键字 - 为整个类(class)使用一个列表?

javascript - 如何检测 salesforce lightning 应用程序是在移动浏览器还是桌面浏览器上运行?

javascript - 我该如何才能使我的 API 只能通过我的应用程序(Javascript 和 PHP)访问?