概要
Salesforce のプロセスビルダーは、Salesforce 環境でトリガーされるイベントに基づいてアクションを自動化することができるグラフィカルなポイントアンドクリックツールです。
プロセスは、if/then タイプのロジックフローを中心に構築され、1 つのトリガーイベント、1 つ以上の条件、および 1 つ以上のアクションが含まれています。これらのアクションは、リアルタイムで発生させることもできれば、スケジュールされたイベントとして発生させることもできます。
Adobe Sign は、レコードと Apex のアップデートという 2 つのアクションタイプをサポートしています。
各アクションタイプには複数の起動可能なアクションがあります。
- Send
 - Cancel
 - Delete
 - Remind
 - Update
 - 読み込み(テンプレート)は、Apex アクションタイプを使用している場合にのみ使用できます。
 
プロセスビルダーは非常に強力なツールですが、その動作方法の詳細はこの文書の対象範囲外です。
この文書では、Salesforce 向け Adobe Sign パッケージの v20 で使用できるアクションに重点を置いています。
プロセスビルダー全般について詳しくは Salesforce から入手可能なドキュメントとインタラクティブなトレールヘッドを参照してください。
アクションタイプとして「レコードをアップデート」を使用するプロセス
        このアプローチでは、Salesforce プロセスビルダーの「レコードをアップデート」アクションタイプを使用して、アクションを起動するための契約書のレコードに、背景アクション選択リストフィールドを設定します。
関連する Adobe Sign 契約書でアクションを呼び出すことができる新しいプロセスを作成できます(レコード変更イベントに基づいて起動)。ユーザーは、アクションが実行されるタイミング(つまり、マスターレコードでどのフィールドがアップデートされた後か)と、アクションに対してどの関連する契約書を選択するかを制御できます。
現在、次のアクションがサポートされています。
- Send
 - Cancel
 - Delete
 - Remind
 - Update
 
注意事項:
- 処理中に検出されたエラーはエラーメッセージフィールドに保存され、該当する契約書ページで表示できます。
 - スケジュールされたアクションがサポートされています。
 - Adobe Sign ライブラリ文書がサポートされています。
 - 1 つまたは複数の親契約書または子契約書を選択できます。
 - 契約書レコードをアップデートしている場合、関連レコードは echosign_dev1 オブジェクトになります。   
- echosign_dev1 オブジェクトは、共通の Salesforce オブジェクト(取引先、商談、取引先担当者など)に関連付けられています。契約書がカスタムオブジェクトに関連している場合、この名前は組織において一意になります。
 
 
- 契約書レコードでバックグラウンドアクション選択リストフィールドを該当するアクション値でアップデートすると、アクションがトリガーされます。
 
- 契約書レコードは既に存在している必要があります。「Update Records」アクションタイプを使用して契約テンプレートから作成または読み込むことはできません。
 
アクションタイプとして Apex を使用するプロセス
        このアプローチでは、Salesforce プロセスビルダーの Apex アクションタイプを使用して、管理パッケージに含まれている呼び出し可能なメソッドを呼び出して、該当するアクションを実行します。
関連する Adobe Sign 契約書でアクションを呼び出すことができる新しいプロセスを作成できます(レコード変更イベントに基づいて起動)。
次の呼び出し可能なアクションが定義されています。
- 「Agreement Template Load」呼び出し可能なアクション   
- AgreementTemplateLoadInvocableAction.load     
- テンプレート、マスター ID、および任意のランタイム変数を渡します。
 - 非同期モードでテンプレート生成を実行するかどうかを制御するオプションのパラメーターを渡します。       
- テンプレートに Adobe Sign ライブラリ文書が含まれている場合は必須です。
 
 - 生成された契約書レコード ID またはエラーメッセージを返します。       
- エラーは、トリガーアクションを実行しているユーザーには表示されません。
 
 
 
 - AgreementTemplateLoadInvocableAction.load     
 
「契約タイプを読み込み」クラスを呼び出すと、次の 4 つのフィールドオプションを設定できます。
- マスターレコード ID - 契約書を関連付ける必要があるオブジェクトの Salesforce レコード ID。   
- 通常、タイプはフィールド参照に、値は「[Object].Id」(Object は商談、取引先など)に設定します。
 
 - 契約テンプレート ID - 読み込む契約テンプレートの Salesforce レコード ID。タイプを「ID」に設定し、値をレコード ID に設定します。
 - 契約テンプレートのランタイム変数 - 受信者および変数からの文書、またはそのいずれか。   
- 1 つの変数:myRecipient=auserguy@adobe.com
 - 2 つの変数:myRecipient=auserguy@adobe.com,myAttachment=00Pf4000002df0q
 
 - 非同期処理 - オプション。必要な場合を除き、指定しないでください。デフォルトでは false になるため、テンプレート呼び出しは同期モード(つまり、同じトランザクション/スレッド)で実行されます。   
- 契約テンプレートが Adobe Sign ライブラリ文書を読み込む場合は、true に設定します。
 - テンプレートの AutoSend が true の場合は、必ず、値を false にします。
 - Adobe Sign ライブラリ文書と一緒に自動送信することはできません。
 - プロセスがバッチプロセスやその他の非同期プロセスから呼び出される場合は、Salesforce 固有の制限に注意してください。
 
 
- 「Agreement Cancel」呼び出し可能なアクション   
- AgreementCancelInvocableAction.cancelAgreement     
- 契約 ID を渡します。
 - エラーメッセージを返します。
 
 
 - AgreementCancelInvocableAction.cancelAgreement     
 
- 「Agreement Delete」呼び出し可能なアクション
- AgreementDeleteInvocableAction.deleteAgreement     
- 契約 ID を渡します。
 - エラーメッセージを返します。
 
 
 - AgreementDeleteInvocableAction.deleteAgreement     
 
- 「Agreement Remind」呼び出し可能なアクション   
- AgreementRemindInvocableAction.sendReminder     
- 契約 ID を渡します。
 - エラーメッセージを返します。
 
 
 - AgreementRemindInvocableAction.sendReminder     
 
- 「Agreement Send」呼び出し可能なアクション
- AgreementSendInvocableAction.sendAgreement     
- 契約 ID を渡します。
 - エラーメッセージを返します。
 
 
 - AgreementSendInvocableAction.sendAgreement     
 
- 「Agreement Update」呼び出し可能なアクション
- AgreementUpdateInvocableAction.updateAgreement     
- 契約 ID を渡します。
 - エラーメッセージを返します。
 
 
 - AgreementUpdateInvocableAction.updateAgreement     
 
Cancel、Delete、Remind、Send および Update アクションでは、実行対象の契約書の契約書 ID のみが必要です。
注意事項:
        - スケジュールされたアクションがサポートされています。
 - 自動送信を使用する契約テンプレート(生成と送信)がサポートされています。
 - すべてのアクションが、1 回の呼び出しで複数のリクエストを受諾できます。
 - 例外はすべて捕捉されて結果レコードに保存され、プロセス実行のブロックを避けるために Apex デバッグログにエラーとして記録されます。
 - テンプレート読み込み関数(非同期処理)のパラメーターは、テンプレート処理が同期モードと非同期モードのどちらで行われるかを制御します。呼び出し元が、テンプレート読み込みを同期モードと非同期モードのどちらで実行するかを指定する必要があります。   
- デフォルトプロセスは同期モードで実行されます。大部分のプロセスは同時に実行する必要があります。
 - 自動送信が有効な場合、プロセスは同期モードである必要があります。
 - 目立った非同期プロセスは、Adobe Sign ライブラリ文書を読み込む必要がある場合です。
 
 
制限:
- 1 つのスレッドで別のスレッドを開始できないという Salesforce の制限のため、自動送信テンプレートと Adobe Sign ライブラリ文書の組み合わせはサポートされていません。
 - 呼び出し可能なアクションに渡されるパラメーターの場合、親フィールドのみ(子フィールドではなく)を参照できます。マスターレコードの下位にある子契約書に対してアクションを実行することはできません。
 - Apex 呼び出しからの返り値は、プロセスビルダーで使用できません。値を返すアクション(文書情報の取得または署名 URL の取得)はサポートされていません。
 
Queueable サービス
        Salesforce Queueable インターフェイスを介して契約書アクションを呼び出すために、新しいサービスレイヤーが実装されました。Queueable について詳しくは、こちらをご覧ください。アクションはコアサービス API を起動し、その後、このコアサービス API が Adobe Sign API をコールアウトします。
次のアクションがサポートされています。
- Send
 - Cancel
 - Delete
 - Remind
 - Update
 
グローバルな echosign_dev1.AdobeSignApiQueueableService はサービス Apex クラスです。これは、起動するアクションと契約書レコード ID を含む echosign_dev1.QueueableServiceParameter タイプのパラメーターを取ります。
echosign_dev1.AdobeSignApiQueueableService.QueueableServiceParameter param = new echosign_dev1.AdobeSignApiQueueableService.QueueableServiceParameter(); param.actionType = EchoSignApiService.ACTION_TYPE.AGREEMENT_REMIND; param.agreementId = 'a0I0S000000KwkaUAC'; ID jobID = System.enqueueJob(new echosign_dev1.AdobeSignApiQueueableService(param));