FlowからApex呼び出し

概要 宣言的型の開発(UIベースでの実装)であるFlowからApex(プログラムベースでの実装)を呼び出して実行するプログラムの実装方法を記載します。特にApexの呼び出しで複数のパラメータを引数として渡したいパターンについて整理します。 InvocableMethod アノテーション まず、Flowから呼び出すApexクラスのメソッドには、InvocableMethodアノテーションをつけて、staticでpublicまたはglobalで宣言します。InvocableMethodアノテーションをつけたメソッドは、クラスに1つのみが宣言可能となります。 InvocableVariable アノテーション InvocableMethodのメソッドで入力もしくは出力のクラス変数のパラメータを定義する際には、InvocableVariable アノテーションを使用します。なので、InvocableMethodのメソッドで複数のパラメータを渡したい場合等には、入力用のクラスを宣言して、そのクラス変数としてInvocableVariableアノテーションをつけます。 サンプル サンプルでは、複数の取引先と親ケースのIDと件名をFlow等から呼び出しの引数として渡して、それらに紐付けたケースを一括作成するような処理を行なっています。 参考 InvocableMethod アノテーションhttps://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm InvocableVariable アノテーションhttps://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_annotation_InvocableVariable.htm

Continue reading

Salesforceのメールサービスを実装する方法

概要 本記事は、Salesforceのメールサービスを実装する方法を簡単に記載します。 ちなみにメールサービスとは、「Apexクラスを使用して受信メールを処理する自動化されたプロセス」という機能となります。 具体的には、Webサイトやフォームで受け付けた内容をSalesforceへメールとして送信することで、メールの情報を元にApexのプログラムでオブジェクトにレコードを作成したりすることができるものとなります。 作成手順 Messaging.InboundEmailHandlerインターフェースを実装したApexクラスを作成 まずは、メールサービスに必要となるInboundEmailHandlerの実装クラスを作成します。このクラスでhandleInboundEmailメソッドを使用して、InboundEmail オブジェクトにアクセスし、受信メールメッセージの内容、ヘッダー、および添付ファイルの取得と、その他多数の機能を実行します。 下記のサンプルコードでは、受信したメールの内容を元にケースを作成しております。また、受信メールアドレスが一致する取引先責任者があれば、リレーションをはるような考慮もいれております。 メールサービスの作成 メール受信時に呼び出すApexを指定してメールサービスを作成します。 メールアドレスを追加 作成したメールサービスに対して、送信先となるメールアドレスを作成します。 設定するメールアドレスの部分が@より前の部分になり、ドメインは作成時に自動で生成されます。 ■注意点 「コンテキストユーザ」に設定するユーザが、Apexの実行ユーザとなるのでApex内でアクセスするオブジェクト(今回はケースオブジェクト)を更新する権限がないと、オブジェクト登録のApexがエラーになります。 設定完了、メールアドレスの確認 作成したメールアドレスを確認します。 実際にメールを送信して確認 今回のサンプルプログラムでは正常に動作した場合は、メールの件名、本文でケースが作成されているはずです。エラーが発生した場合は、送信元のメールアドレスにメールが届きます。

Continue reading

Apexで権限セット(PermissionSet)を付与

Apexで権限セットを付与 権限セットはユーザに対して付与することができ、ユーザは複数の権限セットを付与されることもできるのでオブジェクトの関係性は多対多となっております。 それらのオブジェクトの間には、PermissionSetAssignmentという連結オブジェクトがありUserとPermissionSetを紐付けてレコードを登録することで権限セットの付与ができます。 サンプルコードは以下です。 参考 https://developer.salesforce.com/docs/atlas.ja-jp.object_reference.meta/object_reference/sforce_api_objects_permissionsetassignment.htm

Continue reading