Apex仅适用于force.com托管的应用程序?

时间:2014-05-30 23:25:23

标签: salesforce apex-code apex

Apex仅允许在force.com上托管的“原生”应用程序中使用吗?

或者,Apex是否也可用于外部应用程序以点击REST API和批量API等“开放API”?

我认为我的困惑部分在于如何在各种文档中使用术语“Rest API”。在软件世界的其他部分,REST通常是指基于HTTP的协议,用于跨不同域(以及某些格式等)交换数据。但是,我认为销售人员中的Rest API可能有时会引用本机应用程序从force.com中检索salesforce数据的可选方法。这是对的吗?

1 个答案:

答案 0 :(得分:4)

不确定我理解你的问题......

Apex可以在内部使用"在:

  • 数据库触发器,
    • 遵循MVC模式的Visualforce控制器,
    • 解析传入电子邮件的逻辑,例如,从中制作Case或Lead记录,
    • 可以安排每晚重新计算一些重要内容的异步作业
    • 您可以使用实用程序类来跨这些
    • 重用代码

A"内部"将使用"执行匿名"允许您针对环境触发一次性代码片段的机制。用于新类,数据修复等的原型设计。您可以在Eclipse IDE或Developer Console(名称旁边的右上角)中执行此操作。


最后但并非最不重要 - "外部"的使用。

Apex代码可以作为webservice公开,并由PHP,.NET,Java甚至JavaScript应用程序调用。在以下情况下这是一个不错的选择:

  • 您希望在您自己的Visualforce页面上以及在传递几个字符串或一个简单的JSON对象的某个移动应用程序中重用相同的逻辑
  • 不得不重新实现每个新应用程序中的逻辑并在之后保持这一点
  • 想象一下插入帐户和联系人 - 您的移动设备必须实施一些事务控制并在联系人无法加载时删除Acc。乱。并且会浪费更多的API调用(插入acc,插入con,ooops,删除acc)。使用公开网络服务的方法,您可以接受Apex代码中的两个参数,做好您的魔力,如果失败 - 它只需一次交易,所以SF会为您回滚。

有两种主要方法:

  • SOAP API 主要使用标有webservice关键字的全局方法。其他应用程序开始调用这些应用程序的最简单方法是从SF中提取并消耗"所谓的企业WSDL"文件。它是一个巨大的XML文件,可以在.NET应用程序中解析,生成代码,帮助您编写您熟悉的代码。这些生成的类将为您构造XML消息,发送它,处理响应(如果SF发送了错误消息,则抛出您自己的异常)等等。

Very simple example

global class MyWebService {
    webService static Id makeContact(String lastName, Account a) {
        Contact c = new Contact(lastName = 'Weissman', AccountId = a.Id);
        insert c;
        return c.id;
    }
}
  • REST API 允许您执行类似的操作,但您需要使用正确的HTTP谓词(" PUT"最适合插入," PATCH"用于更新& #34;,"删除"等等。)

您可以在REST API指南中详细了解它们:http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=apex_rest_methods.htm|StartTopic=Content%2Fapex_rest_methods.htm|SkinName=webhelp