我对此进行了调查,似乎没有直接相关的功能,因为 Apex 的类型非常强,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150 + 3”而不是“153”之类的表达式,以帮助她加快处理速度。不幸的是,我是 salesforce 的新手,所以我很难想出点子。这甚至可行吗?
问问题
1885 次
3 回答
1
您可以允许手动输入 SOQL 语句,然后使用动态 SOQL 来处理它们。但这需要比“150 + 3”多一点。
否则,您可以在 JavaScript 中执行此操作并将值作为已计算的数字传递回 Apex。
于 2013-07-31T17:41:06.337 回答
1
可以通过调用 Tooling 或 Apex API 上的 executeAnonymous API 方法来模仿 Apex 中的 Javascript eval()。
诀窍是您需要在 eval 字符串正文中传递任何必需的输入参数。如果需要响应,您需要一种机制来提取它。
有两种常见的方法可以从 executeAnonymous 获取响应。
- 在执行结束时故意抛出异常并包含响应。Kevin在 Apex 的 EVAL() 中介绍了这种方法。Salesforce1 平台上的安全动态代码评估。
- 我使用了这种方法的变体,但通过调试日志而不是故意异常返回响应。请参阅向 Apex 添加 Eval() 支持。
使用我的示例 Apex 将类似于:
integer sum = soapSforceCom200608Apex.evalInteger(
'integer result = 150 + 3; System.debug(LoggingLevel.Error, result);');
您可能无法在成员初始化期间或在构造函数中执行标注。
顺便说一句,Salesforce Stackexchange 网站是询问 Salesforce 特定问题的好地方。
于 2014-11-28T00:58:42.050 回答
0
Script.apex 可以帮助评估 javascript 表达式。看一下这个。https://github.com/Click-to-Cloud/Script.apex。就这么简单。
整数结果 = (Integer)ScriptEngine.getInstance().eval('1 + 2');
于 2018-05-05T05:24:35.057 回答