You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 14:05:07