特殊时期,大家一定要保重身体。增强自身免疫力,一切都会过去,一起加油!!!

プロセスビルダー各機能シェアーCall Apex(009)

Salesforce zchao 641℃ 0评论

Process BuilderはCall Apex機能もできます。

この前、

プロセスビルダー各機能シェアーPost to Chatter(003)

を投稿いたしました。

プロセスビルダー各機能シェアー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に投稿します。

 

事前準備:

Account の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 アノテーション:

https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm?search_text=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へ確認してみます。投稿されませんでした。

確認問題ございません。

 

これで完了致しました。

 

以上となります。

ご参考になれば幸いです。

 

 

转载请注明:zchao博客之家 » プロセスビルダー各機能シェアーCall Apex(009)

喜欢 (2)or分享 (0)

您必须 登录 才能发表评论!