我已经调查了这个,似乎没有直接相关的功能可用,因为Apex是如此强类型,但我想知道是否有人找到了解决方法。我正在设计一个信用风险对象,我的客户希望能够在更新字段时插入诸如“150 + 3”而不是“153”的表达式,以帮助加快她的速度。不幸的是,我是salesforce的新手,因此我无法提出想法。这甚至可行吗?
答案 0 :(得分:1)
您可以允许手动输入SOQL语句,然后使用动态SOQL来处理它们。但这需要比“150 + 3”多一点。
否则,您可以在JavaScript中执行此操作,并将值作为已计算的数字传递回Apex。
答案 1 :(得分:1)
可以通过在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提出具体问题的好地方。
答案 2 :(得分:0)
Script.apex可以帮助评估javascript表达式。看一下这个。 https://github.com/Click-to-Cloud/Script.apex。就像这一样简单。
整数结果=(整数)ScriptEngine.getInstance()。eval(' 1 + 2');