0

我们有一个 Salesforce 应用程序,其中有一些自定义对象,并希望向客户公开各种自定义对象记录。

我们需要确保客户只能看到属于其帐户的记录。由于这些记录的设置方式(由不同处理级别的各种系统用户拥有),我们不能使用基于所有者的共享......并且不能使用基于标准的共享,因为它不是动态的(我不能使用基于标准的共享来说“与与记录属于同一帐户的所有客户门户用户共享此记录”在运行时)。

所以我知道我必须使用基于 Apex 的共享。我已经阅读了共享对象和共享表。但我将如何处理这个问题。

我可以编写一个触发器,在插入时将创建一个共享对象并获取属于客户门户组且其帐户等于记录帐户的所有用户 ID,并将它们与记录的共享对象相关联。

但我觉得这是矫枉过正对吗?假设我们的一位客户有 5 个用户,假设每天创建 500 条记录...这意味着每天为 1 个客户共享 2500 个共享对象...对于 10 个客户,这可以达到 25000...并且以这种方式缩放...

我在这里吗?

另一个问题是,如果一个新人加入了该客户团队。除非另一个进程更新旧记录上的共享,否则他/她看不到旧记录。

那么有没有更好/优雅的方法来做到这一点?我想在组中添加一个共享对象...但是只有一个组“客户门户组”,我如何将该组与用户的帐户相关联?

我将不胜感激对此的任何想法。

4

2 回答 2

1

You should take a look at high-volume customer portal users. They're much cheaper relative to standard customer portal users and should meet your needs. Unlike regular users they have a totally different sharing concept. In a nutshell if they own an object they can see, if not they can't. You can then extend this based on whether a contact or account lookup on the object matches the logged in user.

Read up on this documentation:

于 2012-04-21T19:49:55.890 回答
1

您可以使用群组进行共享,以避免创建过多的共享记录。您将拥有每个帐户一个组和每个帐户一个共享记录。您必须管理数百个组,而不是管理数千条共享记录。我没有在这么多组中尝试过这种方法,但我前段时间读到它应该可以工作(有人使用很多组进行分享)。如果您尝试这样做,请告诉我们它是否工作正常。

于 2012-04-28T18:37:27.887 回答