7月31日,举行了第十五回公司内部学习会。
此次的题目【RemoteAction的案例】和【SFDX Falcon】都是与salesforce相关的。这次也学到了很多东西。
RemoteAction的案例
RemoteAction是一种可以从Visualforce页面直接向Apex控制器的AJAX执行请求的工具。
通过使用RemoteAction,可从控制器上断开页面执行异步动作,也可在页面上执行任务而不重载整个页面。此外,也有助于减轻视图状态的问题。
为了能够在调用的时候准确地传递必要的数据、RemoteAction具有能够非常有效地调用控制器和从页面上传递数据的功能。
Remote Action的添加方法
①添加到Visualforce页面
在Visualforce页面中使用RemoteAction的时候,JavaScript的调用参数作为请求追加。
远程方法调用是同步运行的,但不等待回复。若返回响应,则回调函数将异步处理响应。
②用Apex里的方法的声明
几乎所有的Apex方法都可以作为RemoteAction来调用,但是方法必须遵守一些简单的规则。
1.在控制器中,Apex的方法声明时,必须把@RemoteAction加到开头。
2.Apex的@RemoteAction方法是static,并且必须是global或public。
3.在方法中,对于参数来说,可以是Apex的原始类型、集合、指定类型的sObject、通用sObject、用户定义的Apex的类和接口。在通用sObject中,为了确定实际类型,必须指定ID或sobjectType的值。在接口参数中,也需要指定apexType来确定实际类型。
4.在方法中,可以返回Apex的原始类型、sObject、集合、用户定义的Apex类和枚举、SaveResult、UpsertResult、DeleteResult、SelectOption或PageReference。
5.在RemoteAction中所使用的方法,需要根据名字和参数的数量来唯一识别,且不能重载。
例如,使用上述方法时,不能同时存在多个getItemId(Integer productNumber)方法。可代替的方案是用不同的名称声明多个方法。
• getItemIdFromName(String objectName)
• getItemIdFromProductNumber(Integer productNumber)
③远程方法和继承
可通过在被继承方法中的Apex控制器调用远程执行。@RemoteAction方法被检索或被调用时,Visualforce会查询页面控制器的继承等级,在控制器的父类中检索@RemoteAction方法。
远程响应的处理
通过远程方法的返回函数异步处理远程方法调用的响应。此回调函数接受以下参数:
• 表示远程调用时的event对象
• 根据远程Apex方法返回的result对象
函数可以根据返回的数据更新页面信息和用户界面元素。
event对象提供了远程调用的针对成功或失败情况下有用的值。
Remote Action VS Action Function
能提供与Remote Action相似功能的有Action Function。Action Function能够通过使用【apex:actionFunction】组件进行利用。
通常,【apex:actionFunction】更容易使用,必要的代码也会比较少。但另一方面,JavaScript可以提供更高的灵活性。
这两个具体的不同点的一部分如下所示。
【apex:actionFunction】标签
1.用户可指定重新显示对象
2.发送表格
3.不需要JavaScript的记述
RemoteAction
1.用户可以传递参数
2.提供回调
3.需要一些JavaScript的记述
限制及考虑事项
・在RemoteAction调用时,虽然不受API限制,但使用RemoteAction的Visualforce页面适用所有标准Visualforce的限制。
・默认情况下,远程呼叫的响应必须在30秒内返回。超过这个的话,呼叫会超时。如果完成请求需要更多的时间,要把超时时间设到120秒。
・请求的大小上限是包括数据头共4MB。
・远程调用的响应大小上限为15MB。
自己也正好在业务中使用过RemoteAction。因为工作中工期的原因,没有什么系统地学习的机会,所以看了这次的发表,我也想能系统地理解而努力。
SFDX Falcon
接下来是关于SFDX Falcon的发表。
SFDX Falcon是Salesforce公司开发的用于提高Salesforce的Package开发便利性的SalesforceCLI插件。具体来说,这是一个用于使Package开发流程自动化的插件。
SFDX Falcon有两种功能。
・AppExchange package kit
便于SFDX中ISV包开发的工具及模板
・AppExchange Demo kit
可轻松创建包含Package的演示工程目录的套件
AppExchange package kit
使用CircleCI这个CI工具,可以自动配置模板用于Package开发环境、环境部署、beta版制作等操作。用户可以在Salesforce Devhub环境、package环境中预先登录SalesforceCLI,剩下的只需在SFDX Falcon中输入交互式所需的信息即可完成雏形。
以这种雏形进行开发,在Github上push后CircleaCI会自动运行,根据情况进行自动化的执行。
AppExchange Demo kit
包装开发完成后,可以简单地创建演示工程目录。
根据软件包的不同,有可能会需要安装后追加设置、测试用户和测试记录等。
虽然需要准备必要的东西,但是只要在demokit中定义一次,就可以一直创建出同样的演示工程目录。
如果事先登录Devhub组织的话,也可以通过输入命令来创建演示工程目录。
注意点
・不支持Windows。由于路径是在Linux下预设的,所以在Windows下使用时会发生引用错误。
・想要在Windows中使用时,需要将SFDX Falcon的安装路径改写为Windows支持的路径。
Salesforce有这么方便的工具呢。我想充实相关知识,也想自己也能早点掌握。