このドキュメントは Salesforce 開発者を対象としており、Salesforce パッケージを Adobe Sign と統合するために必要なオブジェクトおよびパラメーターについて説明します。

警告:

Salesforce 用 Adobe 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 では、更新の順序が変更されました。以下に、契約書およびその関連するオブジェクトが更新される順序を示します。

  1. 添付ファイル 
  2. 受信者 
  3. 契約書(ステータスおよび他の属性)
  4. 契約イベント 
  5. Chatter フィード

Apex サービス

Apex メソッドを使用

v21.x 以降、すべての非同期プロセス(自動更新とデータマッピングを含む)が future メソッドから queueable に切り替えられました。これは、Salesforce が推奨する新しいアプローチです。

この変更により、自動更新やデータマッピングプロセスの一部として Salesforce キューにジョブを追加するサブスクライバー組織内のカスタマイズは、エラー「System.LimitException:キューに追加された queueable ジョブが多すぎます:2」で失敗します。

これは、queueable プロセスで追加できる子の queueable ジョブは 1 つだけであり、それは Adobe Sign によりすでに取得されているからです(この「Queueable Apex の制限事項」セクションを参照してください)。

ジョブチェーンを作成する場合、System.enqueueJob で実行するジョブは 1 つしか追加できません。つまり、各親の queueable ジョブには子ジョブが 1 つしか存在できません。同じ queueable ジョブからの複数の子ジョブ開始はサポートされていません

このエラーが発生すると、契約のステータスは変更されず、データマッピングは正しく実行されません。 

このエラーを解決するには、原因となっているトリガー、プロセスビルダー、またはワークフローを探して非アクティブ化するか、同期コールを使用するように切り替えたり、スケジュール(1 時間後など)したりします。

v21.x では、Apex メソッドは Future メソッド Apex から Queueable Apex に変更されました。

統合を活用して Future メソッド Apex を使用しているお客様は、Queueable Apex を使用するようにコードを更新して、サンドボックス環境で徹底的にテストしてから、v21.x 以降をライブ環境に導入する必要があります。


契約テンプレートサービス

契約テンプレートサービスは、マネージドパッケージによってグローバル Apex サービスとして公開されます。そのため、マネージドパッケージ以外の Apex コードでも、既存の契約テンプレートに基づいて契約を読み込むことができます。クラスおよび公開されているすべてのメソッドは、このようなアクセスを可能にするために global としてマークされています。

Apex サービスは、次の呼び出しクラスを通じて公開されます。echosign_dev1.AgreementTemplateService

注意:

 eSign ライブラリテンプレートを使用した契約テンプレートの読み込みは、現在はサポートされていません。文書テンプレートを Salesforce 文書ライブラリに移動してください。

 

メソッド

global

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 を使用して、指定された契約テンプレートに設定されているマスターオブジェクトタイプとタイプが一致する契約を読み込みます。また、指定された実行時変数を名前と値のペアとして渡します。

 

 

実行時変数

echosign_dev1.AgreementTemplateVariable グローバルクラスには、次の 2 つのグローバルフィールドがあります。

  • name:変数名。契約テンプレート内で設定されている実行時変数の名前と一致する必要があります。
  • value:テンプレートの読み込み時に使用されるこの変数の値。値は、変数が使用される場所によって異なります。例えば、受信者の場合は、取引先責任者、リード、ユーザーのレコード ID または電子メールである必要があります。文書変数の場合は、添付ファイルのレコード ID である必要があります。

結果

すべてのメソッドは、新たに作成された契約レコードの ID を返すか、読み込み操作中に問題が発生した場合は詳細なエラーメッセージと共に例外をスローします。

API サービス

Adobe eSign API テンプレートサービスは、マネージドパッケージによってグローバル Apex サービスとして公開されます。そのため、マネージドパッケージ以外の Apex コードでも、ラッパーを通じて一連の Adobe eSign API を呼び出すことができます。ラッパーを使用すると、リクエストとレスポンスによるデータモデルをコンシューマーが作成する必要がないため、API 呼び出しが大幅に簡素化されます。また、Salesforce データから eSign データモデルへの変換をコンシューマーが処理する必要もありません。複雑な処理のほとんどは、コンシューマーにとっては抽象化されます。例えば、契約をコンシューマーに送信するには、契約レコード 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 echsign_dev1.EchoSignApiService.DocumentInfo getDocumentInfo(Id agreementId)

指定された契約 ID の詳細情報を取得します。

global

static List getSigningUrls(Id agreementId)

指定された契約 ID のすべての署名 URL を取得します。

global

static void removeDocument(Id agreementId)

指定された契約 ID の契約をキャンセルし、Salesforce の契約レコードを削除します(契約は、Adobe eSign アカウントからは削除されません)。

global

static void replaceSigner(Id replacementRecipientId)

指定された署名者を置き換えます。

global

static void replaceSigner(Id replacementRecipientId, String message)

指定された署名者を指定されたメッセージに置き換えます。

global

static echsign_dev1.EchoSignApiService.SendD ocumentResult sendDocument(Id agreementId)

指定された契約 ID の契約を送信し、文書キーおよび URL と共に結果を返します。

global

static void sendReminder(Id agreementId)

指定された契約 ID の現在の署名者にリマインダーを送信します。

global static void updateAgreement(Id agreementId)  指定した agreementId で契約書を更新します。

 

内部クラス

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 バッチサービス

eSign の主な契約アクションを一括レベルで公開して、一連の契約に対して操作を実行できるようにします。このクラスは、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

注意:

インスタンス名は、使用する組織インスタンスによって異なります。

 

テンプレート 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)フィールドを対応する値に更新することによって、契約オブジェクトに対して様々なアクションを呼び出すことができます。フィールドが空白値または何らかの値から以下の値のいずれかに変更されると、eSign マネージドパッケージの一部であるトリガーからアクションが実行されます。

  • 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)。
    • 12M B より大きい文書は、上記の制限により、Sign から取得できません。
  • 契約書イベントの説明は変更されました。Sign API によって返された説明と監査レポートが一致するようになります。
  • 更新プロセスは、Salesforce 内のネイティブ Apex バッチプロセス(非同期プロセス)として実行されるようになります。
    • 更新される前に、Salesforce の外部から API 呼び出しを使用
    • Salesforce は、既に実行している非同期プロセスからの別の非同期プロセスの呼び出しを制限しているので、非同期プロセスを開始するこれらのステータス更新のトリガーは機能しない
  • V21 より前は、契約書属性の更新は個別の更新呼び出しに分割されていましたが、現在は、契約書オブジェクトは 1 つのトランザクションですべて更新されます。
  • V21 より前は、失敗した契約書は、Salesforce 内から手動更新をおこなうことでのみ再試行できました。
    • 現在は、Sign は指定した回数だけ自動的に失敗したイベントの再試行に戻るので、更新の信頼性がより高くなります。
  • 手動更新は、関連するオブジェクトを含む契約書のすべての側面を更新します。
  • 契約書のプッシュは、通常の更新と同じように、非同期モードで実行されるようになり、追加の属性が更新されるようになりました。
  • 契約書の様々な側面のアップデートを有効/無効化するための新しい設定が導入されました。
  • 署名済み PDF を Salesforce に保存した場合、PDF ファイル名の末尾に記述子(-signed または -approved)が追加されなくなります。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー