2013-05-29 5 views
3

우리는 사실상 접합 객체 인 사용자 정의 객체를 가지고 있습니다. 지금은 관계가 제거되면 junction 오브젝트의 레코드가 h 제됩니다.사용자 정의 객체의 삭제 메소드를 덮어 쓰기

이 동작을 변경하여 연결 개체가 삭제되었지만 실제로 삭제되지 않도록 변경하고 싶습니다. 이유에 대해 자세히 알 수 없으므로 여기에 비즈니스 이유가 있습니다. SOAP 및 REST API를 통해 인스턴스에 액세스하는 클라이언트가 여러 개 있기 때문에 레코드를 삭제하는 대신 사용자 정의 필드 is_deleted를 확인하기 위해 사용자 정의 오브젝트의 표준 삭제 기능을 대체하는 솔루션을 구현하고자합니다.

이것이 가능합니까?

건배,

답변

0

내가 방금 개체에 온 - 삭제 트리거를 넣지 수 있다고 생각?

가능한 경우 트리거 코드를 추가하여 필드를 업데이트 한 다음 삭제할 레코드에 오류를 첨부하십시오 (삭제가 진행되지 않도록). 공식 문서에는이 작업을 수행하는 방법에 대한 많은 예제가 있습니다.

보조 노트에

은 세일즈 포스에서 삭제 된 레코드에 대한 조직의 휴지통에 보관됩니다 ... 모든 (처리 모든 레코드가 목록에서 한 번에 삭제되는) bulkified 유지하는 것을 잊지 마십시오 삭제 후 15 일. SELECT ... ALL ROWS 쿼리 양식을 사용하여 개체에서 선택할 수도 있습니다.

+0

나는 on-delete 트리거를 시도하고 다시보고 할 것이다. – Dan

0

정말로 삭제 동작을 무시할 수 있다고 생각하지 않습니다. (Visualforce 페이지로) 버튼을 오버라이드 할 수는 있지만 삭제가 API에서 해고되면 어떤 식 으로든 도움이되지 않습니다.

사실 내가 어딘가에 보관하는 동안 레코드가 삭제 된 API (SOAP, REST 등) 사용자를 가장하고 싶다고 생각합니까? 솔직히 어떤 그늘진 비즈니스 관습과 같은 냄새가 나지 만, 그것이 정말로 합법적이라고 가정 해 봅시다 ... 최종 사용자가 알아 차릴 수 있기 때문에 작업 중에 갑자기 오류를 던질 수는 없습니다.

숨겨진 1 대 1 일치하는 "그림자"개체로 이동하여 각 동작을 동기화 할 것이라고 생각합니다. 액션을 복제 할 교차점의 삽입/업데이트/삭제/삭제 취소에 대한 트리거가 필요합니다 (차이점은이 사용자 정의 "소프트 삭제"플래그 임). 이것은 스토리지 사용과 같은 많은 걱정거리를 가지고 있습니다.

마음에 떠오르는 한 가지 점은 (내가 올바르게 호출 한 경우) 마스터 중 하나를 삭제하면 접합 객체의 트리거가 실행되지 않는다는 것입니다. 그래서 만약 진짜 접합 객체 (당신이 "비슷한 행위"라고 썼다면) 또한이 시나리오를 다루어야하고 로직을 마스터 객체의 트리거에 넣어야합니다.

실제 접속 개체가 아니기 때문에 (예 : OwnerId 필드가 표시됨) 공유 규칙이 허용됩니다. 아마도 기록의 소유권을 역할 계층 구조 외부의 일부 특수 사용자/대기열로 전송하여 보이지 않게 될 수 있습니다 ... 그러나 그것이 효과가 있을지 의심 스럽습니다. 결국에는 삭제가 성공적으로 완료되어야합니다. 아마도 @future과 결합하여 즉시 해당 파일을 삭제 취소 할 것입니다. & 전송 ... 여전히 지저분합니다!

+0

레코드를 숨기고 싶지 않습니다. 삭제 동작이 트리거 될 때 레코드가 삭제 될 때 삭제 된 플래그를 설정하고 레코드가 삭제되지 않도록합니다. 데이터를 가져 오면 사람들은 삭제 된 깃발에 대해 설명해야하지만 한계가 있습니다. – Dan

+1

삭제 작업을 차단하려면 예외를 던지거나'addError()'메소드를 사용해야합니다. 이것은 내가 생각하는 트랜잭션을 멈추게 할 것이다 (나는 같은 트리거에서 그것들을 업데이트 할 수 있을지는 의문이다). 신중하게 http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_triggers_context_variables_considerations.htm을 읽어보십시오. 나는 당신의 깃발을 세우는'before delete'를 써야하고, (addError가없는) 조작을 수행 할 수 있도록하고 @future를 포함하여 즉시 삭제를 취소한다고 생각합니다. – eyescream

관련 문제