セーブポイントが見つからない

【Salesforce】Apexの共有の理由について

こんにちは、にいるです。

Apexの共有の理由について書いてみます。

【ヘルプ】Apex を使用したレコードの共有
【ヘルプ】CriteriaBasedSharingRule

1.Apexの共有の理由とは

「Apexの共有の理由」とは、Apexを使用してレコードの共有をするときに使う機能です。

例えば、ApexでDMLによってレコードを作成しますよね。

その作成時に、Apexを使用してレコードを共有したい時に使う機能です。

図にするとこんな感じです。

AさんがApex実行で作成したレコードを自動でBさんに共有する仕組みです。

自動で付与できるので、実装することができればとても便利だと思います。

2.標準オブジェクトのApexの共有

設定についてみていきます。

まずは、標準オブジェクトの場合(取引先)です。

コードはこれです。

取引先の場合、子レコードの取引先責任者と商談とケースへのアクセス権限も付与する必要があります。
取引先責任者の場合、親レコードに連動の場合、アクセス権限の定義は省略されます。

3.カスタムオブジェクトのApexの共有

カスタムオブジェクトだと、まずはオブジェクト設定画面からApexの共有理由を作成する必要があります。

カスタムオブジェクトの共有オブジェクトは__shareというサフィックスになります。

M_Product__cというカスタムオブジェクトであれば、M_Product__shareというAPIの共有オブジェクトになります。

コードです。

ここで作成したApexの共有理由をApexでInsertします。

デフォルトでは「RowCause」がManualですが、Manual以外に置き換えると、所有権が変更されても共有が解かれないというメリットがあります。

4.まとめ

いかがでしたでしょうか。

最初、Apexの共有の理由ってなんだ?と、全く理解できませんでした。

もっとわかりやすいネーミングであればよかったのですが、でも字面そのままの意味なのでもうこれで覚えました笑

実際に共有ルールを使って、重要なレコードを作成するプログラムがある場合は使わないといけない機能ですね。

皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。

ではでは!