global
- Adobe Acrobat Sign の統合
- 新機能
- 製品バージョンとライフサイクル
- Salesforce 向け Acrobat Sign
- Microsoft 向け Acrobat Sign
- Microsoft 365 向け Acrobat Sign
- Outlook 向け Acrobat Sign
- Word/PowerPoint 向け Acrobat Sign
- Teams 向け Acrobat Sign
- Microsoft PowerApps および Power Automate 向け Acrobat Sign
- Acrobat Sign Connector for Microsoft Search
- Microsoft Dynamics 向け Acrobat Sign
- Microsoft SharePoint 向け Acrobat Sign
- Microsoft 365 向け Acrobat Sign
- ServiceNow 向け Acrobat Sign
- HR ServiceNow 向け Acrobat Sign
- SAP SuccessFactors 向け Acrobat Sign
- Acrobat Sign for Workday
- NetSuite 向け Acrobat Sign
- SugarCRM 向け Acrobat Sign
- VeevaVault 向け Acrobat Sign
- Coupa BSM Suite 向け Acrobat Sign
- Zapier 向け Acrobat Sign
- Acrobat Sign 開発者向けドキュメント
概要
Salesforce 向け Adobe Acrobat Sign:デベロッパーガイドは、Salesforce パッケージと Adobe Acrobat Sign を統合するために必要なオブジェクトとパラメーターについて Salesforce 開発者が学習できるように作成されています。
Salesforce 向け Adobe Acrobat Sign オブジェクトは、今後のリリースで変更される可能性があります。変更されるオブジェクトに依存するカスタムソリューションを構築する場合、カスタマイズを更新する必要が生じる可能性があります。
統合ガイドライン
- 契約書がいつ完全に署名されたかを知る必要がある場合、更新前または後(使用事例および要件に応じて)に、echosign_dev1__SIGN_Agreement__c オブジェクト上に Apex トリガーを実装します。echosign_dev1__Status__c フィールドが 署名済み、承認済みまたは他の最終ステータスに変更されると、契約書は完成します。
- 個別の署名済み PDF がいつ挿入されたかを知る必要がある場合、例えば途中の各署名済み PDF を入手する必要がある場合、Attachment または ContentVersion オブジェクトに Apex トリガーを実装し、挿入後に、親契約書および「- signed.pdf」または「- approved.pdf」または他の最終ステータスで終わる名前を監視します。
- 各受信者がいつ署名または承認したかを知る必要がある場合、更新前または後(使用事例および要件に応じて)に、echosign_dev1__SIGN_Recipients__c オブジェクト上に Apex トリガーを実装します。echosign_dev1__Status__c フィールドが 署名済み、承認済みまたは他の最終ステータスに変更されると、受信者の作業は完了します。
- 署名プロセスの一環の特定のイベントがいつ発生したかを知る必要がある場合(契約書が署名用に送信される、リマインダーが送信される、など)、署名イベントオブジェクト(echosign_dev1__SIGN_AgreementEvent__c)にトリガーを作成して、イベントのタイプを確認します。
- 完成した契約書の契約書の最終ステータス名は、「署名済み」、「承認済み」、「同意済み」、「フォーム入力済み」および「配信済み」です。
- 終了した契約書の契約書の最終ステータス名は、「取り消し済み / 拒否済み」、「キャンセル / 拒否済み」、「期限切れ」です。
更新の順序
v21 では、更新の順序が変更されました。以下に、契約書およびその関連するオブジェクトが更新される順序を示します。
- 添付ファイル
- 受信者
- 契約書(ステータスおよび他の属性)
- 契約イベント
- Chatter フィード
Apex サービス
Apex メソッドを使用
Salesforce 向け Acrobat Sign V 21.0 以降、すべての非同期プロセス(自動アップデートとデータマッピングを含む)は、future メソッドから queueable(Salesforce が推奨するアプローチ)に切り替えられました。
この変更により、自動更新やデータマッピングプロセスの一部として Salesforce キューにジョブを追加するサブスクライバー組織内のすべてのカスタマイズは、エラー「System.LimitException:キューに追加された queueable ジョブが多すぎます:2」で失敗します。
このエラーは、queueable プロセスで追加できる子 queueable ジョブが 1 つだけで、Acrobat Sign によって既に開始されているために発生します。詳細については、Queueable Apex の制限を参照してください。
エラー:「ジョブチェーンを作成する場合、System.enqueueJob で実行するジョブは 1 つしか追加できません。つまり、各親の queueable ジョブには子ジョブが 1 つしか存在できません。同じ queueable ジョブからの複数の子ジョブ開始はサポートされていません。」
上記のエラーは、契約書のステータスが変わらないか、データマッピングが正しく実行されない場合に発生します。このエラーを解決するには、原因となっているトリガー、プロセスビルダー、またはワークフローを探して非アクティブ化するか、同期コールを使用するように切り替えるか、後から行うようにスケジュールします。
契約テンプレートサービス
契約テンプレートサービスは、マネージドパッケージによってグローバル Apex サービスとして公開されます。そのため、マネージドパッケージ以外の Apex コードでも、既存の契約テンプレートに基づいて契約を読み込むことができます。クラスおよび公開されているすべてのメソッドは、このようなアクセスを可能にするために global としてマークされています。
Apex サービスは、次の呼び出しクラスを通じて公開されます。echosign_dev1.AgreementTemplateService
電子サインライブラリテンプレートを使用した契約テンプレートの読み込みは、現在はサポートされていません。文書テンプレートを Salesforce 文書ライブラリに移動することをお勧めします。
メソッド
|
static Id load() |
デフォルトとマークされた契約テンプレートを使用して、マスターオブジェクトタイプのない契約を読み込みます。 |
global |
static Id load(String templateId) |
指定された契約テンプレート ID を使用して、マスターオブジェクトタイプのない契約を読み込みます。
|
global |
static Id load(String templateId, String masterId) |
指定された契約テンプレート ID と指定されたマスターレコード ID を使用して、指定された契約テンプレートに設定されているマスターオブジェクトタイプとタイプが一致する契約を読み込みます。 |
global |
static Id load(String templateId, String masterId, Map<String,AgreementTemplateVariable> agreementTemplateVariables) |
指定された契約テンプレート ID と指定されたマスターレコード ID を使用して、指定された契約テンプレートに設定されているマスターオブジェクトタイプとタイプが一致する契約を読み込みます。また、指定された実行時変数を名前と値のペアとして渡します。
|
global |
static List<AgreementTemplateService.AgreementTemplateBasicInfo> getAgreementTemplateList(AgreementTemplateListOptions options) |
フィルタ処理オプションに基づいて契約書テンプレートのリストを取得します。フィルタ処理オプションで契約書テンプレートが見つからない場合は、空のリストを返します。 |
global |
static AgreementTemplateService.AgreementTemplateDetails getAgreementTemplateDetails(String templateId) |
指定された契約書テンプレート ID の契約書テンプレートの詳細を取得します。 契約書テンプレートが見つからない場合は、空のオブジェクトを返します。 |
global |
static String getAgreementTemplateUrl(String templateId) |
指定された契約書テンプレート ID の契約書テンプレートの URL を取得して編集します。 |
global |
static String getNewAgreementTemplateUrl() |
Adobe Sign で新しい契約書テンプレートを作成するための URL を取得します。 |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
AgreementTemplateListOptions() |
global |
AgreementTemplateListOptions(String masterObjectType, Boolean isActive, Boolean hasAttachment, Boolean hasRecipient, Boolean autoSend) |
global class AgreementTemplateService.AgreementTemplateListOptions
Properties (5)
アクセス |
名前 |
---|---|
global |
masterObjectType |
global |
isActive |
global |
hasAttachment |
global |
hasRecipient |
global |
autoSend |
上記のフィールドリストが null 値の場合に契約書テンプレートを問い合わせると、対応するフィールドにフィルタは適用されません。
global class AgreementTemplateService.AgreementTemplateBasicInfo
Properties (6)
アクセス |
名前 |
---|---|
global |
name |
global |
recordId |
global |
url |
global |
isDefault |
global |
daysUntilExpiration |
global |
language |
global class AgreementTemplateService.AgreementTemplateDetails
Properties (6)
アクセス |
名前 |
---|---|
global |
message |
global |
ccList |
global |
dataMappingName |
global |
mergeMappingName |
global |
url |
global |
recipients |
global class AgreementTemplateService.RecipientInfo
Properties (4)
アクセス |
名前 |
---|---|
global |
recipientRole |
global |
recipientType |
global |
recipientName |
global |
signOrder |
実行時変数
echosign_dev1.AgreementTemplateVariable グローバルクラスには、次の 2 つのグローバルフィールドがあります。
- name:変数名。契約テンプレート内で設定されている実行時変数の名前と一致する必要があります。
- value:テンプレートの読み込み時に使用されるこの変数の値。値は、変数が使用される場所によって異なります。例えば、受信者の場合は、取引先責任者、リード、ユーザーのレコード ID または電子メールである必要があります。文書変数の場合は、添付ファイルのレコード ID である必要があります。
結果
すべてのメソッドは、新たに作成された契約レコードの ID を返すか、読み込み操作中に問題が発生した場合は詳細なエラーメッセージと共に例外をスローします。
API サービス
Adobe 電子サイン API テンプレートサービスは、マネージドパッケージによってグローバル Apex サービスとして公開されます。そのため、マネージドパッケージ以外の Apex コードでも、ラッパーを通じて一連の Adobe 電子サイン API を呼び出すことができます。ラッパーを使用すると、リクエストとレスポンスによるデータモデルをコンシューマーが作成する必要がないため、API 呼び出しが大幅に簡素化されます。また、Salesforce データから電子サインデータモデルへの変換をコンシューマーが処理する必要もありません。複雑な処理のほとんどは、コンシューマーにとっては抽象化されます。例えば、契約をコンシューマーに送信するには、契約レコード ID を渡すだけで済みます。ID のクエリ、すべての関連データの抽出、API への引き渡し、結果の解析は、サービスによって処理されます。
クラスおよび公開されているすべてのメソッドは、このようなアクセスを可能にするために global としてマークされています。
- v17 以前では、SOAP API が呼び出されます。
- v18 以降では、REST API が呼び出されます。
Apex サービスは、次の呼び出しクラスを通じて公開されます。echosign_dev1.EchoSignApiService
メソッド
global |
static void cancelDocument(Id agreementId) |
指定された契約 ID の契約をキャンセルします。 |
global |
static void delegateSigner(Id agreementId, String delegatedEmail) |
指定された電子メールに署名を委任します。 |
global |
static void delegateSigner(Id agreementId, String delegatedEmail, String message) |
指定された電子メールに、指定されたメッセージを使って署名を委任します。 |
global |
static echosign_dev1.EchoSignApiService.DocumentInfo getDocumentInfo(Id agreementId) |
指定された契約 ID の詳細情報を取得します。 |
global |
static List<EchoSignApiService.SigningUrl> getSigningUrls(Id agreementId) |
指定された契約 ID のすべての署名 URL を取得します。 |
global |
static void removeDocument(Id agreementId) |
指定された契約 ID の契約をキャンセルし、Salesforce の契約レコードを削除します(契約は、Adobe 電子サインアカウントからは削除されません)。 |
global |
static void replaceSigner(Id replacementRecipientId) |
指定された署名者を置き換えます。 |
global |
static void replaceSigner(Id replacementRecipientId, String message) |
指定された署名者を指定されたメッセージに置き換えます。 |
global |
static echosign_dev1.EchoSignApiService. SendDocumentResult sendDocument(Id agreementId) |
指定された契約 ID の契約を送信し、文書キーおよび URL と共に結果を返します。 |
global |
static void sendReminder(Id agreementId) |
指定された契約 ID の現在の署名者にリマインダーを送信します。 |
global | static void updateAgreement(Id agreementId) | 指定した agreementId で契約書を更新します。 |
global | static EchoSignApiService.AgreementViewUrl getViewAgreementUrl(Id agreementId) |
viewURL プロパティを持つ、指定された契約 ID の表示/管理ページを Sign から取得します。 注意:セキュリティ上の理由から、生成された契約 URL は一時的にしか存続しないため、Adobe Sign サービスから新しい URL を取得する REST-HTTPS コールを生成します。 |
内部クラス
global class DocumentHistoryEvent
プロパティ(2)
アクセス |
名前 |
---|---|
global |
String eventType |
global |
String participantEmail |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
DocumentHistoryEvent() |
global class DocumentInfo
プロパティ(5)
アクセス |
名前 |
---|---|
global |
Map<string,list> historyByEmail |
global |
Map participantsByEmail |
global |
Map participantsByName |
global |
String senderEmail |
global |
String status |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
DocumentInfo() |
global class ParticipantInfo
プロパティ(5)
アクセス |
名前 |
---|---|
global |
String company |
global |
String email |
global |
String name |
global |
String status |
global |
String title |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
ParticipantInfo() |
global class SendDocumentResult
プロパティ(3)
アクセス |
名前 |
---|---|
global |
String documentKey |
global |
Exception error |
global |
String url |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
SendDocumentResult() |
global class SigningUrl
プロパティ(3)
アクセス |
名前 |
---|---|
global |
String email |
global |
String esignUrl |
global |
String simpleEsignUrl |
コンストラクター(1)
アクセス |
署名 |
---|---|
global |
|
Apex バッチサービス
電子サインの主な契約アクションを一括レベルで公開して、一連の契約に対して操作を実行できるようにします。このクラスは、Salesforce Database.Batchable インターフェイスを実装します。処理できるレコードの数に制限はありません。レコードは 5 件ごとのセットに分割され、各セットが個別のトランザクションとして処理されるので、管理上の制限に従うことができます。
Apex バッチサービスは、次の呼び出しクラスを通じて公開されます。echosign_dev1.EchoSignActionBatch
パラメーター
バッチ操作を初期化するために、以下のパラメーターを指定する必要があります。
指定されたアクションの実行対象となる契約レコード ID の一覧。実行するアクション。これは、サポートされている以下の値のいずれかです。
- Remind
- Send
- Cancel
- Delete
- Update
現在のユーザーのセッション ID。アクションタイプが update の場合にのみ必要です。
送信者のユーザーレコード。一括処理が完了したときに、電子メールでこのユーザーに通知するために使用されます。
使用例
User submitterUser = UserInfo.getUserId();
EchoSignActionBatch batch = new EchoSignActionBatch( agreementIds, 'Remind', UserInfo.getSessionId(), submitterUser); syncProcessId = Database.executeBatch(batch, 5);
契約テンプレート一括作成
SOQL クエリおよび契約テンプレートレコード ID を受け取ります。クエリの実行によってマスターオブジェクトレコードのセットが取得され、その後、指定された契約テンプレートに対して各レコードが処理されて、契約レコードが生成されます。このクラスは、Salesforce Database.Batchable インターフェイスを実装します。処理できるレコードの数に制限はありません。レコードは 5 件ごとのセットに分割され、各セットが個別のトランザクションとして処理されるので、管理上の制限に従うことができます。
SOQL クエリから返されるレコードタイプは、指定された契約テンプレートのマスターオブジェクトタイプと一致する必要があります。レコードごとに契約テンプレートサービスが呼び出されます。
Apex バッチサービスは、次の呼び出しクラスを通じて公開されます。
echosign_dev1.AgreementTemplateBatch
パラメーター
バッチ操作を初期化するために、以下のパラメーターを指定する必要があります。
実行する SOQL クエリには、選択したフィールドとしてレコード ID が含まれている必要があります。その他のフィールドはすべて省略可能です。
契約テンプレートレコード ID。マスターレコード ID と組み合わせて契約の読み込みに使用されます。
使用例
String agreementTemplateId = [SELECT Id from echosign_dev1__Agreement_Template__c where Name = 'Default Template']; String soqlQuery = 'SELECT Id from Contact where Account.IsActive = true';
AgreementTemplateBatch batch = new AgreementTemplateBatch(soqlQuery, agreementTemplateId); syncProcessId = Database.executeBatch(batch, 5);
契約テンプレートサービスバッチ
マスターオブジェクトレコード ID の一覧とマスターオブジェクトタイプを受け取ります。その後、クエリが実行され、指定された契約テンプレートに対してそれぞれが処理されて、契約レコードが生成されます。このクラスは、Salesforce Database.Batchable インターフェイスを実装します。処理できるレコードの数に制限はありません。レコードは 5 件ごとのセットに分割され、各セットが個別のトランザクションとして処理されるので、管理上の制限に従うことができます。
指定されたマスターオブジェクトタイプは、指定された契約テンプレートのマスターオブジェクトタイプと一致する必要があります。レコードごとに契約テンプレートサービスが呼び出されます。
Apex バッチサービスは、次の呼び出しクラスを通じて公開されます。
echosign_dev1.AgreementTemplateServiceBatch
パラメーター
バッチ操作を初期化するために、以下のパラメーターを指定する必要があります。
- マスターレコード ID の一覧。
- 契約テンプレートレコード ID。マスターレコードと組み合わせて契約の読み込みに使用されます。
- マスターレコードのクエリに使用するマスターオブジェクト名。
使用例
String agreementTemplateId = [SELECT Id from echosign_dev1__Agreement_Template__c where Name = 'Default Template'];
AgreementTemplateBatch batch = new AgreementTemplateServiceBatch(new List<Id>{'01p50000000HoMB'}, '', agreementTemplateId, 'Contact');
syncProcessId = Database.executeBatch(batch, 5);
REST サービス
契約テンプレートサービス
契約テンプレートサービスは、マネージドパッケージによって Salesforce REST Web サービスとして公開されます。そのため、Salesforce 組織外の外部システムでも、既存の契約テンプレートに基づいて契約を読み込むことができます。Salesforce 内からカスタム REST Apex サービスに対してアクセスおよび呼び出しをおこなう方法について詳しくは、Apex REST を使用した REST API の作成を参照してください。呼び出しの際は、認証と承認のために有効なセッション ID を指定する必要があります。
Web サービスは、次の URL で公開されます。
https://<インスタンス名>.salesforce.com/services/apexrest/echosign_dev1/template/load/<テンプレート ID>?masterId=<マスター ID>&varName1=varValue1&varName2=varValue2
- インスタンス名は、使用する組織インスタンスによって異なります。
- https://_<instance_name>_.salesforce.com/services/apexrest/echosign_dev1/template/load/<template_id> は、バージョン 20.0 以降のパッケージ用の POST HTTP メソッドです。
- 20 よりも前のバージョンでは、GET メソッドを使用します。
テンプレート ID
URL の最後の部分は、現在の Salesforce 組織で契約の読み込みに使用される契約テンプレートレコードの ID です。URL のこの部分は省略可能です。省略すると、デフォルトとマークされている契約テンプレートが読み込まれます。テンプレート ID を省略し、デフォルトの契約テンプレート ID が存在しない場合は、エラーが返されます。
テンプレート ID には、15 文字または 18 文字の形式を使用できます。
マスター ID
masterId パラメーターには、特定の契約テンプレートから契約を読み込むために使用するマスターレコードを指定します。このパラメーターは省略可能ですが、契約テンプレートでマスターオブジェクトタイプを指定し、テンプレート内でそのマスターオブジェクトを参照している場合は、指定する必要があります。
マスター ID には、15 文字または 18 文字の形式を使用できます。
実行時変数
実行時変数として任意の追加パラメーターを名前と値のペアで指定すると、契約テンプレートで指定されている実行時変数への入力に使用されます。
結果
REST Web サービスから、以下のフィールドを含む LoadResult オブジェクトが返されます。
- agreementId:契約の読み込み操作が成功した場合、新しく作成された契約レコードの ID が含まれます。
- error:契約の読み込み中にエラーが発生した場合は、詳細なエラーメッセージが含まれます。
バックグラウンドサービス
バックグラウンドサービス機能を使用すると、パッケージのコンシューマーは「バックグラウンドアクション」(echosign_dev1 Background_Actions c)フィールドを対応する値に更新することによって、契約オブジェクトに対して様々なアクションを呼び出すことができます。フィールドが空白値または何らかの値から以下の値のいずれかに変更されると、電子サインマネージドパッケージの一部であるトリガーからアクションが実行されます。
- Remind
- Send
- Cancel
- Delete
- Update
すべてのアクションは非同期機能モードで実行されるため、ステータスは契約の「エラー」フィールドに格納されます。
後方互換性の変更
- 契約書ステータスは、文書および受信者が更新された後に更新されるようになりました。
- V21 より前は、ステータスが先に設定されていました。
- 署名済み契約書オブジェクト(画像 URL を格納)はまったく挿入されなくなります。
- V21 より前は、他のすべての更新が完了した後で挿入されていました。
- 引き出し線の要求または応答の最大サイズは、Salesforce ガバナー制限により、非同期 Apex に対して 12 MB に制限されます(https://developer.salesforce.com/docs/atlas.en-us.210.0.apexcode.meta/apexcode/apex_gov_limits.htm)。
- 12 MB より大きい文書は、上記の制限により、Sign から取得できません。
- 契約書イベントの説明は変更されました。Sign API によって返された説明と監査レポートが一致するようになります。
- 更新プロセスは、Salesforce 内のネイティブ Apex バッチプロセス(非同期プロセス)として実行されるようになります。
- 更新される前に、Salesforce の外部から API 呼び出しを使用
- Salesforce は、既に実行している非同期プロセスからの別の非同期プロセスの呼び出しを制限しているので、非同期プロセスを開始するこれらのステータス更新のトリガーは機能しない
- V21 より前は、契約書属性の更新は個別の更新呼び出しに分割されていましたが、現在は、契約書オブジェクトは 1 つのトランザクションですべて更新されます。
- V21 より前は、失敗した契約書は、Salesforce 内から手動更新をおこなうことでのみ再試行できました。
- 現在は、Sign は指定した回数だけ自動的に失敗したイベントの再試行に戻るので、更新の信頼性がより高くなります。
- 手動更新は、関連するオブジェクトを含む契約書のすべての側面を更新します。
- 契約書のプッシュは、通常の更新と同じように、非同期モードで実行されるようになり、追加の属性が更新されるようになりました。
- 契約書の様々な側面のアップデートを有効/無効化するための新しい設定が導入されました。
- 署名済み PDF を Salesforce に保存した場合、PDF ファイル名の末尾に記述子(-signed または -approved)が追加されなくなります。