SlideShare une entreprise Scribd logo
1  sur  9
z
親レコード承認申請中
添付ファイルロック不可
への対策案
Created By: Kagawa Hoang
Created Date: 2020/08/30
z
Agenda
1. 承認プロセスのロック仕組みについて
2. 承認申請中ファイルロック不可の課題
3. 承認申請中ファイルロック不可への対策案
4. ソースコード
z
1. 承認プロセスのロック仕組みについて
格納先
ContentDocument:ファイ
ル中身を格納
ContentDocumentLink:
ファイルの共有先を格納
子オブジェ
クト
親
承認申請
子オブジェ
クト
ファイル
オブジェク
ト
主従関係 参照関係 参照関係
一般的に申請確定、回付中、
承認済み申請承認対象レ
コードをロックとする
z
2. 承認申請中ファイルロック不可の課題
格納先
ContentDocument:ファイ
ル中身を格納
ContentDocumentLink:
ファイルの共有先を格納
子オブジェ
クト
親
承認申請
子オブジェ
クト
ファイル
オブジェク
ト
主従関係 参照関係 参照関係
①申請承認レコードをロック際に勝手に主従関係子
レコードも親のロック状態を継承される
②参照関係子レコード又は添付ファイル(参照関
係)が親のロック状態を継承しません。(=>Unlock)
z
3. 承認申請中ファイルロック不可への対策案
「添付ファイルの関連リスト」に
て「ファイルをアップロード」を防
ぐ
「添付ファイルのレコードアクション」関連リストにて「新しいバージョンをアップロード」、「ファイルの詳
細を編集」、「削除」、「レコードから削除」を防ぐ
z
3. 承認申請中ファイルロック不可への対策案
No 防ぐ対象アクション 対策
1 ファイルをアップロード ContentDocumentのBeforeUpdateトリガーにて親レコードの
ロック状態により新規ファイルの添付を防ぐ
2 新しいバージョンをアップロード ContentDocumentのBeforeUpdateトリガーにて親レコードの
ロック状態によりファイルの書き換えを防ぐ
3 ファイルの詳細を編集 ContentDocumentLinkのBeforeUpdateトリガーにて親レコード
のロック状態により添付ファイルの詳細情報更新を防ぐ
4 削除 ContentDocumentのBeforeDeleteトリガーにて親レコードの
ロック状態により添付ファイルの削除を防ぐ
5 レコードから削除 ContentDocumentLinkのBeforeDeleteトリガーにて親レコード
のロック状態によりレコードから添付ファイルの削除を防ぐ
z
4. ソースコード
//セールスフォースのベストプラクティスによりトリガーハンドラーを書いてね!
trigger ContentDocumentTrigger on ContentDocument (before update,before delete) {
if(Trigger.isUpdate ){
for(ContentDocumentLink link:[SELECT Id,ContentDocument.title,ContentDocumentId,ShareType,
LinkedEntity.Name
FROM ContentDocumentLink where ContentDocumentId=: Trigger.newMap.keySet()]){
if(Approval.isLocked(link.LinkedEntityId)){
System.debug(‘新規ファイルの添付又はファイルの書き換え又はファイル削除がダメ’);
trigger.newMap.get(link.ContentDocumentId).addError(‘新規ファイルの添付又はファイルの書
き換え又はファイル削除がダメ'');
}
}
}
if(Trigger.isDelete){
for(ContentDocumentLink link:[SELECT Id,ContentDocument.title,ContentDocumentId,ShareType,
LinkedEntity.Name
FROM ContentDocumentLink where ContentDocumentId=: Trigger.oldMap.keySet()]){
if(Approval.isLocked(link.LinkedEntityId)){
System.debug(‘添付ファイルの削除がダメ');
trigger.oldMap.get(link.ContentDocumentId).addError('添付ファイルの削除がダメ');
}
}
}
}
z
4. ソースコード
//セールスフォースのベストプラクティスによりトリガーハンドラーを書いてね!
trigger ContentDocumentLinkTrigger on ContentDocumentLink (before update, before delete) {
if(Trigger.isUpdate ){
for(ContentDocumentLink rNew : trigger.new)
{
if(Approval.isLocked(rNew.LinkedEntityId)){
System.debug(‘添付ファイルの詳細情報更新がダメ');
rNew.addError('添付ファイルの詳細情報更新がダメ');
}
}
}
if(Trigger.isDelete ){
for(ContentDocumentLink rOld : trigger.old)
{
if(Approval.isLocked(rOld.LinkedEntityId)){
System.debug(‘レコードから添付ファイルの削除がダメ');
rOld.addError('レコードから添付ファイルの削除がダメ');
}
}
}
}
z
4. おしまい
Happy Coding!

Contenu connexe

Plus de furuCRM株式会社 CEO/Dreamforce Vietnam Founder

Plus de furuCRM株式会社 CEO/Dreamforce Vietnam Founder (20)

GithubAction+DevOpsCenter.pptx
GithubAction+DevOpsCenter.pptxGithubAction+DevOpsCenter.pptx
GithubAction+DevOpsCenter.pptx
 
BackupMetadataByGitAction.pptx
BackupMetadataByGitAction.pptxBackupMetadataByGitAction.pptx
BackupMetadataByGitAction.pptx
 
Salesforce Flow_InternalTraining.pptx
Salesforce Flow_InternalTraining.pptxSalesforce Flow_InternalTraining.pptx
Salesforce Flow_InternalTraining.pptx
 
FlowErrorHandling.pptx
FlowErrorHandling.pptxFlowErrorHandling.pptx
FlowErrorHandling.pptx
 
DevOpsCenter_BetaVersion.pptx
DevOpsCenter_BetaVersion.pptxDevOpsCenter_BetaVersion.pptx
DevOpsCenter_BetaVersion.pptx
 
Omni-Chanel_ForInternal.pptx
Omni-Chanel_ForInternal.pptxOmni-Chanel_ForInternal.pptx
Omni-Chanel_ForInternal.pptx
 
基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304基本設計+詳細設計の書き方 社内勉強会0304
基本設計+詳細設計の書き方 社内勉強会0304
 
SVF cloud for salesforce
SVF cloud for salesforceSVF cloud for salesforce
SVF cloud for salesforce
 
External services
External servicesExternal services
External services
 
Data spider servista for Beginner
Data spider servista for BeginnerData spider servista for Beginner
Data spider servista for Beginner
 
Record level-access in Salesforce
Record level-access in SalesforceRecord level-access in Salesforce
Record level-access in Salesforce
 
Salesforce CMS
Salesforce CMS Salesforce CMS
Salesforce CMS
 
Salesforce Scheduler
Salesforce SchedulerSalesforce Scheduler
Salesforce Scheduler
 
Pardot MA Fundamental
Pardot MA FundamentalPardot MA Fundamental
Pardot MA Fundamental
 
Field service lightning
Field service lightningField service lightning
Field service lightning
 
ETL And Salesforce Integration
ETL And Salesforce IntegrationETL And Salesforce Integration
ETL And Salesforce Integration
 
Sfdx jenkins
Sfdx jenkinsSfdx jenkins
Sfdx jenkins
 
Heroku platform introduction
Heroku platform introductionHeroku platform introduction
Heroku platform introduction
 
Unlocked package
Unlocked packageUnlocked package
Unlocked package
 
Asynchronous apex
Asynchronous apexAsynchronous apex
Asynchronous apex
 

Dernier

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Dernier (16)

ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 

Lock attachfilewhileparentrecordlocked