Process BuilderはCall Apex機能もできます。
この前、
プロセスビルダー各機能シェアーPost to Chatter(003)
を投稿いたしました。
しかし、デメリットがあるんですね。
リリースの際に、Chatter Groupはもう一度選択する必要です。
今回、PBから、Apexを呼び出し、Chatter Groupに投稿する予定です。
パターン:
Accountを更新する際に、カスタム項目
ChatterGroupが空でない場合、かつChatterGroupがJapan Groupの場合、Japan Groupに投稿します。
ChatterGroupが空でない場合、かつChatterGroupがUSA Groupの場合、USA Groupに投稿します。
ChatterGroupが空でない場合、かつChatterGroupがChina Groupの場合、China Groupに投稿します。
事前準備:
ChatterGroup項目:
Data Type:Picklist
Values:Japan、USA、China
Chatter Group
新規Apex:
AAPostToChatterForAccount.apxc
global class AAPostToChatterForAccount {
public static final String CRLF = '\r\n';
global class PostChatterRequest {
@InvocableVariable(label='Account Name' required=true) //必須
public String AccountName;
@InvocableVariable(label='Account ID' required=true) //必須
public String AccountId;
@InvocableVariable
public String GroupName;
}
@InvocableMethod(label='VVVPost To Chatter For Account' description='Post To Chatter') //Label:PBのApex Class
global static void createChatter(List<PostChatterRequest> requests){
for(PostChatterRequest requestObj : requests){
System.debug('requestObj.GroupName=:'+requestObj.GroupName);
System.debug('requestObj.AccountName=:'+requestObj.AccountName);
System.debug('requestObj.AccountId=:'+requestObj.AccountId);
// ChatterGroup名指定
String GroupName = requestObj.GroupName;
String AccountName = requestObj.AccountName;
String AccountId = requestObj.AccountId;
// ChatterGroup取得
//String soql = 'select Id ,Name from CollaborationGroup where Name like \''+ GroupName + '%\' limit 1';
//System.debug('soql=:'+soql);
//List<sObject> sobjs = new List<sObject>();
//try{
//sobjs = database.query(soql);
//} catch(Exception ex) {
//throw new AuraHandledException(ex.getMessage());
//}
//if (sobjs.size() == 0) {
// return;
//}
//CollaborationGroup objCollaborationGroup = (CollaborationGroup)sobjs[0];
// ChatterGroup名指定
String ChatterGroupName = GroupName + '%';
// ChatterGroup取得
List<CollaborationGroup> groups = [select Id ,Name from CollaborationGroup where Name like:ChatterGroupName limit 1];
//CollaborationGroup groups2 = [select Id ,Name from CollaborationGroup where Name like:ChatterGroupName limit 1];
System.debug('groups:'+groups);
String baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
// 投稿内容指定
String chatterMsg = 'This company information has been registered or updated.' + CRLF +
'Company Name : ' + AccountName + '' + CRLF +
'URL : ' + baseUrl + '/lightning/r/Account/'+ AccountId + '/view' + CRLF +
'' + CRLF +
'Thank you.';
// フィードのINSERT
FeedItem feed = new FeedItem();
feed.parentId = groups[0].Id;
//feed.parentId = groups2.Id;
feed.body = chatterMsg;
insert feed;
}
}
}
InvocableMethod アノテーション:
Process Builderに行きましょう。
1、
Object:Account
Start the process:when a record is created or edited
2、
Criteria Name:ChatterGroup = Japan
Criteria for Executing Actions:Conditions are met
Set Conditions
[Account].ChatterGroup__c : Is null : Boolean : False
[Account].ChatterGroup__c : Equals : Picklist : Japan
Conditions:All of the conditions are met (AND)
3、
Call Apex
Action Name:Post To Test Japan
Apex Class:VVVPost To Chatter For Account
Set Apex Variables
Account Name:[Account].Name
Account Id:[Account].Id
GroupName:[Account].ChatterGroup__c
4、
Criteria Name:ChatterGroup = USA
Criteria for Executing Actions:Conditions are met
Set Conditions
[Account].ChatterGroup__c : Is null : Boolean : False
[Account].ChatterGroup__c : Equals : Picklist : USA
Conditions:All of the conditions are met (AND)
7、
Call Apex
Action Name:Post To USA Group
Apex Class:VVVPost To Chatter For Account
Set Apex Variables
Account Name:[Account].Name
Account Id:[Account].Id
GroupName:[Account].ChatterGroup__c
8、
Criteria Name:ChatterGroup = China
Criteria for Executing Actions:Conditions are met
Set Conditions
[Account].ChatterGroup__c : Is null : Boolean : False
[Account].ChatterGroup__c : Equals : Picklist : China
Conditions:All of the conditions are met (AND)
9、
Call Apex
Action Name:Post To China Group
Apex Class:VVVPost To Chatter For Account
Set Apex Variables
Account Name:[Account].Name
Account Id:[Account].Id
GroupName:[Account].ChatterGroup__c
じゃあ、
Account画面に移動します。
Account Name:Edge Communicationsを編集します。ChatterGroupはJapanを選択します。
Saveを押下します。
Japan Groupへ確認してみます。投稿されました。
URLをクリックすると、Account詳細画面に移動します。
その他、Chatter Guropは投稿しない確認しました。
Account Name:Dickenson plcを編集します。ChatterGroupはUSAを選択します。
Saveを押下します。
USA Groupへ確認してみます。投稿されました。
新規Account Name:China Group 0629。ChatterGroupはChinaを選択します。
Saveを押下します。
China Groupへ確認してみます。投稿されました。
ChatterGroupが何も選択しない場合、ChatterGroupへんp投稿なしです。
Saveを押下します。
各 Groupへ確認してみます。投稿されませんでした。
確認問題ございません。
これで完了致しました。
以上となります。
ご参考になれば幸いです。
Latest posts by zchao (see all)
- Auraでアクションボタン作成して画面のチェックボックス項目一括処理 - 2021年4月12日
- デフォルト項目値を含むレコード作成実例説明(defaultFieldValues) - 2021年1月9日
- Salesforce のノーコード・ローコード開発 - 2020年12月31日