2013-07-31 1 views
1

이것에 대해 살펴 봤는데 Apex가 강력하게 입력 된 이후로 직접 ​​사용할 수있는 기능이없는 것으로 보입니다. 그러나 누군가 해결 방법을 찾았는지 궁금합니다. 나는 신용 위험 개체를 설계하고있어 내 고객은 필드를 업데이트 할 때 "153"대신 "150 + 3"과 같은 식을 삽입 할 수 있기를 원합니다. 불행히도 Salesforce를 처음 사용하기 때문에 아이디어를 얻는 데 어려움을 겪고 있습니다. 이것은 심지어 실현 가능합니까?apex/Salesforce에 eval()이 있습니까?

답변

1

SOQL 문을 직접 입력 한 다음 동적 SOQL을 사용하여 처리 할 수 ​​있습니다. 그러나 이것은 "150 + 3"보다 약간 더 필요할 것입니다.

그렇지 않으면 자바 스크립트에서이를 수행하고 값을 Apex에 다시 계산 된 숫자로 전달할 수 있습니다.

+0

좋은 아이디어. 고마워, 나는 그것을 시도 할 것이다. – grantb747

1

Tooling 또는 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

관련 문제