2011-08-12 2 views
0

나는 Apex 코드에서 사용자에게 메시지를 전달하는 사용자 친화적 인 방법을 찾아 내려하고 있습니다. 리드의 삽입/업데이트 후에 실행되는 트리거가 있는데, 그러면 업데이트 목록을 필터링하고 리드 데이터를 외부 웹 서비스로 푸시하고 변환 된 계정을 일부 반환 된 값으로 업데이트하는 @future 메소드를 트리거합니다.Salesforce의 Apex 트리거에서 현재 사용자에게 알림 제공

I 수행하려는 다음의 (X, Y 및 Z는 1 내지 50의 리드의 수있는 곳)

  • 는 X 리드 리드 변환 사용자에게 통지 Y 및 Z는 것 내 보낸 (나는 트리거 실행 중에 이것을 알 것이다).
  • 은 내보내기 성공 또는 실패 여부를 사용자에게 알립니다 (@future 메소드가 실행될 때 X, Y 및 Z 각각에 대해 알려짐).

이 정보를 다시 사용자에게 전달하는 권장 방법은 무엇입니까? 나는 이 아니라이 이메일을 사용하는 것을 선호 할 것입니다 (이것은 레코드 당 하나의 이메일을 트리거 할 것이기 때문에 꽤 스팸적이고 불쾌합니다). 알림 메시지를 페이지에 삽입하는 다른 방법이 있습니까? ApexPages.addMessage() 시도했지만 나를 위해 아무것도 할 것 (아무런 오류가 있지만 알림 중 하나를) 않는 것.

답변

1

addMessage()은 현재 페이지가 활성화되어있을 때 Visualforce 페이지와 표준 페이지에서 작동하므로 사용자가 단추/VF 페이지에서 작업을 실행하는 경우 트리거를 사용하면 문제가 없습니다. 그러나 백그라운드에서 비동기 적으로 실행되므로이 ​​방법은 @future 메서드에서 작동하지 않습니다.

아마도 가장 좋은 해결책은 필드 목록이 수정되고 해당 사용자를 조회하거나 소유자로 사용하는 사용자 지정 메시지 개체를 사용하는 것일 수 있습니다. 그런 다음 간단한 VF 페이지와 컨트롤러를 만들면 현재 사용자와 관련된 해당 개체의 레코드를 조회하고이를 삭제할 수있는 옵션을 제공합니다 (DB에서 가져온 후 자동으로 삭제할 수 있지만 사용자가 실제로 메시지를 알지 못함). 그런 다음이 페이지를 가져 와서 대시 보드 구성 요소의 일부로 사용할 수 있으므로 사용자가 홈 페이지를 볼 때마다 알림 목록을 볼 수 있습니다.

마지막으로 또 다른 옵션은

+0

내가'addMessage가()'에서 호출하는 경우에도 함께 오류를 얻을 ... 다음 또한 다이제스트 이메일 등으로 표시됩니다 것을 통해 사용자에게 메시지를 펌핑, 채팅을 활용 수 있습니다 변경을 보관 유지할 때의 트리거. 다른 솔루션들도 실행 가능하다고 들리지만 실제로는 사용자가 다른 곳으로 이동하는 대신 사용자에게 표시되도록 메시지를 표시하고 싶습니다. –

+0

방아쇠가 어떻게 작동합니까? 레코드를 갱신하고 예를 들어 저장하는 중입니까? 사용자가 Chatter 데스크톱을 실행 한 다음 화면에 비동기 프로세스가있는 경우 화면에 메시지를 표시 할 수있는 방법이 없다고 생각합니다. 그러면 사용자가 해당 경로로 이동하면 스트림이 업데이트 될 때 알림이 표시됩니다. –

+1

그래, 그들은 단지 리드와 타격 세이브를 편집하고있다. 에러는'addMessage()'는 오직 visualForce 페이지에서만 호출 될 수 있다고 말한다. Chatter 접근법에 대한 좋은 지적; 나는 중개인이 그것을 사용하고 있는지를 점검 할 것입니다. 그렇다면 잘 작동 할 것입니다. Chatter에 사물을 주입하는 방법에 대해 적절한 문서를 가르쳐 주시겠습니까? –