【发布时间】:2013-07-31 14:35:00
【问题描述】:
我对此进行了研究,似乎没有直接相关的函数可用,因为 Apex 的类型非常强,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150 + 3”而不是“153”之类的表达式,以帮助她加快处理速度。不幸的是,我是 salesforce 的新手,所以我很难想出点子。这甚至可行吗?
【问题讨论】:
标签: salesforce eval apex-code
我对此进行了研究,似乎没有直接相关的函数可用,因为 Apex 的类型非常强,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150 + 3”而不是“153”之类的表达式,以帮助她加快处理速度。不幸的是,我是 salesforce 的新手,所以我很难想出点子。这甚至可行吗?
【问题讨论】:
标签: salesforce eval apex-code
您可以允许手动输入 SOQL 语句,然后使用动态 SOQL 来处理它们。但这需要比“150 + 3”多一点。
否则,您可以在 JavaScript 中执行此操作并将值作为已计算的数字传递回 Apex。
【讨论】:
可以通过调用 Tooling 或 Apex API 上的 executeAnonymous API 方法来模仿 Apex 中的 Javascript eval()。
诀窍是您需要在 eval 字符串正文中传递任何必需的输入参数。如果需要响应,您需要一种机制来提取它。
您可以通过两种常见的方式从 executeAnonymous 获取响应。
使用我的示例,Apex 将类似于:
integer sum = soapSforceCom200608Apex.evalInteger(
'integer result = 150 + 3; System.debug(LoggingLevel.Error, result);');
您可能无法在成员初始化期间或在构造函数中执行调用。
顺便说一句,Salesforce Stackexchange site 是询问 Salesforce 特定问题的好地方。
【讨论】:
Script.apex 可以帮助评估 javascript 表达式。看一下这个。 https://github.com/Click-to-Cloud/Script.apex。就是这么简单。
整数结果 = (Integer)ScriptEngine.getInstance().eval('1 + 2');
【讨论】: