ApexController 클래스에서 webservice에 대한 콜 아웃을 수행해야합니다. 이렇게하려면 @future (callout = true) 특성을 가진 asycn 메서드가 있습니다. 웹 서비스 호출은 VF 페이지에서 저장 호출로 채워지는 객체를 수정해야합니다.SFDC Apex 코드 : "Future"메소드의 클래스 레벨 정적 변수에 액세스
정적 (미래) 호출이 메서드 인수로 전달되는 모든 개체가 아니기 때문에 정적 데이터에 데이터를 추가하고 정적 메서드에서 액세스하여 웹 서비스 호출을 수행 할 계획이었습니다. 그러나 정적 Map 객체는 다시 초기화되고 static 메소드에서는 null입니다.
누군가가이 문제를 해결하는 방법에 대한 몇 가지 pointeres를 줄 수 있다면 정말 감사하겠습니다. 감사합니다. 여기
코드가 잘린이다 private static Map<String, WidgetModels.LeadInformation> leadsMap;
....
......
public PageReference save() {
if(leadsMap == null){
leadsMap = new Map<String, WidgetModels.LeadInformation>();
}
leadsMap.put(guid,widgetLead);
}
//make async call to Widegt Webservice
saveWidgetCallInformation(guid)
//async call to widge webserivce
@future (callout=true)
public static void saveWidgetCallInformation(String guid) {
WidgetModels.LeadInformation cachedLeadInfo =
(WidgetModels.LeadInformation)leadsMap.get(guid);
.....
//call websevice
}
안녕하세요. 보내 주신 의견에 감사드립니다. 불행히도 Saleforce 리드 ID가 내 웹 서비스에 전달되어야하므로 먼저 DML을 수행 한 다음 전화를해야합니다. 다른 제안이 있으면 감사하겠습니다. 난 그냥 직렬화 접근 방식을 시도하고 JSON 문자열로 개체 데이터를 전달하고 그 트릭에해야합니다. 귀하의 제안에 감사드립니다. – user899849
"master"로 간주되는 데이터베이스 - SF 또는이 내선. 체계? 먼저 시스템을 호출하여 해당 시스템에서 생성 한 리드 ID ("ABC000123")를 반환 한 다음 리드를 삽입하여이를 해결할 수 있습니다. 그런 다음 해당 시스템은 리드의 '외부 ID'필드 (최상의 결과를 위해 고유해야 함)로 이러한 리드를 참조 할 수 있습니다. 예를 들어 실제 SF ID가 업데이트를 보내거나 관련 데이터를 삽입 할 필요가 없습니다. – eyescream
안녕하세요, 마스터 시스템이 SF입니다. 담당자가 발신자로부터 리드 정보를 수집하는 사용자 정의 VF 페이지 (CTI 팝업을 통해 열림)가 있습니다. 제출 된 페이지에서 SF 리드 객체가 생성되어 저장됩니다. SF Lead Id는 일부 맞춤 정보 (SF에 저장되지 않지만 VF 페이지에서 캡처 됨)와 함께 외부 시스템에 전송되어야합니다. 안타깝게도 비즈니스 제약 조건 (요구 사항)으로 인해 SFDC에이 추가 데이터를 저장하거나 표준 리드 오브젝트를 수정하기위한 맞춤 테이블을 생성 할 수 없습니다. 귀하의 제안과 피드백에 다시 한 번 감사드립니다. 정말 감사합니다!! – user899849