我正在尝试在 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/