使用DocuSign Apex Toolkit实现签署者文档可见性控制
使用DocuSign Apex Toolkit实现签署者文档可见性控制
要实现指定签署者仅可见部分文档的需求,需要完成两个核心配置:开启信封的签署者可见性强制功能,以及为每个文档指定可查看的签署者列表。以下是基于你提供的代码修改后的完整实现:
public static EnvelopeSendResponse sendEnvelope(final Id mySourceId) { EnvelopeSendResponse response; try { // 获取签署者1的联系人详情 Contact myCustomer = [SELECT Id, Name, Email FROM Contact WHERE Id =:mySourceId]; // 获取签署者2的联系人详情(需替换为实际业务逻辑的数据源) Contact signer2Contact = [SELECT Id, Name, Email FROM Contact WHERE Id = '替换为签署者2的ContactID']; // 创建空信封 dfsle.Envelope myEnvelope = dfsle.EnvelopeService.getEmptyEnvelope(new dfsle.Entity(mySourceId)); // 创建签署者1 dfsle.Recipient myRecipient = dfsle.Recipient.fromSource( myCustomer.Name, myCustomer.Email, null, 'Signer 1', new dfsle.Entity(mySourceId) ); // 创建签署者2 dfsle.Recipient myRecipient2 = dfsle.Recipient.fromSource( signer2Contact.Name, signer2Contact.Email, null, 'Signer 2', new dfsle.Entity(signer2Contact.Id) ); // 将两个签署者添加到信封 myEnvelope = myEnvelope.withRecipients(new List<dfsle.Recipient> { myRecipient, myRecipient2 }); // -------------------------- // 创建文档并指定可见签署者 // -------------------------- // 文档1-3:仅签署者1可见 dfsle.UUID myTemplateId1 = dfsle.UUID.parse('bf7ca600-XXXX-XXXX-XXXX-06e7f3b9e8ce'); dfsle.Document myDocument1 = dfsle.Document.fromTemplate(myTemplateId1, 'myTemplate1') .withRecipientIds(new List<String> { myRecipient.id }); dfsle.UUID myTemplateId2 = dfsle.UUID.parse('bf7ca600-XXXX-XXXX-XXXX-XXXXXXX'); dfsle.Document myDocument2 = dfsle.Document.fromTemplate(myTemplateId2, 'myTemplate2') .withRecipientIds(new List<String> { myRecipient.id }); dfsle.UUID myTemplateId3 = dfsle.UUID.parse('bf7ca600-XXXX-XXXX-XXXX-XXXXXXX'); dfsle.Document myDocument3 = dfsle.Document.fromTemplate(myTemplateId3, 'myTemplate3') .withRecipientIds(new List<String> { myRecipient.id }); // 文档4-5:仅签署者2可见 dfsle.UUID myTemplateId4 = dfsle.UUID.parse('bf7ca600-XXXX-XXXX-XXXX-XXXXXXX'); dfsle.Document myDocument4 = dfsle.Document.fromTemplate(myTemplateId4, 'myTemplate4') .withRecipientIds(new List<String> { myRecipient2.id }); dfsle.UUID myTemplateId5 = dfsle.UUID.parse('bf7ca600-XXXX-XXXX-XXXX-XXXXXXX'); dfsle.Document myDocument5 = dfsle.Document.fromTemplate(myTemplateId5, 'myTemplate5') .withRecipientIds(new List<String> { myRecipient2.id }); // 将文档添加到信封 myEnvelope = myEnvelope.withDocuments(new List<dfsle.Document> { myDocument1, myDocument2, myDocument3, myDocument4, myDocument5 }); // -------------------------- // 开启签署者可见性强制 // -------------------------- dfsle.EnvelopeSettings envelopeSettings = new dfsle.EnvelopeSettings(); envelopeSettings.enforceSignerVisibility = true; myEnvelope = myEnvelope.withSettings(envelopeSettings); // 发送信封 myEnvelope = dfsle.EnvelopeService.sendEnvelope(myEnvelope, true); response = new EnvelopeSendResponse('Envelope sent successfully', true); } catch(Exception ex) { response = new EnvelopeSendResponse(ex.getMessage(), false); } return response; }
关键配置说明
- 添加第二个签署者:示例中通过查询Contact对象获取签署者2信息,需替换为你实际业务中的数据源(比如参数传入、关联对象查询等)。
- 文档可见性指定:每个文档通过
withRecipientIds方法传入允许查看的签署者ID列表,实现文档的定向可见控制。 - 开启强制可见性:创建
dfsle.EnvelopeSettings实例并设置enforceSignerVisibility = true,这是确保签署者只能看到指定文档的核心开关,必须配置才能生效。
内容的提问来源于stack exchange,提问作者PuppySaturation
相关产品推荐
相关产品推荐

