2012-07-12 30 views
5

là một vài bản phát hành kể từ khi tôi phải thực hiện tích hợp S2S, nhưng tôi gặp phải sự cố không mong muốn, hy vọng ai đó có thể giải quyết hiệu quả hơn.Vấn đề cập nhật trường bán hàng lực lượng bán hàng

Tôi có hai tổ chức, chia sẻ địa chỉ liên hệ qua S2S.

Địa chỉ liên hệ trong mỗi tổ chức có lược đồ giống nhau, đó là các trường chuẩn cùng với trường tùy chỉnh. Tôi đã sao chép một trường hợp cơ sở chỉ với hai lĩnh vực tùy chỉnh: hộp kiểm lĩnh vực A, và Số (18,0) lĩnh vực B.

Org 1 công bố lĩnh vực A, và đặt mua trường B.

Org 2 lượt đăng ký đến trường A và xuất bản trường B.

Org 1 bắt đầu tất cả luồng công việc S2S bằng cách chia sẻ địa chỉ liên hệ với Org 2 trên S2S. Org 2 đã tự động chấp nhận.

Tổ hợp 2 có trình kích hoạt Liên hệ trước khi chèn chỉ sử dụng trường A để tính giá trị cho trường B. ví dụ: nếu trường A được chọn, điền vào trường B với 2, nếu bỏ chọn, 0. (Tất nhiên điều này là một sự đơn giản hóa quá mức về những gì tôi thực sự cần làm, nhưng đó là trường hợp sao chép cơ sở.)

Tất cả các công trình đó tốt trong Org 2 - địa chỉ liên lạc đi qua tốt với trường A, và tôi thấy kết quả lĩnh vực được tính vào trường B.

Vấn đề là kết quả - trường B - không được tự động chia sẻ trở lại Org 1 cho đến khi cập nhật liên hệ tiếp theo. Nó có thể đơn giản như tôi chỉnh sửa trường không chia sẻ trên cùng một liên hệ đó, như "Mô tả", trong Org 2 và sau đó tôi ngay lập tức thấy giá trị được tính toán trước đó của trường B được đẩy trở lại Org 1.

Tôi giả định rằng điều này là do, vì việc tính toán trường B xảy ra trong một Chèn trước, kết nối S2S giả định giao dịch cập nhật hiện tại chỉ được thực hiện bởi chính nó (tôi có thể thấy logic này có ý nghĩa như thế nào để ngăn cập nhật S2S vô hạn vòng lặp). Lần đầu tiên tôi đã thử tạo bản cập nhật trường công việc đã bắt buộc phải cập nhật trường chia sẻ (mới, giả) khi trường B thay đổi, nhưng điều đó vẫn không khiến cập nhật quay trở lại, có lẽ vì trong cùng ngữ cảnh thực thi Salesforce dường như được miễn chia sẻ lại. Cũng đã thử quy tắc luồng công việc đã chuyển tiếp dẫn trở lại hàng đợi kết nối khi trường được thay đổi và nó cũng không hoạt động.

Sau đó, tôi đã thử một câu lệnh cập nhật lại trong trình kích hoạt AfterUpdate - nếu trường được chia sẻ được cập nhật, hãy tải lại và cập nhật lại đối tượng được chia sẻ. Điều đó cũng không hiệu quả.

Tôi đã tìm thấy một giải pháp, là một phương pháp Tương lai được gọi bởi trình kích hoạt AfterUpdate tải lại và chạm vào bất kỳ bản ghi nào có trường chia sẻ được thay đổi bởi trình kích hoạt BeforeUpdate. Điều này làm cho kết quả của trường hiển thị ở gần thời gian thực trong tổ chức gốc.

Giải pháp này phù hợp với tôi bây giờ, nhưng tôi cảm thấy mình PHẢI thiếu một cái gì đó. Nó gây ra nhiều cuộc gọi trong tương lai và DML được thực thi hơn là cần thiết.

Có ai có giải pháp thanh lịch hơn cho việc này không?

+3

Tôi muốn kết hợp với '@ future'. Nếu tôi đặt mình vào vị trí của nhà phát triển cho tính năng này, họ có thể không kiểm tra các bản cập nhật được thực hiện trong Org 2 đến các trường đã xuất bản để lo ngại về việc tạo vòng lặp vô hạn. Nếu họ không xử lý trường hợp đó, không có khả năng vòng lặp, dev dễ dàng hơn, và vào tính năng tiếp theo. Tôi thích '@ future' vì nó thực hiện chính xác những gì bạn muốn mà không tận dụng các tác dụng phụ (có thói quen xấu biến mất trong các bản phát hành trong tương lai mà không cần thông báo) –

Trả lời

0

Tôi nghĩ rằng không có cách giải quyết nào tốt hơn những gì bạn đang làm. Giới hạn cho chú thích trong tương lai được tăng lên khá cao, điều đó không phải là mối quan tâm của bạn.

Có thể điều khác mà bạn có thể làm là (không chắc chắn nếu điều này sẽ làm việc như chúng tôi vẫn đang trong cùng một ngữ cảnh) - Org 1 - Dòng A được cập nhật, Xuất bản hợp đồng

Org 2 - Trước khi Update Hợp đồng trong Org 2; Nếu A đã được cập nhật - Lưu ID của Hợp đồng trong đối tượng tùy chỉnh mới. Sau khi cập nhật đối tượng tùy chỉnh mới, hãy cập nhật trường B cho ID hợp đồng đã cho. Nội dung cập nhật về B sẽ được xuất bản

Các vấn đề liên quan