1. 程式人生 > >開始使用Apex之Apex簡介

開始使用Apex之Apex簡介

-1 logs soap hat 元數據 type 語句 單擊 ans

對於那些對新一代業務應用程序感興趣的開發者而言,Apex代碼是第一個多租戶(multitenant)、按需(on-demand)編程的語言。開發者在用戶界面可以使用很多訂制選項,如定義新的字段,對象,工作流程,批準流程;除此之外,從客戶端程序還可以通過SOAP API來發起諸如delete(),upsert()之類的數據操作請求。

什麽是Apex?

Apex是一種強類型(strongly typed)的面向對象編程語言(object-oriented programming language),開發者可以通過調用Froce.com 中的API接口在服務器上操作流程,管理事務控制等。Apex的語法規則與Java類似,但是其行為表現的與數據庫的存儲過程類似;Apex允許開發者在系統事件中添加業務邏輯,包括按鈕點擊、相關記錄更新,VisualForce頁面;Apex代碼可以由Web服務請求和對象觸發器發起。

作為一種開發語言,Apex具有以下特點:

Apex是整合的(Integrated)

Apex為通用的Force.com平臺的編程提供了內在支持,包括:

1.數據操作語言(Data Manipulation Language,DML)的使用,如INSERT、UPDATE、DELETE,並且提供了處理異常的接口DmlException;

2.內聯的salesforce對象查詢語言(Salesforce Object Query Language,SOQL)和salesforce對象搜索語言(Salesforce Object Serach Language,SOSL),這兩種語言用於返回sObjects對象集合;

3.循環,用於一次批量處理多條數據

4.鎖定語法(Locking syntax),阻止記錄更新沖突

5.Custom public Force.com API calls that can be built from stored Apex methods

6.當用戶對正在被Apex引用的數據實行操作、刪除時進行警告和報錯提示;

使用方便

Apex是類Java語言,在變量、表達式、代碼塊、條件語句、循環語句、類、數組等的用法上有很多相似之處;所以使用過類似的語言,Apex是很容易上手的。

Data focused

Apex is designed to thread together multiple query and DML statements into a single unit of work on the Force.com platform server. Developers use database stored procedures to thread together multiple transaction statements on a database server in a similar way. Like other database stored procedures, Apex does not attempt to provide general support for rendering elements in the user interface.

語法嚴格

Apex是一種強類型的編程語言,通過直接引用的方式操作對象和字段;如果有任何一個引用不可用,編譯器在編譯階段就會報錯;Apex將所有的字段、對象、類的依賴關系存儲在元數據(Metadata)中,以防他們在被Apex代碼引用時被刪除。

服務器委托(Hosted)

Apex是解釋執行(interpreted, executed)的,並且完全由Force.com平臺控制。

多租戶(Multitenant)

與Force.com平臺的其他部分一樣,Apex是運行在多租戶環境中的。Apex的運行引擎可以防止錯誤代碼獨占共享資源(the Apex runtime engine is designed to guard closely against runaway code, preventing it from monopolizing shared resources),任何違反限制的代碼都會拋出錯誤提示

自動升級更新(Automatically upgradeable)

當Force.com平臺的其他部分升級時,你無須重寫以更新Apex代碼,因為編譯代碼是作為平臺的元數據存儲的,所以Apex會隨著Salesforce的發行自動升級。

測試便捷

Apex為單元測試的創建執行提供了內在支持,測試結果返回代碼覆蓋率,還可以指出哪一部分的代碼利用更加高效;在Salesforce正式發布之前,要先使用單元測試保證所有的代碼都按照預期的效果執行。

版本

你可以用不同版本的Force.com API保存Apex代碼,Apex有Performance Edition, Unlimited Edition, Developer Edition, Enterprise Edition, and Database.com幾種不同的版本

Apex核心概念

Apex版本設定

可以在Salesforce用戶界面設定不同版本的API,以保存不同版本的class和trigger,通過該設定,不僅僅修改了API的版本,同時也會修改Apex的版本。不同版本之間的class或者trigger的名字必須保證唯一性。

Salesforce每年會有三次更新,每次更新都會有一個新版本的API,可以在version settings選項中選擇自己需要的API版本

技術分享

變量、方法、類的命名

不能使用Apex的關鍵字和保留關鍵字命名

變量和表達式的使用

Apex是強類型的編程語言,與Java一樣,當你第一次引用一個變量時必須要指定其數據類型,Apex的變量包括基本類型,如Integer、String、Date、Boolean;也包括復雜數據類型,如list、map、object、sObject

變量的命名規則如下

datatype variable_name [ = value];

可以在聲明時給變量初始化,也可以在使用時為其初始化

Apex的基本數據類型(primitive data type)作為方法參數時值傳遞的方式,意味著形參數值的改變只在方法體內有效,當方法返回,參數也將隨之失效,且形參的改變不能作用到實參上;

Apex的復雜數據類型(Non-primitive data type)作為方法參數時仍然采用值傳遞的方式,如sObject,但與基本數據類型不同的是,當方法返回時,形參仍然引用與方法調用之前相同的對象,並且不能更改為指向另一個對象;也就是說,方法結束後形參並不消失,而是與實參指向同一個對象,所以在方法體中對形參的修改也會作用到實參身上。(Non-primitive data type arguments, such as sObjects, are also passed into methods by value. This fact means that when the method returns, the passed-in argument still references the same object as before the method call and can‘t be changed to point to another object. However, the values of the object‘s fields can be changed in the method)

Apex語句

Apex的語句必須以分號(semicolon)做結尾,Apex語句包括以下類型:

1.賦值語句(Assignment)

2.條件語句(Conditional)

3.循環語句(Loops,do-while、for、while)

4.鎖定語句(Locking)

5.數據操作語言(DML)

6.事務控制語句(Transaction Control)

7.方法調用(Method Invoking)

8.異常處理(Exception Handling)

什麽時候使用Apex?

Salesforce預構建的應用模塊提供了很多強大的CRM功能,當然Salesforce也可以定制特定的應用模塊,如果與構建的應用模塊滿足不了你的需求,Force.com平臺為高級管理人員提供了多種方法來實現自定義功能。當Apex的應用領域很廣泛,包括:

Apex

1.創建web服務

2.創建郵件通知

3.對多個對象執行復雜的驗證

4.創建不受工作流支持的復雜業務流程

5.創建自定義事務邏輯(指發生在整個事務上的邏輯,而不是單個記錄或對象)

6.將自定義邏輯附加到另一個操作,例如保存一個記錄,以便在執行操作時發生,不管它源自於用戶界面、Visualforce頁面,還是來自SOAP API。

Lighting Component

Lighting Component使用基於標簽(tag-based)的標記語言,使您能夠構建組件來定制Lightning Experience, Salesforce1,或者構建自己的獨立應用程序。組件在客戶端使用由 JavaScript 事件驅動架構 (event-driven architecture)支持,在服務器端使用Apex技術。

Visualforce

Visualforce是種基於標簽的標記語言,它為開發人員提供了一種更強大的構建應用程序和自定義Salesforce用戶界面的方法,使用Visualforce可以:

1.構建向導和其他多步驟流程(Build wizards and other multistep processes)

2.通過應用程序創建自己的自定義流程控制

3.定義導航模式(navigation patterns)和特殊數據規則(data-specific rules),以實現最佳、高效的應用程序交互。

SOAP API

如果您想要將功能添加到一個只處理一種記錄類型而且不需要任何事務控制(例如設置保存點或回滾更改)的復合應用程序,請使用標準的SOAP API調用。

Apex的執行原理

Apex在Force.com平臺上完全按需運行。開發人員將Apex代碼寫入並保存到平臺,最終用戶通過用戶界面觸發Apex代碼的執行。

技術分享

當開發人員將Apex代碼寫入並保存到平臺時,平臺應用服務器(platform application server)首先將代碼編譯成Apex運行解釋器(Apex runtime interpreter)可以理解的一組抽象指令集(an abstract set of instructions),然後將這些指令保存為元數據(metadata.)。當最終用戶觸發Apex時(可能通過單擊按鈕或訪問Visualforce頁面),平臺應用程序服務器從元數據中檢索已編譯的指令,並通過解釋器發送它們,最後返回結果。最終用戶在執行時間上與標準平臺請求沒有差異。

Apex的局限性

Apex是在雲端保存和運行的語言,雖然它提供了許多 在平臺上自動化業務流程的好處,它不是一種通用編程語言。

1.不能改變標準功能——只能阻止功能的發生,或者添加額外的功能。

2.不能生成臨時文件(Create temporary files)

3.不能衍生線程(Spawn threads)

Apex的限制

Apex代碼都運行在Force.com平臺上,Force.com平臺是所有其他組織使用的共享資源。為了保證平臺穩定的性能和可伸縮性,Apex的執行總受到約束限制,確保不會僅因Apex的執行影響Salesforce的整體服務。這意味著Apex代碼在一次執行過程中會受到操作數量的限制(比如DML或SOQL)。

所有Apex請求都返回一個包含1到50,000個記錄的集合。即使每次只操作一條記錄,也需要使用集合。因此,必須學會批處理的編程模式。因為如果不這樣做,可能會受到操作數量上的限制(governor limits)。

開始使用Apex之Apex簡介