2013-07-31 54 views
1

我仔細研究了這一點,似乎沒有直接相關的函數可用,因爲Apex是如此強大的類型,但我想知道是否有人找到了解決方法。我正在設計一個信用風險對象,我的客戶希望能夠在更新字段時插入諸如「150 + 3」而不是「153」之類的表達式,以幫助加速她的工作。不幸的是,我對銷售人員很陌生,所以我很難提出想法。這是否可行?apex/Salesforce中是否存在eval()等價物?

回答

1

您可以允許手動輸入SOQL語句,然後使用動態SOQL來處理它們。但是這需要比「150 + 3」多一點。

否則,您可以在JavaScript中執行此操作,並將該值作爲已計算的數字傳回給Apex。

+0

好主意。謝謝,我會嘗試。 – grantb747

1

可以通過在工具或Apex API上調用executeAnonymous API方法來模擬Apex中的Javascript eval()。

訣竅是你需要在eval字符串主體中傳遞任何必需的輸入參數。如果需要響應,您需要一種機制來提取它。

有兩種常用的方法可以從executeAnonymous獲得響應。

  1. 在執行結束時拋出故意的異常幷包含響應。 Kevin在EVAL() in Apex. Secure Dynamic Code Evaluation on the Salesforce1 Platform中涵蓋了這種方法。
  2. 我使用了這種方法的變體,但是通過調試日誌返回響應,而不是有意的異常。見Adding Eval() support to Apex

用我的例子中,頂點會是這樣的:

integer sum = soapSforceCom200608Apex.evalInteger(
       'integer result = 150 + 3; System.debug(LoggingLevel.Error, result);'); 

您可能無法成員初始化過程中或在構造函數中進行標註。

順便提一下,Salesforce Stackexchange site是向Salesforce提出特定問題的好地方。

+0

你搖滾!從來不知道這是可能的Apex!你有我的投票! – Patlatus

相關問題